授权概念 身份验证与授权 身份验证用于确认用户的身份。授权则决定用户是否能够对特定资源执行特定操作。
例如,当你登录Google时,身份验证是验证你的用户名和密码是否正确的过程。授权则是确保你能访问特定的Google服务或功能的过程。
什么是细粒度授权? 细粒度授权(FGA)意味着能够为特定用户授予在特定资源上执行特定操作的权限。
设计良好的FGA系统允许您管理数百万个对象和用户的权限。这些权限会随着系统不断添加对象并更新用户访问权限而快速变化。
FGA 的一个典型示例是 Google 驱动器:访问权限可授予文档或文件夹,也可授予单个用户或用户组,且访问权限会随着新文档的创建和与特定用户或组的共享而定期变更。
什么是基于角色的访问控制? 在基于角色的访问控制(RBAC)中,权限根据用户在系统中的角色进行分配。例如,用户需要编辑角色才能编辑内容。
RBAC系统允许您定义用户、组、角色和权限,并将它们存储在中央位置。应用程序访问这些信息以做出授权决策。
什么是属性基于访问控制? 在属性基于访问控制(ABAC)中,权限是根据用户或资源所拥有的属性集授予的。例如,同时具有营销和经理属性的用户有权发布和删除具有营销属性的帖子。
实现 ABAC 的应用程序需要从多个数据源(如 RBAC 服务、用户目录和应用程序特定的数据源)检索信息以做出授权决策。
什么是基于策略的访问控制? 基于策略的访问控制(PBAC)是指以集中方式管理授权策略,且该策略独立于应用程序代码。大多数 ABAC 实现也是 PBAC。
什么是基于关系的访问控制? 基于关系的访问控制(ReBAC)允许用户访问规则基于用户与特定对象之间的关系,以及该对象与其他对象之间的关系。例如,如果用户有权访问文档的父文件夹,则该用户可以查看该文档。
ReBAC 是 RBAC 的超集:您可以使用 ReBAC 完全实现 RBAC。ReBAC还允许您原生解决基于属性的访问控制(ABAC)问题,当属性可以以关系形式表达时。例如,“用户的经理”、“父文件夹”、“文档的所有者”、“用户的部门”都可以定义为关系。
OpenFGA通过使用条件或上下文元组简化表达额外的ABAC场景,扩展了ReBAC。
ReBAC 也可视为 PBAC,因为授权策略是集中管理的。
什么是 Zanzibar? Zanzibar 是 Google 跨其产品套件的全球授权系统。它基于 ReBAC,并使用对象-关系-用户元组存储关系数据,然后检查这些关系以匹配用户与对象。有关更多信息,请参阅 Zanzibar 学院。
基于 Zanzibar 的 ReBAC 系统将授权决策所需的数据存储在集中式数据库中。应用程序只需调用 API 即可进行授权决策。
OpenFGA 是基于 Zanzibar 的授权系统的示例。