【问题标题】:Boto3: aws credentials with limited permissionsBoto3:具有有限权限的 aws 凭证
【发布时间】:2019-12-29 06:35:56
【问题描述】:

我预置了一些 AWS 密钥。这些密钥使我可以访问 s3 存储桶中的某些目录。我想使用boto3 与暴露给我的目录进行交互,但是我似乎根本无法对存储桶执行任何操作,因为我无权访问整个存储桶。

这适用于我的终端:

aws s3 ls s3://the_bucket/and/this/specific/path/

但如果我这样做:

aws s3 ls s3://the_bucket/

我明白了:

调用 ListObjects 时发生错误 (AccessDenied) 操作:拒绝访问

当我尝试通过boto3 访问目录时也会发生这种情况。

session = boto3.Session(profile_name=my_creds)
client=session.client('s3')
list_of_objects = client.list_objects(Bucket='the_bucket', Prefix='and/this/specific/path', Delimiter='/')

我是否需要请求访问整个存储桶才能使boto3 可用?

【问题讨论】:

  • 您有权访问 IAM 政策吗?您无权列出存储桶中的对象,但您可能有权通过密钥获取某些对象(列出和获取是不同的权限)。不过,如果没有看到该政策,我不能肯定地说。
  • 此外,您不能在 ARN 上提供 ListObjects,而不仅仅是存储桶。它可以通过条件进一步限制,但您允许桶上的 list 和带有前缀或键的 arn 上的 get 对象。
  • 请在您的问题中附上 IAM 政策的副本。

标签: python amazon-web-services amazon-s3 boto boto3


【解决方案1】:

您需要设置此存储桶策略:

{
  "Sid": "<SID>",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::<account>:user/<user_name>"
  },
  "Action": [
    "s3:GetBucketLocation",
    "s3:ListBucket"
  ],
  "Resource": "arn:aws:s3:::<bucket_name>"
}

For more information about Specifying Permissions in a Policy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2012-12-19
    • 2020-11-08
    • 2020-04-21
    • 2016-12-26
    • 1970-01-01
    相关资源
    最近更新 更多