首页 > 解决方案 > 即使使用正确的标签键,我的 AWS SCP 会阻止创建任何 EC2 实例是什么?

问题描述

我正在尝试应用阻止创建 EC2 实例的 AWS 服务控制策略,除非请求中提供了特定标签。

为什么以下 SCP 拒绝在所有情况下创建 EC2 实例(带有 ENI 和 EBS 卷),据我所知,即使我提供了所需的标签?(仅供参考,我正在从 AWS 控制台创建实例并在请求中添加标签。)如果不应用此策略,我可以成功创建实例。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RequireEnvironmentTag",
      "Effect": "Deny",
      "Action": [
        "ec2:CreateTags",
        "ec2:RunInstances"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringNotEquals": {
          "aws:TagKeys": "sc:environment"
        }
      }
    }
  ]
}

在此处输入图像描述

标签: amazon-web-servicesamazon-ec2

解决方案


您提供的 SCP 已Resource设置为*,这会阻止创建您的 ENI ( network-interface)。

将资源设置为Amazon EC2 定义的特定支持资源类型以解决问题。

例如,下面的 SCP 应该只允许创建标签键为 的EC2实例sc:environment

我还假设您指定ec2:CreateTags一个动作来阻止修改标签后,它们被设置为ec2:CreateTags评估修改现有标签以及创建新标签(他们可能应该重命名该动作)。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RequireEnvironmentTag",
      "Effect": "Deny",
      "Action": [
        "ec2:CreateTags",
        "ec2:RunInstances"
      ]
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "ForAllValues:StringNotEquals": {
          "aws:TagKeys": "sc:environment"
        }
      }
    }
  ]
}

推荐阅读