【问题标题】:AWS S3 - Access denied when getting bucket locationAWS S3 - 获取存储桶位置时拒绝访问
【发布时间】:2019-08-07 06:50:57
【问题描述】:

我在账户 A 中有一个名为“my-bucket”的存储桶,我正在尝试从账户 B 确定它的位置。

我有以下存储桶策略

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "1",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::11122233344:root"
        },
        "Action": [
            "s3:GetObject",
            "s3:PutObject"
        ],
        "Resource": "arn:aws:s3:::my-bucket/*"
    },
    {
        "Sid": "2",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::11122233344:root"
        },
        "Action": [
            "s3:GetBucketLocation",
            "s3:ListBucket"
        ],
        "Resource": "arn:aws:s3:::my-bucket"
    }
]}

我还偶然发现了包含相同策略的文档:https://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html

现在使用帐户 B,我可以成功执行命令 aws s3 ls s3://my-bucket,但是使用 aws s3api get-bucket-location --bucket my-bucket 我收到拒绝访问消息。

【问题讨论】:

  • 账户 2 中的 user 需要一个 IAM 用户策略来授予对外部存储桶的此权限。到目前为止,您所做的是允许兑现此类赠款(如果存在)。
  • @Michael-sqlbot,帐户 2 中的用户已被允许对任何资源执行所有 s3 操作。

标签: amazon-web-services amazon-s3


【解决方案1】:

根据文档:https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html

要使用这个实现的操作,你必须是bucket 所有者。

如有疑问,请始终参考 AWS API 文档,它通常会指定给定操作所需的权限。

【讨论】:

  • 我错过的一行.. 但是,当我使用 CLI 并将配置文件设置为帐户 B 时,我可以获得存储桶位置,这似乎很奇怪
  • @petrch 文档不正确。我刚刚修改了一个测试存储桶,将s3:GetBucketLocation 授予"Principal": "*",并且能够匿名获取存储桶位置。
  • @michael-sqlbot 有趣,我无法检查的主要帐号,因为您当然使用了占位符。可能这应该被解释为“备份所有者或承担所有者角色的角色”。这确实有道理。
猜你喜欢
  • 2017-07-04
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 2021-02-21
相关资源
最近更新 更多