基于标签保护 AWS 资源

时间:2021-03-05 11:03:08

标签: amazon-web-services amazon-iam

我正在尝试通过标签(没有值)保护我的 AWS 资源

以下是我正在使用的 IAM 策略的示例片段。

这似乎不起作用!

        {
            "Action": [
                "s3:DeleteObject"
            ],
            "Resource": "*",
            "Effect": "Deny",
            "Sid": "ProtectResource",
            "Condition": {
                "StringEquals": {
                    "aws:TagKeys": "ProtectionTag"
                }
            }
        }

如果我将“StringEquals”更改为“ForAllValues:StringEquals”,那么它会起作用,但即使删除了标记,保护也会保持不变。

您能否帮我构建一个条件,帮助我仅基于标签保护资源。或者,如果需要构建条件,我可以提供值。

谢谢。

2 个答案:

答案 0 :(得分:1)

对于aws:TagKeysaws:RequestTagaws:ResourceTag 之间的区别,关于它们何时应用以及应用什么,经常存在误解/误解对于

aws:TagKeys(仅标签名称)和 aws:RequestTag(标签名称/值对)用于控制对在请求本身中携带标签的 API 操作的访问,例如修改资源上的标签,以便指定哪些标签(在请求本身中)可以与此类 API 操作一起使用。

另一方面,aws:ResourceTag 用于根据资源本身上已经存在的标记来授权 API 操作。因此,如果您想指定具有权限的策略,并且该权限应仅适用于具有特定标签的资源,则使用 aws:ResourceTag 作为条件。

话虽如此,特定操作 s3:DeleteObject 目前不支持基于资源的标签条件。因此,即使您可以标记 S3 对象,您目前也无法根据这些资源标记授权 API 操作。

类似答案:Deny DeleteObject with a specific tag value in S3 bucket

答案 1 :(得分:1)

遗憾的是,您不能这样做。 DeleteObject 不支持任何基于标签的条件。支持的条件键在截图中:

enter image description here

一些解决方法是在存储桶中启用版本控制,或者如果整个存储桶都至关重要,您可以使用 MFA delete 保护。