第 8 章 Red Hat Developer Hub 中的条件策略
Red Hat Developer Hub 中的权限框架提供了由 RBAC 后端插件支持的条件(backstage-plugin-rbac-backend)。条件作为 RBAC 后端插件提供的 Developer Hub 资源的内容过滤器。
RBAC 后端 API 存储分配给数据库中的角色的条件。当您请求访问 frontend 资源时,RBAC 后端 API 会搜索对应的条件,并使用其插件 ID 将它们委派给适当的插件。如果您分配到具有不同条件的多个角色,则 RBAC 后端将使用 anyOf 条件合并条件。
- 条件条件条件
Developer Hub 中的条件是带有规则和参数的简单条件。但是,条件也可以包含参数或按条件条件组合的参数数组。支持的条件条件包括:
-
allOf: 确保阵列中的所有条件都必须为 true,才能满足组合条件。 -
anyOf: 确保该阵列中至少需要满足组合条件的条件。 -
Not : 确保其中的条件不能满足组合条件。
-
- 条件对象
该插件指定条件支持的参数。您可以从 RBAC API 端点访问条件对象模式,以了解如何构建条件 JSON 对象,然后由 RBAC 后端插件 API 使用该对象。
条件对象包含以下参数:
Expand 表 8.1. 条件对象参数 参数 类型 描述 result字符串
始终值为
CONDITIONALroleEntityRef字符串
对 RBAC 角色的字符串实体引用,如
role:default/devpluginId字符串
对应的插件 ID,如
目录permissionMapping字符串数组
数组权限操作,如
['read', 'update', 'delete']resourceType字符串
插件提供的资源类型,如
catalog-entityconditionsJSON
带有参数或数组参数的条件 JSON,按条件加入
- 条件策略别名
RBAC 后端插件(
backstage-plugin-rbac-backend)支持在条件策略规则参数中使用别名。在策略评估过程中,条件策略别名会动态地替换为对应的值。条件策略中的每个别名都以$符号作为前缀,代表其特殊功能。支持的条件别名包括:
-
$currentuser:此别名替换为请求访问资源的用户的用户实体引用。例如,如果用户从默认命名空间请求访问,$currentUser将变为user:default/tom。
-
带有 $currentUser 别名的条件策略对象示例
-
$ownerRefs:此别名替换为所有权引用,通常是作为包含用户实体引用和用户的父组实体引用的数组。例如,对于来自 team-a 的用户 Tom,$ownerRefs将变为['user:default/tom', 'group:default/team-a']。
带有 $ownerRefs 别名的条件策略对象示例
8.1. 启用传输父组 复制链接链接已复制到粘贴板!
默认情况下,Red Hat Developer Hub 在身份验证过程中不会解析间接父组。在这种情况下,在以下组层次结构中,user_alice 用户只是 group_developers 组的成员:
group_admin
└── group_developers
└── user_alice
group_admin
└── group_developers
└── user_alice
要使用 $ownerRefs 别名时支持多级组层次结构,您可以将 Developer Hub 配置为将间接父组包含在用户的所有权实体中。在这种情况下,user_alice 用户是 group_developers 和 group_admin 组的成员。
流程
在
app-config.yaml文件中启用includeTransitiveGroupOwnership选项。includeTransitiveGroupOwnership: true
includeTransitiveGroupOwnership: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow