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

如何为Cognito假定角色授予AWS Secrets Manager访问权限?

解决Cognito身份池角色访问AWS Secrets Manager权限问题

问题核心

报错明确指向:User: arn:aws:sts::****:assumed-role/for-cognito-access/CognitoIdentityCredentials is not authorized to perform: secretsmanager:GetSecretValue on resource: dev/App because no session policy allows the secretsmanager:GetSecretValue action

问题出在会话策略限制或权限策略未正确关联到目标角色上,以下是具体解决步骤:


解决步骤

1. 确认权限策略已绑定到目标角色

登录AWS IAM控制台,找到报错中的for-cognito-access角色:

  • 进入该角色的权限标签,确认你配置的包含secretsmanager:*的策略已附加
  • 若未绑定,直接编辑角色的内联策略,遵循最小权限原则配置:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "secretsmanager:GetSecretValue",
          "Resource": "arn:aws:secretsmanager:us-east-1:你的AWS账号ID:secret:dev/App-*"
        }
      ]
    }
    
    注:Secrets Manager的ARN会带随机后缀,用dev/App-*可匹配目标Secret。

2. 检查Cognito身份池的会话策略

进入Cognito控制台,找到你的身份池:

  • 点击编辑身份池,滚动到对应身份类型(未认证/已认证)的角色设置
  • 若配置了会话策略,该策略会覆盖角色权限,需确保其包含允许GetSecretValue的规则:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "secretsmanager:GetSecretValue",
          "Resource": "arn:aws:secretsmanager:us-east-1:你的AWS账号ID:secret:dev/App-*"
        }
      ]
    }
    
    若无特殊限制需求,可直接清空会话策略字段。

3. 验证角色信任策略

确保for-cognito-access角色的信任策略允许Cognito身份池的身份假定该角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "你的Cognito身份池ID"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "unauthenticated"
        }
      }
    }
  ]
}

若使用已认证身份,将unauthenticated替换为authenticated。

4. 检查Secrets Manager资源策略

进入Secrets Manager控制台,找到dev/App Secret:

  • 点击权限标签,查看资源策略是否存在拒绝for-cognito-access角色的规则
  • 若有,调整或删除拒绝规则,或添加允许规则:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::你的AWS账号ID:role/for-cognito-access"
          },
          "Action": "secretsmanager:GetSecretValue",
          "Resource": "*"
        }
      ]
    }
    

5. 权限模拟验证

在IAM控制台中找到for-cognito-access角色,使用模拟策略工具:

  • 选择动作secretsmanager:GetSecretValue,输入目标Secret的ARN
  • 运行模拟,确认结果为允许。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:43:22