【发布时间】:2017-03-03 22:21:00
【问题描述】:
我正在尝试创建一个IAM Policy 来限制对选定 S3 存储桶的访问。有一些默认的S3 Bucket ARNs,必须始终存在,模板操作员可以通过Parameter添加额外的Bucket ARNs列表以授予访问权限。
在我的模板中,BucketARNsParameter 允许操作员指定长度不受限制的 ARN 列表。
BucketARNs:
Type: CommaDelimitedList
Description: 'Add the ARN of S3 Buckets that the Get* and List*
access to. When specifying a Bucket 2 values should be supplied one for the
bucket and for objects within that bucket, for example: arn:aws:s3:::MyContentBucket,arn:aws:s3:::MyContentBucket/* .
This defaults to all buckets.'
Default: arn:aws:s3:::*, arn:aws:s3:::*/*
使用这个Parameter的策略文档看起来像
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:Get*
- s3:List*
Resource:
!Ref BucketARNs
我想做的是确保,例如
arn:aws:s3:::MyMustHaveBucket,
arn:aws:s3:::MyMustHaveBucket/*
ARN总是出现在BucketARNs 的列表中。 Parameter 中的 Default 可以由操作员删除 - 唯一的解决方案是将它们添加为 Default 值并在 Parameter 中添加信息 Description 警告用户不要删除所需的 ARN?像这样很容易被破坏。
有没有人知道如何确保我始终有这些可用的?考虑到通过Parameter 指定的 BucketARN 列表是可变的?
理想情况下,我想要一个列表连接函数
【问题讨论】: