amazon-web-services - S3 具有角色的跨账户访问

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

我需要创建一个跨账户角色,以便从我拥有的另一个 AWS 账户访问 S3 存储桶的资源。

请帮助我使用跨账户 IAM 角色来实现此操作,而不使用访问权限或 key 。

最佳答案

假设您有:

  • 帐户 A 中的角色 A
  • 账户 A 中与角色 A 关联的实例 A
  • 账户 B 中的存储桶 B

您希望允许实例 A 上的应用程序访问存储桶 B 的内容。

Request Information That You Can Use for Policy Variables文档有一个表格,显示了 aws:userid 的各种值,包括:

For Role assigned to an Amazon EC2 instance, it is set to role-id:ec2-instance-id

因此,您可以使用与 Amazon EC2 实例关联的角色的角色 ID 来允许访问,或者使用实例 ID

例如,此存储桶策略基于角色 ID:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SID123",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::MYBUCKET",
                "arn:aws:s3:::MYBUCKET/*"
            ],
            "Principal": "*",
            "Condition": {
                "StringLike": {
                    "aws:userid": [
                        "AROAIIPEUJOUGITIU5BB6*"
                    ]
                }
            }
        }
    ]
}

要获取角色 ID,请使用:

aws iam get-role --role-name ROLENAME

此存储桶策略基于实例 ID:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SID123",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::MYBUCKET",
                "arn:aws:s3:::MYBUCKET/*"
            ],
            "Principal": "*",
            "Condition": {
                "StringLike": {
                    "aws:userid": [
                        "*:i-03c9a5f3fae4b630a"
                    ]
                }
            }
        }
    ]
}

实例 ID 将保留在实例中,但如果启动新实例,即使来自同一个 Amazon 系统镜像 (AMI),也会分配一个新实例 ID。

当然,您可能希望将这些权限限制为仅 s3:GetObject 而不是 s3:*

(此答案基于 Granting access to S3 resources based on role name 。)

关于amazon-web-services - S3 具有角色的跨账户访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43643148/

相关文章:

amazon-web-services - AWS IAM,限制一个账户只能查看和访问它自己创建的资源?

ruby-on-rails - 无法连接到 ec2 服务器上的 rds,缺少 mysql 套接字

amazon-web-services - Azure 中是否有与这些 AWS 服务等效的服务?

amazon-web-services - 如何使用 Cloudformation 从 EC2 实例获取辅助 IPv4 地址

amazon-web-services - 我们可以更新 cloudformation 堆栈以将 kinesis 传输流目标配置从 s3 更改为 elasticsearch 吗?

amazon-web-services - S3 生命周期策略删除没有特定标记值的所有对象

c# - 使用 Amazon Web Services 保密 key

ruby-on-rails - 基于 Rails 的 S3 文件管理器

python - 调用Scan操作: User: arn:aws:sts...无权执行: dynamodb:Scan on resource..时如何解决(AccessDeniedException)?

amazon-web-services - 通过 CloudFormation 的 IAM 角色原则错误