【SaaS架构】多租户SaaS授权和API访问控制--访问控制类型
视频号
微信公众号
知识星球
您可以使用两种广泛定义的模型来实现访问控制:基于角色的访问控制(RBAC)和基于属性的访问控制。每种模型都有优缺点,本节将对此进行简要讨论。您应该使用的模型取决于您的具体用例。本指南中讨论的体系结构支持这两种模型。
RBAC
基于角色的访问控制(RBAC)基于通常与业务逻辑一致的角色来确定对资源的访问。权限将根据需要与角色关联。例如,营销角色将授权用户在受限系统内执行营销活动。这是一个相对简单的访问控制模型,因为它很好地与易于识别的业务逻辑相一致。
RBAC模型在以下情况下不太有效:
- 您有独特的用户,其职责包括多个角色。
- 您有复杂的业务逻辑,难以定义角色。
- 要扩展到较大的规模,需要不断进行管理,并将权限映射到新角色和现有角色。
- 授权基于动态参数。
ABAC
基于属性的访问控制(ABAC)基于属性确定对资源的访问。属性可以与用户、资源、环境甚至应用程序状态相关联。策略或规则引用属性,并可以使用基本布尔逻辑来确定是否允许用户执行操作。以下是权限的基本示例:
在支付系统中,财务部门的所有用户都可以在工作时间内在API端点/付款处处理付款。
财务部门的成员资格是决定访问/付款的用户属性。还有一个与/支付API端点关联的资源属性,它只允许在工作时间内进行访问。在ABAC中,用户是否可以处理付款由策略决定,该策略将财务部门成员资格作为用户属性,将时间作为/付款的资源属性。
ABAC模型在允许动态、上下文和细粒度授权决策方面非常灵活。然而,ABAC模型最初很难实现。定义规则和策略以及枚举所有相关访问向量的属性需要大量的前期投资来实现。
RBAC-ABAC混合方法
结合RBAC和ABAC可以提供这两种模型的一些优点。RBAC与业务逻辑紧密结合,实现起来比ABAC简单。为了在做出授权决策时提供额外的粒度层,可以将ABAC与RBAC结合起来。这种混合方法通过将用户的角色(及其分配的权限)与其他属性相结合以做出访问决策来确定访问。使用这两种模型可以实现简单的权限管理和分配,同时还可以提高授权决策的灵活性和粒度。
访问控制模型比较
下表比较了前面讨论的三种访问控制模型。这一比较旨在提供信息和高水平。在特定情况下使用访问模型可能不一定与本表中的比较相关。
Factor | RBAC | ABAC | Hybrid |
---|---|---|---|
Flexibility | Medium | High | High |
Simplicity | High | Low | Medium |
Granularity | Low | High | Medium |
Dynamic decisions and rules | No | Yes | Yes |
Context-aware | No | Yes | Somewhat |
Implementation effort | Low | High | Medium |
- 15 次浏览