2017-04-26 69 views
0

我需要创建一个跨账户角色来从我拥有的另一个aws账户访问S3存储桶的资源。S3具有角色的跨账户访问

请帮助我在不使用Access或秘密密钥的情况下使用跨账户IAM角色实现此功能。

回答

1

比方说,你有:

  • 角色定位在帐户A
  • 实例A在A帐户是在帐户B与角色定位
  • 桶B相关联

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

Request Information That You Can Use for Policy Variables文档有表示包含的aws:userid各种值的表:

对于分配给Amazon EC2实例作用,它被设置为role-id:ec2-instance-id

因此,可以使用角色ID与Amazon EC2实例关联的角色允许访问或实例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": [ 
         "AROAIIPEUJOUGITIU5BB6*" 
        ] 
       } 
      } 
     } 
    ] 
} 

实例ID将保留在实例中,但是如果启动新实例(即使来自相同的亚马逊机器映像(AMI)),也会分配一个新实例。

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

(这个回答依据Granting access to S3 resources based on role name。)

+0

谢谢约翰。有效。 – JVA

相关问题