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

AWS Secrets Manager使用NotPrincipal资源策略保存报错如何处理

问题根因

你对Deny + NotPrincipal的组合逻辑理解没有错误,报错的核心原因是遗漏了AWS AssumeRole身份的ARN规则:

  • 当你通过控制台/CLI切换为LeadDeveloperRole身份操作时,AWS实际识别到的当前生效Principal ARN不是静态的IAM角色ARN arn:aws:iam::111111111:role/LeadDeveloperRole,而是STS服务生成的会话ARN,格式为arn:aws:sts::111111111:assumed-role/LeadDeveloperRole/[自定义会话名]
  • 你的现有策略中NotPrincipal列表只写了IAM角色的静态ARN,没有包含你当前正在使用的AssumedRole会话身份,因此Deny规则会直接拦截你当前的操作身份,系统检测到该策略保存后你将失去密钥的管理权限,就抛出了对应报错。
  • 即使你添加了显式Allow规则也不会生效,因为AWS IAM权限判定逻辑中Deny规则优先级高于所有Allow规则。
修复方案

在Deny语句的NotPrincipal.AWS列表中,补充两个角色对应的AssumedRole通配符ARN即可,修正后的完整策略如下:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "AWS":[
                "arn:aws:iam::111111111:role/LeadDeveloperRole",
                "arn:aws:iam::111111111:role/AdminRole"
            ]
         },
         "Action": [
             "secretsmanager:*"
        ],
         "Resource":"arn:aws:secretsmanager:region:111111111:secret:secretid-xxxx1i"
      },
      {
         "Effect":"Deny",
         "NotPrincipal":{
            "AWS":[
                "arn:aws:iam::111111111:role/LeadDeveloperRole",
                "arn:aws:sts::111111111:assumed-role/LeadDeveloperRole/*",
                "arn:aws:iam::111111111:role/AdminRole",
                "arn:aws:sts::111111111:assumed-role/AdminRole/*"
            ]
         },
         "Action": [
             "secretsmanager:*"
        ],
         "Resource":"arn:aws:secretsmanager:region:111111111:secret:secretid-xxxx1i"
      }
   ]
}

通配符*可以匹配所有通过对应角色生成的会话,不会限制会话名称,同时仍然保证其他身份都会被Deny规则拦截,符合你的权限控制需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:36:02