我正在尝试通过标签(没有值)保护我的 AWS 资源
以下是我正在使用的 IAM 策略的示例片段。
这似乎不起作用!
{
"Action": [
"s3:DeleteObject"
],
"Resource": "*",
"Effect": "Deny",
"Sid": "ProtectResource",
"Condition": {
"StringEquals": {
"aws:TagKeys": "ProtectionTag"
}
}
}
如果我将“StringEquals”更改为“ForAllValues:StringEquals”,那么它会起作用,但即使删除了标记,保护也会保持不变。
您能否帮我构建一个条件,帮助我仅基于标签保护资源。或者,如果需要构建条件,我可以提供值。
谢谢。
答案 0 :(得分:1)
对于aws:TagKeys
、aws:RequestTag
和aws: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 不支持任何基于标签的条件。支持的条件键在截图中:
一些解决方法是在存储桶中启用版本控制,或者如果整个存储桶都至关重要,您可以使用 MFA delete 保护。