跨帐户角色授予S3存储桶访问权限-权限被拒绝

马克·弗朗西斯

我有两个帐户,帐户ACCOUNTAAAA和ACCOUNTBBBB。帐户ACCOUNTAAAA中存在一个存储桶(BUCKETAAAA),在ACCOUNTBBBB中具有角色(ROLEBBBB)的实例需要能够从中读取。

我向存储桶添加了以下权限:

{
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::ACCOUNTBBBB:role/ROLEBBBB"
        },
        "Action": [
            "s3:*"
        ],
        "Resource": "arn:aws:s3:::BUCKETAAAA/*"
    }

我具有以下角色的以下权限ACOUNTBBBB

        "Sid": "",
        "Effect": "Allow",
        "Action": [
            "s3:*"
        ],
        "Resource": [
            "arn:aws:s3:::BUCKETAAAA/",
            "arn:aws:s3:::BUCKETAAAA/*"
        ]
    }

我的假设是,我应该能够aws s3 ls s3://BUCKETAAAA在具有IAM角色的EC2实例上运行,并了解BUCKETAAAA的竞争者。当我尝试此操作时,我得到了An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

我在这里想念什么?

约翰·罗滕斯坦

为了重现您的情况,我做了以下工作:

  • 在账户B创建了角色B,并将EC2作为受信任实体(“允许EC2实例代表您调用AWS服务”)和一项授予对Bucket-A的访问权限的策略
  • 在帐户A创建了存储桶A
  • 向存储桶A添加了存储桶策略,该策略授予对角色B的访问权限
  • 角色B分配给Amazon EC2实例

针对“ A型桶”的Betuck”政策是:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<account>:role/role-b"
            },
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-a",
                "arn:aws:s3:::bucket-a/*"
            ]
        }
    ]
}

角色B的权限为:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BucketA",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucket-a",
                "arn:aws:s3:::bucket-a/*"
            ]
        }
    ]
}

我能够成功使用aws s3 ls s3://bucket-a并能够将文件复制到Bucket-A。

我看到的主要区别是您的存储桶策略仅授予以下权限:

"Resource": "arn:aws:s3:::BUCKETAAAA/*"

这意味着“斗-A内的任何”但包括斗A本身。该命令aws s3 ls s3://BUCKETAAAA存储桶上操作,该角色没有权限。

因此,您还应该为存储桶本身添加权限:

        "Resource": [
            "arn:aws:s3:::BUCKETAAAA",
            "arn:aws:s3:::BUCKETAAAA/*"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用简单的s3存储桶策略授予对加密存储桶的跨帐户访问权限?

S3:如何授予对多个存储桶的访问权限?

仅授予特定用户对S3存储桶的访问权限,无公共访问权限

如何使用IAM策略AWS仅向S3存储桶的根帐户用户授予访问权限?

AWS:无法通过s3存储桶策略授予s3访问权限

权限被拒绝

S3存储桶AWS您无法授予公共访问权限,因为已为此帐户启用了阻止公共访问设置

AWS:S3 存储桶 AWS 您无法授予公共访问权限,因为此帐户已启用阻止公共访问设置

授予访问权限以读取Amazon S3存储桶中的子目录

授予对 S3 存储桶中所有内容的访问权限

我应该授予什么 aws 权限来访问其他 s3 存储桶

如何授予AWS用户访问s3存储桶托管的网站的权限?

您希望何时授予对 s3 存储桶的公共读取访问权限

尝试授予对 S3 存储桶的云端访问权限,但得到“策略无效操作”

基于S3存储桶的AWS Cloudfront分发,带有跨帐户对象的访问被拒绝

根据角色名称授予对S3资源的访问权限

向没有AWS账户的用户授予对AWS S3存储桶/文件夹的访问权限

rails s - 权限被拒绝

Android Runtime权限(权限被拒绝)

权限被拒绝-缺少INTERNET权限?

为什么即使我在存储桶策略中授予用户权限,用户也无法访问我们的 S3 存储桶?

S3fs无法访问存储桶权限被拒绝

AWS 存储桶策略 - 权限被拒绝

Spark Scala S3 存储:权限被拒绝

如何以编程方式授予s3存储桶调用lambda的权限?

如何授予Lambda将文件上传到terraform中的s3存储桶的权限?

Ansible Django权限被拒绝

postgresql:权限被拒绝的关系

权限被Vagrant拒绝