AWS Cognito自助操作的细粒度权限范围如何实现?
关于AWS Cognito自助服务API细粒度权限控制的问题
背景
在AWS Cognito中,通过InitiateAuth或AdminInitiateAuth获取访问令牌时,其scope声明固定为aws.cognito.signin.user.admin,该权限允许用户调用所有自助服务API,包括修改密码、更新属性、禁用MFA甚至删除用户。
需求
希望对自助服务API实现更细粒度的控制,例如允许调用GetUser和ChangePassword,同时禁止SetUserMfaPreference和DeleteUser。
对现有方案的疑问
曾看到有方案提出将Cognito用户池与身份池结合实现细粒度控制,但实际查阅相关官方教程后发现,该流程似乎仅适用于开放原本被禁止的操作(如读取DynamoDB)——它假设用户会主动请求IAM凭证;但只要有人知道用户池的client id(可从id token的aud声明中提取),就可以调用InitiateAuth获取带有scope: aws.cognito.signin.user.admin的访问令牌,攻击者完全不会主动请求受限凭证,所以这个方案实际无法达到限制目的。
现有思路的困境
我想到的一个解决方案是自研服务完全封装AWS Cognito,但这样必须彻底隐藏底层使用Cognito的事实——因为任何人持有Cognito的原始id token都可以调用InitiateAuth获取访问令牌。而安全地封装认证服务对小型团队来说难度极大。
内容的提问来源于stack exchange,提问作者ynn
相关产品推荐
相关产品推荐

