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

IAM强制标签策略失效:EBS卷未按要求限制创建

排查IAM策略未按预期生效的问题

我来帮你梳理下这个策略的问题所在,你的核心需求是拒绝创建未同时携带empname和team标签的EBS卷,但当前策略的逻辑和语法都存在错误,导致不符合预期的操作被允许:

一、当前策略的核心错误

1. Condition逻辑完全倒置,ForAllValues用法错误

你使用的ForAllValues:StringNotLike条件,实际含义是:**请求中所有的empname标签值都不匹配任意字符串(即完全没有empname标签),且所有的team标签值都不匹配任意字符串(即完全没有team标签)**时,才触发Deny。

但你的需求是「只要缺少其中一个标签就拒绝」,而不是「两个标签都缺失才拒绝」。这就导致当用户创建带其他标签(比如只带department)的EBS卷时,这个条件不满足,Deny不触发,操作被允许。

2. aws:TagKeys条件语法错误且逻辑不符

你的策略中aws:TagKeys的条件未写完(缺少闭合的]}),属于语法错误,AWS解析时会忽略这个无效条件。即便写完,ForAllValues:StringEquals要求请求的所有标签键必须恰好是empname和team,不允许添加其他标签,这也不符合你「允许带其他标签,只要同时有两个必填标签即可」的需求。

二、修正后的正确策略

要实现「未同时携带empname和team标签则拒绝创建」的需求,我们需要用Null条件检查标签是否存在,并通过OR逻辑实现「缺少任意一个标签就拒绝」的效果,同时确保策略语法正确:

{
  "Version": "2012-10-17",
  "Statement": [
    // 先允许合法的创建操作(IAM默认拒绝所有,必须显式允许)
    {
      "Sid": "AllowCreateVolume",
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:us-east-1:axxxxxxxxxxx:volume/*"
    },
    // 拒绝缺少必填标签的创建操作
    {
      "Sid": "DenyCreateVolumeWithoutRequiredTags",
      "Effect": "Deny",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:us-east-1:axxxxxxxxxxx:volume/*",
      "Condition": {
        "OR": [
          {
            "Null": {
              "aws:RequestTag/empname": true
            }
          },
          {
            "Null": {
              "aws:RequestTag/team": true
            }
          }
        ]
      }
    }
  ]
}

三、策略逻辑说明

  • Null: {"aws:RequestTag/empname": true}:表示请求中不存在empname标签时,该条件成立
  • OR逻辑:只要empname或team任意一个标签缺失,就触发Deny操作
  • 先Allow后Deny:IAM的权限判断顺序是「先检查所有Deny策略,再检查Allow策略」,所以这条策略会优先拒绝不符合标签要求的操作,允许符合要求的操作(包括带其他额外标签的情况)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:23:02