You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置IAM策略限制含特定标签才允许创建EC2安全组遇权限错误

问题原因分析

AWS控制台创建EC2安全组的默认流程是分两步执行:

  1. 先调用ec2:CreateSecurityGroup接口创建一个无标签的安全组
  2. 再调用ec2:CreateTags接口为刚创建的安全组添加标签

你的IAM策略中,给ec2:CreateSecurityGroup操作添加了aws:RequestTag/CreatedBy的条件检查,要求该请求必须携带指定标签。但控制台第一步的CreateSecurityGroup请求中根本没有包含任何标签参数,直接触发条件匹配失败,导致权限被拒绝。

解决办法

根据需求,分两种场景提供解决方案:

场景1:适配AWS控制台操作流程

如果需要让控制台能正常创建安全组,同时确保最终的安全组必须带有CreatedBy:a_value标签,可以修改策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:GetConsole*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateSecurityGroup",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:security-group/${ec2:VpcSecurityGroupId}",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/CreatedBy": "a_value"
                }
            }
        }
    ]
}

策略说明:

  • 允许无标签创建安全组(适配控制台的两步流程)
  • 限制ec2:CreateTags只能作用于刚创建的安全组:${ec2:VpcSecurityGroupId}是AWS提供的上下文变量,仅在CreateSecurityGroup之后的CreateTags请求中会被自动填充为刚创建的安全组ID
  • 强制CreateTags操作必须携带CreatedBy:a_value标签,确保最终的安全组一定会有该标签

场景2:强制所有创建方式(API/CLI)必须在创建时带标签

如果只需要支持API或CLI创建安全组,且要求必须在创建时就携带标签,可以保留原策略,但需要确保创建请求中明确包含标签参数:

  • 使用CLI创建的示例命令:
aws ec2 create-security-group --group-name MySG --description "My security group" --vpc-id vpc-123456 --tags Key=CreatedBy,Value=a_value

这种情况下,AWS控制台无法直接使用,因为控制台的默认流程不支持在CreateSecurityGroup请求中携带标签(即使你在页面填写标签,控制台仍会分两步执行)。

验证方法
  1. 控制台测试:使用场景1的策略,在创建安全组页面填写CreatedBy:a_value标签,完成创建后检查安全组标签是否存在
  2. CLI测试:使用场景2的策略,不带标签执行create-security-group命令,应该返回权限拒绝;带标签执行则成功

内容的提问来源于stack exchange,提问作者Michele Amati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:55:23