需要帮助拒绝没有特定标签的 S3 存储桶创建

Need help to deny S3 bucket creation without specific Tags

我想创建一个 IAM 策略,只允许“测试”用户在创建时创建带有“名称”和“存储桶”标签的 S3 存储桶。但是做不到。

我试过了,但即使在指定条件下,用户也无法创建 Bucket。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "s3:CreateBucket",
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "aws:RequestTag/Name": "Bucket"
                }
            }
        }
    ]
}

提前致谢。

Actions, resources, and condition keys for Amazon S3 - Service Authorization Reference 文档页面列出了可应用于 CreateBucket 命令的条件。

标签包含在此列表中。因此,无法根据命令指定的标签来限制 CreateBucket 命令。

正如 John Rotenstein 所指出的,这不可能(至少)明确否认这一点,但人们为此做了一些选择,因为这种类型的标记政策在许多组织中很常见。

合规报告

您可以使用 AWS Config service to detect S3 bucket resources that are out-of-compliance. You can define your tagging policy for S3 Buckets with a Config rule.

这不会阻止用户创建存储桶,但会提供一种方式来审核您的帐户并主动通知您。

自动修复

如果您希望自动删除或标记存储桶,您可以创建一个 triggered by the CloudTrail API 用于创建存储桶的 lambda 函数。

可以实施 Lambda 来检查标签,如果存储桶不合规,则尝试删除存储桶或通过您定义的其他进程将其标记为删除。

@pop 我相信您不能使用 IAM 策略或 SCP 来执行此操作,因为根据设计,S3 创建标签 API 配置为作为对 CreateBucket API 的后续调用而触发。因此,即使您添加了此标签,您的 IAM 策略也会阻止创建 S3 Bucket 本身。与其他 AWS 服务相比,这是 S3 服务的设计。

我认为唯一的选择是 post-部署操作,即选择一个事件驱动模型,在该模型中您使用 S3 事件根据以下条件采取操作(删除存储桶/添加访问块存储桶策略等)存储桶是如何创建的。