gpt4 book ai didi

amazon-web-services - 使用带有或不带有 Cognito 的 aws api 网关的联合身份的轻量级 rbac

转载 作者:行者123 更新时间:2023-12-04 03:19:43 25 4
gpt4 key购买 nike

我看不到通过 AWS PaaS(网关/lambda)API 进行基于声明或基于角色的授权的良好设计。现在,无论您如何组合以下内容,似乎都存在功能盲点:

  • 网关认知用户池或自定义授权者
  • 用于网络和用户池身份联合的 Cognito 身份池
  • 网关执行授权的 IAM 角色

具体来说,盲点似乎是基于用户属性以以下方式将认知身份与角色相关联(比 dynamo 和 s3 中的键和后缀更加多样化):

  • 不需要在您的 API 中使用自定义端点来出售 IAM 临时凭证(因此使用提供和/或生成的 SDK 以外的东西)
  • 不需要在每个 lambda 函数中使用授权逻辑
  • 不需要在 dynamo、cognito 同步等中持久化上述映射
  • 不分层或排序单独的授权流程(例如单独的 token )
  • 让您的用户使用外部 IDPS 登录

我认为以下是不可能的或过于 hacky:

  • 认知用户池,重叠或在池之间移动用户以表示他们的角色配置
  • 直接从 congito 身份池身份 token (GetOpenIdToken) 获取 Cognito 用户池属性
  • 让易于修改的客户端选择自己的权限(例如选择 IAM 角色)
  • 在自定义授权方或以其他方式影子实现 IAM 中试运行每个请求
  • 使用某种共享 secret 等保护特定于角色的 IAM 角色。

以下是一些示例及其缺点:

  1. 用户使用用户池凭据登录并尝试执行网关 api 方法。
    1. 通过网关 api 方法的 Cognito 授权方会让我说已认证 - 因此 - 授权并将属性/声明映射到集成请求中,仍然将其留给 lambda 函数来实现实际的授权逻辑。
    2. 自定义授权方不会自动验证和解析用户池 token ,但我仍然可以这样做并有条件地构建角色。
  2. 用户使用 google+ 凭据登录,也具有用户池身份,并尝试执行网关 api 方法。
    1. 认知授权者是无用的。
    2. 自定义授权方不会自动验证和解析 google+ token ,但我仍然可以这样做并有条件地构建角色。只是现在我需要手动将其映射到用户池身份。 Cognito 在这里根本没有增加任何值(value)——只是一个笨拙的文档数据库即服务。
  3. 用户使用 google+ 凭据登录,同时拥有用户池身份,然后获取身份池 token (GetOpenIdToken) 并尝试执行网关 API 方法。
    1. 认知授权者是无用的。
    2. 自定义授权方不会自动验证和解析认知身份 token ,但我仍然可以这样做并有条件地构建角色。我仍然需要进行手动映射,因为我不会使用此中间 token 获取用户池属性。
  4. 用户使用 google+ 凭证登录,同时拥有用户池身份,然后获取临时凭证 (GetCredentialsForIdentity) 并尝试执行网关 api 方法。
    1. 默认的授权者是无用的。您只需获得身份验证,因此获得授权。
    2. 认知授权者是无用的。
    3. 自定义授权方没有用。

最佳答案

  • 大多数这些问题的最简单解决方案是在用户池中(即在身份验证流程中使用 Lambda Hook 来检查权限,可以从身份验证生成的 token 中检索属性等),但是您的要求是用户目前不支持可以使用外部提供商登录。
  • 由此,您可以将 Cognito 联合身份与用户池和外部提供商一起使用,但这会带来一些尴尬。当有多个提供商可用时,将权限身份验证构建到用户池 lambda Hook 中是很尴尬的,并且会强制与其他提供商一起使用用户池。
  • 据此,我会说将特权映射到某些外部存储中的身份 ID 是可行的方法,使用具有该 ID 的某些外部钩子(Hook)(Lambda?)来担任角色并获得凭据,但您提到过您不会这样做想这样做。

我同意您的目标并非绝对可行。我的建议可能是与 SA 联系,看看他们是否可以帮助您设计满足您要求的复杂解决方案。

关于amazon-web-services - 使用带有或不带有 Cognito 的 aws api 网关的联合身份的轻量级 rbac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39238265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com