amazon-web-services - AWS Cognito 用户池组优先级 - 按预期工作并且无用或损坏?
问题描述
tl;博士:
如果具有较高优先级的组覆盖具有较低优先级的组的角色,那么能够将用户添加到用户池中的多个组的目的是什么?(而不是堆叠角色)
情况:
具有 2 个组的 Cognito 用户池。组“A”的角色可以完全访问 Dynamo,优先级为 10 组“B”的角色可以完全访问 Elastic Search,优先级为 9
如果我将用户单独添加到任一组,它会按预期工作。
然而
- 如果我将用户添加到组“A”和“B”,我希望他们拥有两个组的权限。
- 似乎记录的功能表明用户将只拥有“B”组的权限。如果是这种情况,将用户添加到多个组的目的是什么?
我假设能够将用户添加到多个组的目的是让角色堆栈而不是覆盖。这边走...:
- 组 A 可以有 1,2,3 优先级 10
- B 组可以有 4,5,6 的权限,优先级为 9
- 组 C 可以在 1 上具有 DENY 权限,优先级为 8
结果可能是这样的:
- A 和 B 中的用户将拥有权限 1、2、3、4、5、6
- A、B 和 C 中的用户将具有权限 2、3、4、5、6
但实际上: - A 和 B 中的某个人有权限 4、5、6 - A、B 和 C 中的某个人没有权限
解决方案
这是预期的行为。如果您想要两个组的权限,您只需创建另一个具有组合权限的组/角色。组用于分隔用户。在任何时候,用户只能承担一个角色。您可以让 cognito 根据优先级决定它将承担哪个角色,也可以在 GetCredentialsForIdentity 自定义角色 ARN 中指定它。此外,您还可以随时通过调用 GetCredentialsForIdentity 并切换角色 ARN 并使用特定角色的凭据进行调用来在后台切换角色。
推荐阅读
- bash - 类的 SSH 密钥设置
- c++ - 编译包含 V8 的项目时文件无效或损坏
- javascript - Typescript 中的私有继承等价物(仅包括或排除特定的类成员或属性)
- mobile - 移动端的微应用
- go - 如何将接口的二维切片转换为结构
- swift - 如何在 iOS 12 的 XCUITest 中关闭系统授权警报
- c++ - 在外部类中使用类模板时如何定义内部类构造函数?
- java - jps 进程是 JVM 进程吗?
- node.js - GitHub 检测到依赖漏洞,但是我运行 npm update 并且依赖没有更新?
- javascript - 如何定义产生错误后要响应的消息?