使用Cloudformation可以将Authenticated Users组设置为在创建S3 Bucket时放置/删除Access Control吗?
Access Control Lists (ACL)的初始和有限的Amazon S3是不可能的,其中只有预定义的Canned ACLs可用于AWS resource types支持的AWS CloudFormation,参见AWS::S3::Bucket资源的属性AccessControl:
一个固定ACL,用于授予存储区的预定义权限。默认为私人。有关预装ACL的更多信息,请参阅Canned ACLs in the Amazon S3 documentation。
AccessControl的有效值:AuthenticatedRead | AwsExecRead | BucketOwnerRead | BucketOwnerFullControl | LogDeliveryWrite |私人| PublicRead | PublicReadWrite
假设您不希望事实上给所有S3用户提供放置/删除访问权限(Authenticated Users组实际上意味着让不知情的S3开发人员感到惊讶),但仅限于您自己的用户(或众所周知的一组用户) )大多数用例照常使用帐户,您可以使用S3 Bucket Policies来实现目标。
Example Cases for Amazon S3 Bucket Policies提供了一个示例策略,用于向具有附加限制的多个帐户授予权限,该权限授予PutObject和PutObjectAcl权限到多个帐户,并要求包含公共读取的固定acl - 将其剥离到请求的集合并将其转换为CloudFormation模板片段会产生以下约(您当然需要将校长调整到您的帐户):
"Resources" : {
"S3Bucket" : {
"Type" : "AWS::S3::Bucket"
},
"BucketPolicy" : {
"Type" : "AWS::S3::BucketPolicy",
"Properties" : {
"PolicyDocument": {
"Id" : "Grant access to all account users",
"Statement" : [{
"Sid" : "PutObjectAccess",
"Action" : ["s3:PutObject"],
"Effect" : "Allow",
"Resource" : { "Fn::Join" : ["", ["arn:aws:s3:::", {"Ref" : "S3Bucket"} ]]},
"Principal" : { "AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666:root"] }
}]
},
"Bucket" : {"Ref" : "S3Bucket"}
}
},
},