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

AWS资源策略Condition限制导致Lambda无法访问Secrets Manager密钥

错误原因分析

核心问题:资源策略的Condition匹配逻辑不匹配实际请求身份

Lambda执行时会通过STS服务扮演指定IAM角色,此时请求Secrets Manager的身份ARN是临时会话ARN(即错误信息中的arn:aws:sts::1111111111111111:assumed-role/my-secret/my-lambda),而非IAM角色的原始ARN(arn:aws:iam::1111111111111111:role/my-role-foo)。

你配置的资源策略中,Condition规则基于aws:PrincipalArn匹配IAM角色的原始ARN格式(arn:aws:iam::1111111111111111:role/my-role*),但实际请求的身份ARN是STS扮演后的会话ARN,格式完全不匹配,导致这条Allow策略无法触发生效。

错误提示的补充说明

错误信息提到“no identity-based policy allows the secretsmanager:GetSecretValue action”,是因为你仅在Secrets Manager密钥上配置了资源型策略,没有给Lambda执行角色添加对应的身份型策略(直接附加在IAM角色上的权限策略)。但这不是触发本次错误的直接原因——即使添加身份型策略,资源策略的Condition不匹配问题依然存在,只是错误提示会变化。


可选修正方案

  • 修改资源策略的Condition匹配规则:将aws:PrincipalArn的匹配值改为STS会话ARN的格式,示例:
    "Condition" : {
      "ArnLike" : {
        "aws:PrincipalArn" : "arn:aws:sts::1111111111111111:assumed-role/my-role-foo*"
      }
    }
    
  • 改用更可靠的匹配方式:比如通过aws:SourceArn匹配Lambda函数的ARN,确保只有指定Lambda能访问,示例:
    "Condition" : {
      "ArnEquals" : {
        "aws:SourceArn" : "arn:aws:lambda:us-east-1:1111111111111111:function:your-lambda-name"
      }
    }
    
  • 添加身份型策略:直接给Lambda执行角色附加允许访问该Secrets Manager密钥的权限策略,此时可根据权限管控需求选择保留或移除资源策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:20:23