Lambda(VPC内)无法访问SecretsManager权限问题求助
报错详情
User: arn:aws:sts::#####:assumed-role/consent-gen/consent-gen is not authorized to perform: secretsmanager:GetSecretValue because no identity-based policy allows the secretsmanager:GetSecretValue action
逐一排查以下方向
核对角色信任关系
确认Lambda执行角色的信任策略里,可信实体是否包含lambda.amazonaws.com,防止角色被错误配置为仅允许其他服务/用户调用。验证策略资源范围
检查附加到角色的权限策略,确认secretsmanager:GetSecretValue对应的资源是目标Secret的完整ARN,而非泛用的*(泛用通配符可能受其他限制),同时排查ARN是否存在拼写错误。检查会话策略限制
如果Lambda角色是通过STS假设而来(比如跨账号角色、外部身份提供商),需确认是否附带了会话策略——这类策略会覆盖或限制原有角色权限,可能拦截了GetSecretValue操作。排查VPC终端节点策略
SecretsManager的VPC终端节点本身可能附加了资源策略,检查该策略是否允许Lambda所在角色访问目标Secret。即使Lambda角色有权限,终端节点策略也可能阻断请求。确认Lambda执行角色配置
检查Lambda函数的执行角色是否确实是你在控制台验证的consent-gen角色,避免因配置错误使用了无权限的其他角色。检查权限边界设置
如果Lambda执行角色配置了权限边界,需确认该边界是否允许secretsmanager:GetSecretValue操作。权限边界会限定角色的最大权限,即使附加了允许策略,边界不授权的话仍会报错。测试临时凭证同步
STS生成的临时凭证可能存在缓存或权限同步延迟,尝试重新触发Lambda函数,或等待数分钟后再测试,排除权限同步的时间差问题。
内容的提问来源于stack exchange,提问作者Tim

