跳转到主要内容
Chinese, Simplified

本节提供了关于在多租户SaaS应用程序中实现API访问控制和授权的常见问题的答案。

授权和身份验证之间的区别是什么?

身份验证是验证用户身份的过程。授权授予用户访问特定资源的权限。

为什么我需要考虑授权我的SaaS应用程序?

SaaS应用程序有多个租户。租户可以是客户组织或使用该SaaS应用程序的任何外部实体。根据应用程序的设计方式,这意味着租户可能正在访问共享的API、数据库或其他资源。维护租户隔离非常重要,即按租户分离权限和数据,以防止用户从一个租户访问另一个租户的私人信息。SaaS应用程序中的授权通常旨在确保在整个应用程序中保持租户隔离,并且租户只能访问自己的资源。

为什么我需要访问控制模型?

访问控制模型用于创建确定如何授予对应用程序中资源的访问的一致方法。这可以通过将角色分配给与业务逻辑密切相关的用户来实现,也可以基于其他上下文属性,例如一天中的时间或用户是否满足预定义的条件。访问控制模型构成了应用程序在进行授权决策以确定用户权限时使用的基本逻辑。

我的应用程序是否需要API访问控制?

对API应始终验证调用者是否具有适当的访问权限。普适的API访问控制还确保仅基于租户授予访问权限,以便保持适当的隔离。

为什么建议使用策略引擎或PDP进行授权?

策略决策点(PDP)允许将应用程序代码中的授权逻辑卸载到单独的系统。这可以简化应用程序代码。它还提供了一个易于使用的幂等接口,用于为API、微服务、前端后端(BFF)层或任何其他应用程序组件进行授权决策

什么是PEP?

策略执行点(PEP)负责接收发送给PDP进行评估的授权请求。PEP可以位于应用程序中必须保护数据和资源或应用授权逻辑的任何位置。与PDP相比,PEP相对简单。PEP仅负责请求和评估授权决策,不要求将任何授权逻辑纳入其中。

OPA有开源替代品吗?

有一些开源系统类似于开放策略代理(OPA),例如通用表达式语言(CEL)。本指南侧重于OPA,因为它被广泛采用、记录在案,并可适应许多不同类型的应用程序和授权要求。

我是否需要编写授权服务来使用OPA,或者我可以直接与OPA交互?

您可以直接与OPA交互。本指南中的授权服务是指将授权决策请求转换为OPA查询的服务,反之亦然。如果您的应用程序可以直接查询和接受OPA响应,则无需引入这种额外的复杂性。

如何监控OPA代理的正常运行时间和审计目的?

OPA确实提供了日志记录和基本的正常运行时间监控,尽管默认配置可能不足以用于企业部署。有关更多信息,请参阅DevOps、监控和日志部分。

我可以使用哪些操作系统和AWS服务来运行OPA?

您可以在macOS、Windows和Linux上运行OPA。OPA代理可以在Amazon Elastic Compute Cloud(Amazon EC2)代理以及容器化服务(如Amazon ElasticContainer Service(Amazon ECS)和Amazon Elastics Kubernetes Service(Amazon EKS))上配置。

我可以在AWS Lambda上运行OPA吗?

您可以将OPA作为Go库在Lambda上运行。AWS博客文章“使用开放策略代理创建自定义Lambda授权者”讨论了如何为API网关Lambda授权器实现这一点。

我应该如何决定分布式PDP和集中式PDP方法?

这取决于您的应用程序。它很可能是基于分布式和集中式PDP模型之间的延迟差异来确定的。我们建议您构建概念验证并测试应用程序的性能,以验证您的解决方案。

除了API之外,我可以将OPA用于用例吗?

对OPA文档提供了Kubernetes、Envoy、Docker、Kafka、SSH和sudo以及Terraform的示例。此外,OPA能够使用Rego部分规则响应查询返回任意JSON。根据查询的不同,OPA可以用来回答JSON响应中的许多问题。

原文地址
https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/faq.html
本文地址
Article

微信

知识星球

微信公众号

视频号