有许多方法可以实现API访问控制和授权。本指南重点介绍三种对多租户SaaS架构有效的设计模型。这些设计为策略决策点(PDP)和策略执行点(PEP)的实现提供了一个高级参考,从而为应用程序形成了一个连贯且普遍的授权模型。
设计模型:
- 具有API上PEP的集中式PDP
- API上带有PEP的分布式PDP
- 作为库的分布式PDP
具有API上PEP的集中式PDP
在API模型上具有策略执行点(PEP)的集中式策略决策点(PDP)遵循行业最佳实践,为API访问控制和授权创建一个有效且易于维护的系统。该方法支持几个关键原则:
- 授权和API访问控制在应用程序的多个点应用。
- 授权逻辑独立于应用程序。
- 访问控制决策是集中的。
该模型使用集中式PDP来做出授权决策。PEP在所有API中实现,以向PDP发出授权请求。下图显示了如何在假设的多租户SaaS应用程序中实现此模型。
一个示例多租户SaaS应用程序,该应用程序使用带有PEP的集中式PDP
应用程序流程:
具有JWT令牌的认证用户向AmazonCloudFront生成HTTP请求。 |
|
CloudFront将请求转发到配置为CloudFront源的Amazon API网关。 |
|
调用API网关Lambda授权器来验证JWT令牌。 |
|
微服务响应请求。 |
授权和API访问控制流程:
PEP调用授权服务并传递请求数据,包括任何JWT令牌。 |
|
授权服务(PDP)接收请求数据并查询作为sidecar运行的OPA代理REST API,请求数据作为查询的输入。 |
|
OPA根据查询指定的相关策略评估输入。必要时导入数据以做出授权决定。 |
|
OPA向授权服务返回决定。 |
|
授权决定返回给PEP并进行评估。 |
在此架构中,PEP在CloudFront和API网关以及每个微服务的服务端点请求授权决策。授权决策由具有OPA侧车的授权服务(PDP)做出。您可以将此授权服务作为容器或传统服务器实例来操作。OPA sidecar在本地公开其RESTful API,因此该API只能由授权服务访问。授权服务公开了一个单独的API,可供PEP使用。授权服务充当PEP和OPA之间的中介,允许在PEP与OPA之间插入任何必要的转换逻辑,例如,当PEP的授权请求不符合OPA期望的查询输入时。
您还可以将此架构与自定义策略引擎一起使用。然而,从OPA获得的任何优势都必须用定制策略引擎提供的逻辑来代替。
在API上使用PEP的集中式PDP为为API创建一个健壮的授权系统提供了一个简单的选择。它易于实现,还提供了一个易于使用的幂等接口,用于为API、微服务、前端后端(BFF)层或其他应用程序组件做出授权决策。然而,这种方法可能会在应用程序中造成太多延迟,因为授权决策需要调用单独的API。如果网络延迟是一个问题,您可以考虑使用分布式PDP。
API上带有PEP的分布式PDP
基于API模型的分布式策略决策点(PDP)和策略执行点(PEP)遵循行业最佳实践,以创建有效的API访问控制和授权系统。与API模型上带有PEP的集中式PDP一样,该方法支持以下关键原则:
- 授权和API访问控制在应用程序的多个点应用。
- 授权逻辑独立于应用程序。
- 访问控制决策是集中的。
您可能会想知道,当分发PDP时,为什么访问控制决策是集中的。尽管PDP可能存在于应用程序中的多个位置,但它必须使用相同的授权逻辑来做出访问控制决策。给定相同的输入,所有PDP提供相同的访问控制决策。PEP在所有API中实现,以向PDP发出授权请求。下图显示了如何在假设的多租户SaaS应用程序中实现此分布式模型。
一个示例多租户SaaS应用程序,该应用程序使用带有PEP的分布式PDP
Application flow:
具有JWT令牌的认证用户向AmazonCloudFront生成HTTP请求。 |
|
CloudFront将请求转发到配置为CloudFront源的Amazon API网关。 |
|
调用API网关Lambda授权器来验证JWT令牌。 |
|
微服务响应请求。 |
Authorization and API access control flow:
PEP调用授权服务并传递请求数据,包括任何JWT令牌。 |
|
授权服务(PDP)接收请求数据并查询作为sidecar运行的OPA代理REST API,请求数据作为查询的输入。 |
|
OPA根据查询指定的相关策略评估输入。必要时导入数据以做出授权决定。 |
|
OPA向授权服务返回决定。 |
|
授权决定返回给PEP并进行评估。 |
在此架构中,PEP在CloudFront和API网关以及每个微服务的服务端点请求授权决策。微服务的授权决策是由授权服务(PDP)做出的,它作为应用程序组件的侧车运行。该模型适用于在容器或Amazon Elastic Compute Cloud(Amazon EC2)实例上运行的微服务(或服务)。API网关和CloudFront等服务的授权决策仍需要联系外部授权服务。无论如何,授权服务公开了PEP可用的API。授权服务充当PEP与OPA之间的中介,允许在PEP和OPA之间插入任何必要的转换逻辑,例如,当PEP的授权请求不符合OPA期望的查询输入时。
您还可以将此架构与自定义策略引擎一起使用。然而,从OPA获得的任何优势都必须用定制策略引擎提供的逻辑来代替。
在API上具有PEP的分布式PDP提供了为API创建健壮授权系统的选项。它易于实现,并提供了一个易于使用的幂等接口,用于为API、微服务、前端后端(BFF)层或其他应用程序组件做出授权决策。这种方法还具有减少集中式PDP模型中可能遇到的延迟的优点。
作为库的分布式PDP
您还可以向PDP请求授权决策,该PDP可以作为库或包在应用程序中使用。OPA可以用作Go第三方库。对于其他编程语言,采用此模型通常意味着您必须创建自定义策略引擎。
最新内容
- 9 hours 35 minutes ago
- 11 hours 51 minutes ago
- 12 hours 7 minutes ago
- 3 days 3 hours ago
- 3 days 11 hours ago
- 3 days 11 hours ago
- 3 days 12 hours ago
- 3 days 12 hours ago
- 1 week ago
- 1 week ago