S3 存储桶创建:限制为特定名称模式

ysa*_*lmi 2 amazon-s3 amazon-web-services amazon-iam

有没有办法指定存储桶创建策略,以便具有指定角色的用户只能创建具有指定名称模式的存储桶,而company-dbbackup-*不能创建其他名称模式?

例如,用户将被允许创建名称为company-dbbackup-March2017和 的存储桶company-dbbackup-fullarchive,但不允许创建存储桶test-bucketname-invalid

我现在拥有的:

{
    "Sid": "Stmt1493212897117",
    "Action": [
        "s3:CreateBucket",
        "s3:ListAllMyBuckets"
    ],
    "Effect": "Allow",
    "Resource": "arn:aws:s3:::*"
}
Run Code Online (Sandbox Code Playgroud)

但这允许我创建具有任何名称的存储桶。

ysa*_*lmi 6

事实证明它相对简单(除非我忽略了一些事情)。我只是将权限拆分如下:

{
    "Sid": "RestrictCreationToNamePolicy",
    "Action": [
        "s3:CreateBucket"
    ],
    "Effect": "Allow",
    "Resource": "arn:aws:s3:::company-dbbackup-*"
}

{
    "Sid": "AllowListingOfBuckets",
    "Action": [
        "s3:ListAllMyBuckets"
    ],
    "Effect": "Allow",
    "Resource": "arn:aws:s3:::*"
}
Run Code Online (Sandbox Code Playgroud)

我还没有找到一种方法来限制仅列出具有命名策略的存储桶。如果我将第二条语句限制为资源arn:aws:s3:::company-dbbackup-*,则在尝试列出存储桶时会收到拒绝访问的消息。

编辑:显然限制列表是不可能的,这里有一个很好的 Stack Overflow 答案以及可能的解决方法。这还有另一个很好的讨论