跨多个AWS账户一个IAM角色(One IAM Role across multiple AWS a

2019-10-22 22:39发布

出于安全原因,我们有一个预督促和督促AWS账户。 现在我们开始使用IAM角色,通过Django的存储/博托S3访问JS / CSS文件。

虽然这是在每个帐户基础上正常工作,现在需要已经上升,其中QA实例需要在督促帐户访问一个S3桶。

有没有一种方法,以具有可授予访问预督促和生产线S3桶一个IAM角色? 正如我在写这似乎是不可能的,但它从来没有心要问!

Answer 1:

下面是关于这个AWS文档: http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html

从本质上讲,你必须使用你的水桶的IAM政策的主要模块从其他帐户权限委派到一个帐户,然后设置您的IAM用户在第二个帐户是正常的。

例如桶政策: { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<Account-ID>:root" }, "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<bucket-name>" ] } ] }

这非常适用于只读访问,但可以用写访问的问题。 首先,该账户写的对象仍然是对象的所有者。 当与写入权限处理,你通常要确保该帐户拥有斗仍然能够访问由其他帐户,需要的对象,与一个特定的头被写入写对象的能力: x-amz-grant-full-control

你可以设置你的水桶政策使铲斗不会接受不提供这个头跨帐户对象。 还有的,在此页面底部的例子: http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html (“授予跨帐户权限上传物件下,同时保证值区拥有者具有完全控制“)

这使得使用条件的deny语句在桶政策,像这样: { "Sid":"112", "Effect":"Deny", "Principal":{"AWS":"1111111111" }, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::examplebucket/*", "Condition": { "StringNotEquals": {"s3:x-amz-grant-full-control":["emailAddress=xyz@amazon.com"]} } }

我一般避免交叉帐户对象写道,自己...他们是相当繁琐的设置。



文章来源: One IAM Role across multiple AWS accounts