限制谁可以根据标签注销 AMI

Restricting who can deregister AMI based on a Tag

是否可以限制谁可以通过 IAM 注销 AMI?我要使用的标准是附加到图像资源的标签。标签为 "ReleaseStage",值为 "Beta"、"RC" 和 "GA"... 不应允许开发人员组中的 IAM 用户注销 "GA" 标记为 AMI。

这是否可行?如果可行,我需要什么样的 IAM 政策文件才能实现?

AWS 文档有一个示例,显示在

中的策略条件中使用标签

在给定的示例中,相关行是

"Condition": {"StringEquals": {"ec2:ResourceTag/volume_user": "${aws:username}"}}

其中 volume_user 是示例中标记的名称,表达式 ${aws:username} 是与之比较的值。

条件记录从这里开始:

你的情况看起来像

"Condition": {"StringEquals": {"ec2:ResourceTag/ReleaseStage": "GA"}}

并且您将在效果为 "deny" 的策略中使用它,将该策略附加到 "developers" 组。政策本身看起来像这样:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "ec2:DeregisterImage",
      "Condition": {"StringEquals": {"ec2:ResourceTag/ReleaseStage": "GA"}}
    }
  ]
}

根据官方 documentation,"Condition" 不支持操作 "ec2:DeregisterImage"。 @Thomas Dickey 提出的解决方案对我不起作用,我还没有找到任何其他解决方案来做到这一点。