Skip to main content

概念

许可

用户在 backstage 中执行的任何操作都可以表示为一个权限。 更复杂的操作(如执行软件模板)可能需要在整个流程中对多个权限进行授权。 权限由一个唯一的名称标识,并可选择包含一组描述相应操作的属性。 插件负责定义和公开其执行的权限。

政策

用户权限由用户定义的中央权限策略授权。 通俗地说,策略是一个函数,它接收Backstage用户和权限,并返回允许或拒绝的决定。 策略以代码的形式表达,这就使框架与任何特定的授权模型(如基于角色的访问控制(RBAC)或基于属性的访问控制(ABAC))分离开来。

政策决定与执行

任何授权系统都有两个重要职责,一是决定用户是否可以做某事,二是执行该决定。 在后端权限框架中,策略负责决定,插件(通常是后端)负责执行。

资源和规则

在许多情况下,权限代表了用户与另一个对象的交互。 这个对象很可能具有策略作者可以用来定义更细粒度访问的信息。 权限框架引入了两个抽象概念来说明这一点:资源和规则。 资源代表了用户与之交互的对象。 规则是基于预设的控制,可以利用资源的数据。 例如,目录插件为目录实体定义了一个资源,并为检查实体是否具有给定注释定义了一个规则。

有条件的决定

规则在用于决策之前需要额外的数据。 例如,目录插件的 "有注释 "规则需要知道在给定实体上查找什么注释。 一旦规则与相关信息绑定,它就形成了一个条件。 然后,条件被用来从策略中返回一个条件决策。 条件决策告诉权限框架将评估委托给拥有相应资源的插件。 如果所有提供的条件评估为真,则允许产生条件决策的权限请求。 这种条件行为避免了策略和资源模式之间的耦合,并允许插件以有效的方式评估复杂的规则。 例如,插件可以将条件决策转换为数据库查询,而不是在内存中加载和过滤对象。