5.2. 使用 Helm 在外部文件中定义授权
要自动化 Red Hat Developer Hub 维护,您可以在启动 Developer Hub 前在外部文件中定义权限和角色。您需要准备文件,将其上传到 OpenShift Container Platform 项目中,并将 Developer Hub 配置为使用外部文件。
先决条件
流程
使用以下格式在
rbac-policies.csv
CSV 文件中定义您的策略:定义角色权限:
p, <role_entity_reference>, <permission>, <action>, <allow_or_deny>
- <role_entity_reference>
-
角色实体引用,例如:
role:default/guest
。 - <permission>
权限,如:
bulk.import
、catalog.entity.read
或catalog.entity.refresh
,或权限资源类型,如bulk-import
或catalog-entity
。请参阅: 权限策略参考。
- <action>
-
操作类型,例如:
使用
、读取
、创建
、更新
、删除
。 - <allow_or_deny>
-
授予访问权限:
允许或拒绝
为组或用户分配角色:
g, <group_or_user>, <role_entity_reference>
- <group_or_user>
组,如
user:default/mygroup
或 user,例如:user:default/myuser
。Sample
rbac-policies.csv
p, role:default/guests, catalog-entity, read, allow p, role:default/guests, catalog.entity.create, create, allow g, user:default/my-user, role:default/guests g, group:default/my-group, role:default/guests
使用以下格式在
rbac-conditional-policies.yaml
YAML 文件中定义条件策略:result: CONDITIONAL roleEntityRef: <role_entity_reference> pluginId: <plugin_id> permissionMapping: - read - update - delete conditions: <conditions>
请参阅: 条件策略参考。
将
rbac-policies.csv
和rbac-conditional-policies.yaml
文件上传到包含 Developer Hub 的 OpenShift Container Platform 项目中的rbac-policies
配置映射。$ oc create configmap rbac-policies \ --from-file=rbac-policies.csv \ --from-file=rbac-conditional-policies.yaml
更新 Developer Hub
Backstage
Helm Chart,以挂载到rbac-policies
配置映射中的 Developer Hub 文件系统:-
在 Developer Hub Helm Chart 中,进入 Root Schema
Backstage chart schema Backstage parameters Backstage container additional volume mount。 选择 Add Backstage 容器附加卷挂载 并添加以下值:
- mountPath
-
/opt/app-root/src
- Name
-
rbac-policies
将 RBAC 策略添加到 Developer Hub Helm Chart 中的 Backstage 容器 附加卷:
- 名称
-
rbac-policies
- configMap
- defaultMode
-
420
- 名称
-
rbac-policies
-
在 Developer Hub Helm Chart 中,进入 Root Schema
更新 Developer Hub
app-config.yaml
配置文件,以使用rbac-policies.csv
和rbac-conditional-policies.yaml
外部文件:app-config.yml
片段permission: enabled: true rbac: conditionalPoliciesFile: /opt/app-root/src/rbac-conditional-policies.yaml policies-csv-file: /opt/app-root/src/rbac-policies.csv policyFileReload: true