【问题标题】:Need help to deny S3 bucket creation without specific Tags需要帮助以拒绝在没有特定标签的情况下创建 S3 存储桶
【发布时间】:2022-01-04 01:18:02
【问题描述】:

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

我已经尝试过了,但是即使在指定的条件下,用户也无法创建存储桶。

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

提前致谢。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-iam


    【解决方案1】:

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

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

    【讨论】:

    • 好的,但是我怎样才能确保将特定资源标记为某个值。这可能吗?
    【解决方案2】:

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

    在我看来,唯一的选择是部署后操作,即选择一个事件驱动模型,您可以在其中使用 S3 事件根据存储桶的创建方式采取操作(删除存储桶/添加访问块存储桶策略等)。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 现在明白了,谢谢 Manu。
    【解决方案3】:

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

    合规报告

    您可以使用AWS Config 服务来检测不合规的 S3 存储桶资源。你可以定义你的tagging policy for S3 Buckets with a Config rule

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

    自动修复

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

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

    【讨论】:

    • 好的,但是我怎样才能确保将特定资源标记为某个值。如果没有 lambda,这可能吗?
    • @pop JD 的回答解释了这一点。唯一的另一种方法是禁止用户创建存储桶并要求他们使用您自己的存储桶创建服务来创建存储桶。他们会以某种方式“调用”您的服务,这将使用所需的标签代表他们创建请求的存储桶。
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2021-10-16
    • 2014-10-25
    • 1970-01-01
    • 2019-07-14
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多