具有角色的

时间:2017-04-26 19:39:36

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

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

请帮助我使用跨帐户IAM角色实现此功能,而不使用Access或密钥。

1 个答案:

答案 0 :(得分:3)

假设你有:

  • 帐户A中的角色A
  • 帐户A中与角色A相关联的实例A
  • 帐户B中的B桶

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

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

  

对于分配给Amazon EC2实例的角色,它设置为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将保留在实例中,但如果启动了新实例,则会分配一个新实例,即使是来自同一个亚马逊机器映像(AMI)。

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

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