创建带SMS MFA的Cognito User Pool所需权限及现有策略缺失排查
你当前的策略缺少两类必要权限,是导致保存用户池时权限报错的核心原因:
1. 缺少IAM角色传递权限iam:PassRole
你在创建流程中完成SMS关联角色创建后,需要将该角色授权给Cognito服务调用SNS发送短信,这个操作需要当前身份拥有iam:PassRole权限,且可以限制可传递的角色仅允许给到Cognito服务主体,避免权限溢出。
2. 缺少SNS服务的核心操作权限
你当前策略中仅配置了SNS的查询类权限,配置SMS MFA还需要SNS的操作类权限:
sns:Publish:允许Cognito调用SNS发送短信验证码sns:SetSMSAttributes:允许配置SNS短信发送的全局属性,Cognito配置SMS MFA时会自动校验该配置,无权限会直接触发保存失败
可参考补充的策略语句:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::<你的AWS账户ID>:role/<Cognito SMS发送角色名称>", "Condition": { "StringEquals": { "iam:PassedToService": "cognito-idp.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "sns:Publish", "sns:SetSMSAttributes" ], "Resource": "*" } ] }
你可以将Resource中的角色ARN替换为你实际创建的Cognito SMS发送角色ARN,如果允许传递所有符合规则的角色,也可以写为arn:aws:iam::*:role/*Cognito*SMS*的通配符形式。
内容的提问来源于stack exchange,提问作者thisisdee
相关产品推荐
相关产品推荐

