
[英]How to create a managed policy in cloudformation that allows lambda access to all s3 containers in an aws environment
[英]Create Policy in Cloudformation Granting Access to s3 Buckets From Separate AWS Account
我已经阅读了“在策略中指定主体”文档: https : //docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html ,并且正在推断那里的一些行为以及其他SO(例如,从s3的getObject时拒绝aws lambda函数访问 )这些问题没有专门处理Cloudformation。
当我尝试创建一个允许外部角色访问本地存储桶的策略时,我仍然为这个错误感到困惑。 来自Cloudformation的错误是: Policy document should not specify a principal.
我有两个AWS账户。 帐户A创建了一个存储桶,我想授予帐户B对它的写入权限。
在帐户A Cloudformation中,我创建了一个策略,该策略授予帐户B角色对该存储桶的访问权限。 来自https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html的指南。 该角色存在于帐户B。
AccountBWriteToS3Policy: Type: 'AWS::IAM::Policy' Properties: PolicyName: AccountBWriteToS3Policy PolicyDocument: Version: 2012-10-17 Statement: - Principal: AWS: 'arn:aws:iam::123456789876:role/AccountBRole' Effect: Allow Action: - 's3:PutObject' - 's3:ListBucket' Resource: !Sub - '${bucketArn}/*' - bucketArn: !GetAtt - AccountABucket - Arn Roles: - AccountARole
但是,cloudformation无法执行,并且回滚并显示错误。Policy Policy document should not specify a principal.
我很沮丧。
谁能解释这个错误?
谁能规定前进的道路?
这似乎是一个简单而普遍的需求,在许多示例中都涉及到。 也许我应该在存储桶声明本身中指定该策略,而不是创建一个帐户范围的策略?
您需要创建一个具有“信任策略”和“原则”的角色,然后创建一个“权限策略”,以允许对S3存储桶进行读/写访问。
这是我Cloudformation中的片段。
Role:
Type: "AWS::IAM::Role"
Properties:
RoleName: !Sub '${RuleName}-Role'
Path: "/"
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal: !Sub 'arn:aws:iam::${AccountID}:user/*'
Action: sts:AssumeRole
RolePolicies:
Type: "AWS::IAM::ManagedPolicy"
Properties:
ManagedPolicyName: !Sub '${RuleName}-RolePolicies'
Roles:
- Ref: "Role"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- s3:Get*
- s3:Put*
- s3:List*
- s3:AbortMultipartUpload
Resource:
- !Ref Bucket
参考: 跨帐户教程
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.