【SaaS架构】多租户SaaS授权和API访问控制--最佳实践
视频号
微信公众号
知识星球
本节列出了本指南的一些重要内容。有关每一点的详细讨论,请单击相应章节的链接。
选择适用于应用程序的访问控制模型
本指南讨论了几种访问控制模型。根据您的应用程序和业务需求,您应该选择适合您的模型。考虑如何使用这些模型来满足您的访问控制需求,以及访问控制需求可能会如何演变,需要对所选方法进行更改。
实施PDP
策略决策点(PDP)可以被表征为策略或规则引擎。此组件负责应用策略或规则,并返回是否允许特定访问的决定。PDP允许将应用程序代码中的授权逻辑卸载到单独的系统。这可以简化应用程序代码。它还提供了一个易于使用的幂等接口,用于为API、微服务、前端后端(BFF)层或任何其他应用程序组件进行授权决策。PDP可用于在应用程序中一致地强制执行租赁要求。
为组织中的每个API实施PEP
策略实施点(PEP)的实现需要确定应用程序中的访问控制实施位置。作为第一步,找到应用程序中可以合并PEP的点。在决定在何处添加PEP时,请考虑以下原则:
如果应用程序公开了API,那么应该对该API进行授权和访问控制。
考虑使用OPA作为PDP的策略引擎
开放策略代理(OPA)比定制策略引擎具有优势。OPA及其与Rego的策略评估提供了一个灵活的预构建策略引擎,支持使用高级声明性语言编写策略。这使得实现策略引擎所需的工作量大大低于构建自己的解决方案。此外,OPA正在迅速成为一个受支持的授权标准。
为OPA实现DevOps、监控和日志记录的控制平面
因为OPA不提供通过源代码控制更新和跟踪授权逻辑更改的方法,所以我们建议您实现一个控制平面来执行这些功能。这将使更新更容易分发给OPA代理,特别是如果OPA在分布式系统中运行,这将减少使用OPA的管理负担。此外,控制平面可用于收集聚合日志并监视OPA代理的状态。
确定授权决策是否需要外部数据,并选择适合它的模型
如果PDP可以仅基于JSON Web令牌(JWT)中包含的数据做出授权决策,则通常不需要导入外部数据来帮助做出授权决策。如果OPA用作PDP,它也可以接受任意JSON数据作为重载输入,作为请求的一部分传递,即使该数据不作为JWT的一部分。使用JWT或重载输入方法通常比在另一个源中维护外部数据容易得多。如果需要更复杂的外部数据来进行授权决策,OPA提供了几种检索外部数据的模型。
- 34 次浏览