如何限制IAM用户/Assumed Role在AWS Cognito中启用未认证用户身份?
方案结论
可以通过AWS服务控制策略(SCP)实现该限制,这是AWS组织层面统一管控Cognito未认证身份开启操作的最优方案。
具体实现逻辑
Cognito身份池的创建、更新操作中,是否开启未认证用户身份由请求参数AllowUnauthenticatedIdentities控制,你只需配置SCP拒绝所有将该参数设为true的相关请求即可,示例策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cognito-identity:CreateIdentityPool", "cognito-identity:UpdateIdentityPool" ], "Resource": "*", "Condition": { "Bool": { "cognito-identity:AllowUnauthenticatedIdentities": "true" } } } ] }
说明与注意事项
- 该策略会作用于组织内所有绑定了该SCP的账号,覆盖所有IAM用户、IAM角色以及Assumed Role身份,只要尝试开启Cognito未认证用户功能的请求都会被直接拦截。
- 策略仅限制新开启未认证身份的操作,不会自动禁用已经开启该功能的存量Cognito身份池,存量资源需要你单独排查整改。
- 如果你的账号未加入AWS组织无法使用SCP,也可以通过给账号内所有IAM实体配置统一权限边界,添加上述相同逻辑的Deny语句实现同等管控效果。
内容的提问来源于stack exchange,提问作者Prathyush Peettayil
相关产品推荐
相关产品推荐

