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

按AWS官方示例配置资源策略后Lambda无法访问SecretsManager

解决Lambda访问SecretsManager的权限问题

我账户下多个Lambda函数需要访问SecretsManager密钥,且无法使用身份策略,按照AWS官方文档示例配置了如下资源策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "lambda.amazonaws.com"
        ]
      },
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "aws:sourceArn": "arn:aws:lambda::1234567891911:*"
        },
        "StringEquals": {
          "aws:sourceAccount": "1234567891911"
        }
      }
    }
  ]
}

调用Lambda时失败,报错信息:

"An error occurred (AccessDeniedException) when calling the GetSecretValue operation: User: arn:aws:sts::1234567891911:assumed-role/my-secret-name/my-lambda-name is not authorized to perform: secretsmanager:GetSecretValue on resource: ps-shield-token because no identity-based policy allows the secretsmanager:GetSecretValue action"


问题原因

AWS权限验证需要身份策略(Lambda执行角色)和资源策略(SecretsManager密钥)同时允许。你当前配置的资源策略用了lambda.amazonaws.com作为主体,但Lambda实际调用SecretsManager时,使用的是执行角色的STS临时身份(即报错里的arn:aws:sts::...:assumed-role/...),服务主体的配置无法匹配这种临时身份,导致权限校验失败。

解决方案

调整SecretsManager的资源策略,适配Lambda的临时身份访问模式,同时保留权限范围的安全性:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:aws:secretsmanager:你的AWS区域:1234567891911:secret:ps-shield-token-*",
      "Condition": {
        "ArnLike": {
          "aws:PrincipalArn": "arn:aws:sts::1234567891911:assumed-role/*/*"
        },
        "StringEquals": {
          "aws:sourceAccount": "1234567891911",
          "aws:sourceArn": "arn:aws:lambda::1234567891911:function:*"
        }
      }
    }
  ]
}

关键调整说明:

  • 缩小资源范围:将Resource从*改为目标密钥的ARN(SecretsManager密钥ARN末尾会自动添加随机后缀,所以用ps-shield-token-*匹配),避免过度授权
  • 适配临时身份:将Principal设为*,通过aws:PrincipalArn条件限制仅允许你账户内Lambda执行角色的临时身份访问
  • 保留源校验:保留aws:sourceAccount和aws:sourceArn条件,确保请求确实来自你账户内的Lambda函数,防止外部非法请求

额外检查项

  1. 确认该资源策略已正确附加到目标密钥ps-shield-token上
  2. 确保Lambda函数所在区域与SecretsManager密钥的区域一致(跨区域访问需额外配置VPC端点或跨区域权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:00:08