授予另一个 AWS 账户中的角色对我的存储桶中的所有对象的访问权限

授予另一个 AWS 账户中的角色对我的存储桶中的所有对象的访问权限

因此,我想授予帐户 A 中存在的角色对帐户 B 拥有的存储桶中的项目的获取对象权限。

我读AWS 文档的示例策略并创建了如下存储桶策略:

{
    "Version": "2012-10-17",
    "Id": "foo2",
    "Statement": [
        {
            "Sid": "Stmt199999999999",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789:role/asset_download_role"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}

对我来说,用英语来说就是:“授予帐户 123456789 的角色 asset_download_role 对存储桶 my-bucket-name 内任何和所有对象的 GetObject 权限”

存储桶中的测试对象 foo.jpg 除了标准“对象所有者的访问权限”之外,没有设置其他 acl 或权限

现在,当我扮演这个角色,并试图获得对象

aws s3api get-object  --profile download_asset --region eu-west-2 --bucket my-bucket-name --key foo.jpg file.jpg

(或者使用 boto3,或者使用这些凭证对 URL 进行签名并检索该 URL)

我收到“调用 GetObject 操作时发生错误(AccessDenied):访问被拒绝”

将配置文件更改为存储桶所有者用户凭证,我就可以下载该文件。

我究竟做错了什么?

[请注意,虽然我在此测试设置中可以访问帐户 A 和帐户 B,但在现实生活中,帐户 B 将属于第三方,我希望向其提供一项工作策略,他们可以使用该策略来打开他们需要的内容]

答案1

解决方案是,当向第三方帐户拥有的角色授予权限时,该角色需要添加一个策略,以授予对存储桶的访问权限 - 需要在两端定义和匹配权限

相关内容