如何为Cognito特定群组分配管理员级别的访问权限?
实现Cognito特定群组的管理员级访问权限
你之前通过aws:userid指定单个用户的方式既不符合群组权限需求,也无法正常生效,以下是两种可行的实现方案:
方案一:通过IAM策略基于Cognito群组上下文限制权限
当用户通过Cognito身份池获取临时凭证时,Cognito会将用户所属群组信息注入凭证的上下文变量中,你可以在IAM策略中使用cognito:groups上下文键设置权限条件:
{ "Sid": "AllowAdminGroupFullAccess", "Effect": "Allow", "Action": "cognito-idp:*", "Resource": "arn:aws:cognito-idp:us-east-1:767397735342:userpool/us-east-1_zIho5p9ue", "Condition": { "StringEquals": { "cognito:groups": "你的管理员群组名称" } } }
注意:该策略需要附加到用户通过Cognito身份池获取的角色上,cognito:groups上下文键仅存在于Cognito身份池生成的临时凭证中,直接附加到IAM用户角色无效。
方案二:为管理员群组单独映射IAM角色
这是更清晰的权限隔离方式,步骤如下:
- 进入Cognito身份池控制台,找到「身份验证提供商」下的Cognito配置
- 启用「使用角色映射」,添加规则:当用户属于指定管理员群组时,映射到拥有Cognito全权限的IAM角色
- 给该映射角色附加允许
cognito-idp:*操作的策略,无需额外条件判断,仅该群组用户会获取到对应权限的凭证
原策略失效原因
你之前的策略无法生效的核心问题:
aws:userid对应的是IAM用户ID,而非Cognito用户池中的用户ID,两者格式完全不匹配- 若直接给IAM角色附加该策略,Cognito用户的临时凭证
aws:userid格式为CognitoIdentityPoolId:CognitoUserId,和你填写的纯Cognito用户ID无法匹配
内容的提问来源于stack exchange,提问作者Muhammad Umar
相关产品推荐
相关产品推荐

