用于跨账户访问特定 AWS 账户中的 S3 存储桶的 IAM 角色策略

时间:2021-01-21 02:01:05

标签: amazon-web-services amazon-s3 amazon-iam

允许从 AccountA 中的 IAM 角色访问给定的 S3 存储桶,前提是它们存在于 AWS AccountB 中(使用帐号)。

这是我在 AccountA 中的角色政策,目前具有以下权限。如何将其更新为仅访问 AccountB 中的 S3 存储桶。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*",
                "s3:Put*"
            ],
            "Resource": [
                "arn:aws:s3:::kul-my-bucket/my-dir/*"
            ]
        },
        {
            "Sid": "ListBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::kul-my-bucket"
            ]
        }
    ]
}

想知道是否可行,或者我应该尝试不同的方法吗?

通过在政策中提供条件,我的案例是否可能与此类似:

"Condition": {
                "StringLike": {
                    "aws:accountId": [
                        "111111111111"
                    ]
                }
            }

我需要它,因为在 AccountB 中的 S3 存储桶上,它允许 root 访问 AccountA。因此,我想对 AccountA 中的角色策略进行限制。

1 个答案:

答案 0 :(得分:2)

我认为无法根据 AWS 帐号授予/拒绝对 Amazon S3 存储桶的访问权限。这是因为 Amazon S3 ARN 不包括账户 ID,而是使用唯一的存储桶名称。

您需要按名称专门为每个存储桶授予允许访问权限。

我之前见过这种情况,要求授予 S3 权限以仅在其他账户中访问存储桶,而不是拥有 IAM 用户的账户。如果不授予访问“同一帐户”S3 存储桶的权限,我们无法确定执行此操作的方法。