基于属性的访问控制概述
基于属性的访问控制 (ABAC) 是一种通过评估属性来确定访问权限的授权模型。属性可以与主体(请求访问的用户或实体)、对象(主体想要访问的资源或文件)甚至环境(其他参数,如一天中的时间、IP 地址等)相关。
ABAC 策略与 RBAC(基于角色的访问控制)和部门协同工作,以提供更多的访问控制粒度。这些策略是布尔逻辑语句,其中条件被评估为真或假结果。每个策略都针对特定的一组 API 调用(称为目标)并适用于特定的用户子集(称为主题)。
要开始使用 ABAC,启用基于属性的访问控制第一的。
目前支持以下策略:
- 无法授予新角色– 防止非管理员用户授予他们自己不拥有的角色
- 无法更新某些用户个人资料字段– 防止已定义的用户资料字段被除主管或管理员以外的人员修改
ABAC 中使用的定义
术语 | 描述 |
---|---|
策略名称 | 策略创建者在创建或更新策略时设置的策略名称。 |
描述 | (可选)策略创建者设置的策略的简短描述。 |
目标 |
策略适用的目标资源。资源目标的形式如下 目标反映了用户正在尝试执行的操作,通常等同于编辑、查看或删除资源的 API 调用。政策与目标相关。 |
主题 |
策略的主体是该策略适用的用户、组或客户端。政策只能有一个主题。该主题具有以下成员:
|
影响 |
策略的效果表示策略在满足条件时是否允许访问,或者在满足条件时立即拒绝访问。如果用户满足 ALLOW 策略的条件,具有必要的权限,并且没有被 DENY 策略阻止,则允许他们访问该资源。 ABAC 不会取代现有的基于角色的访问和部门访问控制。它与它们协同工作,提供更细粒度的访问控制。如果 ABAC 策略评估的结果为允许,则系统会检查主体是否具有必要的权限,然后才允许访问。 具有 DENY 效果的策略指定必须拒绝访问资源的条件。如果用户符合 DENY 策略的条件,则无论他们是否也符合同一资源的 ALLOW 策略的条件,都会被拒绝访问。 如果资源附加了至少一条策略,但用户不匹配任何策略的条件,则默认情况下用户将被拒绝访问该资源。 |
健康)状况 |
(可选)建立策略允许或拒绝访问的特定条件。 每个评估条件都由以下基本模式表示(以 JSON 表示): 当评估策略时,系统会检索与提供的属性名称相对应的属性,并使用提供的操作对它们进行比较。 多个条件也可以嵌套在 Any(表示逻辑或)或 All(表示逻辑与)结构中,以允许更复杂的条件逻辑。 |
预设属性 |
(可选)静态、预定义属性的映射,与系统中的属性数据进行比较。例如,策略创建者可能希望允许具有特定角色 ID 的任何用户访问,并且他们会将相关角色 ID 作为策略中的预设属性提供。 策略创建者设置预设的属性名称。与系统提供的现有属性相冲突的名称将在验证时被拒绝。预设属性名称可以包含字母数字字符、句点 (.) 和下划线 (_),但不能包含空格或除列出的字符之外的其他特殊字符。 每个映射条目都有一个键(即预设属性的名称)和一个值(即 TypedAttribute 对象),具有以下成员:
|
有关详细信息,请参阅创建访问策略。