第 2 章 Red Hat Developer Hub 中的权限策略
Red Hat Developer Hub 中的权限策略是一组规则,用于管理对资源或功能的访问。这些策略基于其角色来说明授予用户的授权级别。实施权限策略,以维护给定环境中的安全性和保密性。
您可以在 Developer Hub 中定义以下类型的权限:
- 资源类型
- 基本的
两种权限类型之间的区别取决于权限是否包含定义的资源类型。
您可以使用关联的资源类型或权限名称来定义资源类型权限,如下例所示:
资源类型权限定义示例
p, role:default/myrole, catalog.entity.read, read, allow g, user:default/myuser, role:default/myrole p, role:default/another-role, catalog-entity, read, allow g, user:default/another-user, role:default/another-role
您可以使用权限名称在 Developer Hub 中定义基本权限,如下例所示:
基本权限定义示例
p, role:default/myrole, catalog.entity.create, create, allow g, user:default/myuser, role:default/myrole
Developer Hub 支持以下权限策略:
- 目录权限
Name | 资源类型 | policy | 描述 |
---|---|---|---|
|
| 读取 | 允许从目录中读取用户或角色 |
| create | 允许用户或角色创建目录实体,包括在目录中注册现有组件 | |
|
| update | 允许用户或角色从目录中刷新单个或多个实体 |
|
| delete | 允许用户或角色从目录中删除单个或多个实体 |
| 读取 | 允许用户或角色从目录中读取单个或多个位置 | |
| create | 允许用户或角色在目录中创建位置 | |
| delete | 允许用户或角色从目录中删除位置 |
- Scaffolder 权限
Name | 资源类型 | policy | 描述 |
---|---|---|---|
|
| 允许从模板执行操作 | |
|
| 读取 | 允许用户或角色从模板中读取单个或多个参数 |
|
| 读取 | 允许用户或角色从模板读取单个或多个步骤 |
| create | 允许用户或角色触发软件模板,以创建新的构建程序任务 | |
| 允许用户或角色取消当前运行的构建程序任务 | ||
| 读取 | 允许用户或角色读取所有构建器任务及其关联的事件和日志 |
- RBAC 权限
Name | 资源类型 | policy | 描述 |
---|---|---|---|
|
| 读取 | 允许用户或角色读权限策略和角色 |
|
| create | 允许用户或角色创建单个或多个权限策略和角色 |
|
| update | 允许用户或角色更新单个或多个权限策略和角色 |
|
| delete | 允许用户或角色删除一个或多个权限策略和角色 |
- Kubernetes 权限
Name | 资源类型 | policy | 描述 |
---|---|---|---|
| 允许用户或角色访问代理端点 |
- OCM 权限
Name | 资源类型 | policy | 描述 |
---|---|---|---|
| 读取 | 允许从 OCM 插件读取用户或角色 | |
| 读取 | 允许用户或角色读取 OCM 插件中的集群信息 |
- 拓扑权限
Name | 资源类型 | policy | 描述 |
---|---|---|---|
| 读取 | 允许用户或角色查看拓扑插件 | |
| 允许用户或角色访问代理端点,允许他们读取 RHDH 中的 pod 日志和事件 |
2.1. 权限策略配置
在 Red Hat Developer Hub 中配置权限策略的方法有两种,包括:
- 配置权限策略管理员
- 配置外部文件中定义的权限策略
2.1.1. 配置权限策略管理员
Developer Hub 中用户和组的权限策略由权限策略管理员管理。只有权限策略管理员才能访问基于角色的访问控制 REST API。
配置策略管理员的目的是启用特定、有限的经过身份验证的用户来访问 RBAC REST API。权限策略在 policy.csv
文件中定义,该文件在 app-config-rhdh
ConfigMap 中被引用。OpenShift 平台管理员或集群管理员可以执行此任务,并可访问部署 Red Hat Developer Hub 的命名空间。
您可以通过配置 app-config.yaml
文件来启用权限策略管理员,如下所示:
permission: enabled: true rbac: admin: users: - name: user:default/joeuser
权限策略角色(role:default/rbac_admin
)在 Developer Hub 中是一个默认角色,在创建时包括一些权限,如创建、读取、更新和删除权限策略/角色,以及从目录中读取。
如果默认权限不适合您的要求,您可以使用相关权限策略根据您的要求定义新的管理员角色。另外,您可以使用可选的 superUsers
配置值,该值在 Developer Hub 间授予不受限制的权限。
您可以在 app-config.yaml
文件中设置 superUsers
,如下所示:
# ... permission: enabled: true rbac: admin: superUsers: - name: user:default/joeuser # ...
2.1.2. 配置外部文件中定义的权限策略
您可以在启动 Red Hat Developer Hub 前配置权限策略。如果在外部文件中定义了权限策略,您可以在 Developer Hub 中导入同一文件。您必须使用以下 Casbin 规则格式定义权限策略:
--- `p, <ROLE>, <PERMISSION_NAME or PERMISSION_RESOURCE_TYPE>, <PERMISSION_POLICY_ACTION>, <ALLOW or DENY>` ---
您可以使用以下 Casbin 规则格式定义角色:
--- `g, <USER or GROUP>, <ROLE>` ---
有关 Casbin 规则格式的详情,请参考 Casbin 规则的基本。
以下是权限策略配置示例:
--- `p, role:default/guests, catalog-entity, read, allow`
p, role:default/guests, catalog.entity.create, create, allow
g, user:default/<USER_TO_ROLE>, role:default/guests
g, group:default/<GROUP_TO_ROLE>, role:default/guests
--
如果定义的权限不包含与其关联的操作,请添加 use
作为策略。请参见以下示例:
--- `p, role:default/guests, kubernetes.proxy, use, allow` ---
您可以在 app-config.yaml
文件中定义 policy.csv
文件路径:
permission: enabled: true rbac: policies-csv-file: /some/path/rbac-policy.csv
您可以使用可选配置值来启用重新载入 CSV 文件,而无需重启 Developer Hub 实例。
在 app-config.yaml
文件中设置 policyFileReload
选项的值:
# ... permission: enabled: true rbac: policies-csv-file: /some/path/rbac-policy.csv policyFileReload: true # ...
2.1.2.1. 将 policy.csv
文件挂载到 Developer Hub Helm Chart 中
当使用 Helm Chart 部署 Red Hat Developer Hub 时,您必须通过将 policy.csv
文件挂载到 Developer Hub Helm Chart 来定义 policy.csv 文件。
您可以通过创建 configMap
并挂载它,将 policy.csv
文件添加到 Developer Hub Helm Chart 中。
先决条件
- 使用 OpenShift Container Platform Web 控制台登录到 OpenShift Container Platform 帐户。
- Red Hat Developer Hub 使用 Helm Chart 安装并进行部署。
流程
在 OpenShift Container Platform 中,创建一个 ConfigMap 来保存策略,如下例所示:
ConfigMap
示例kind: ConfigMap apiVersion: v1 metadata: name: rbac-policy namespace: rhdh data: rbac-policy.csv: | p, role:default/guests, catalog-entity, read, allow p, role:default/guests, catalog.entity.create, create, allow g, user:default/<YOUR_USER>, role:default/guests
-
在 Developer Hub Helm Chart 中,进入 Root Schema
Backstage chart schema Backstage parameters Backstage container additional volume mount。 选择 Add Backstage 容器附加卷挂载 并添加以下值:
-
mountPath:
opt/app-root/src/rbac
-
名称 :
rbac-policy
-
mountPath:
将 RBAC 策略添加到 Developer Hub Helm Chart 中的 Backstage 容器 附加卷:
-
名称 :
rbac-policy
configMap
-
defaultMode:
420
-
名称 :
rbac-policy
-
defaultMode:
-
名称 :
更新
app-config.yaml
文件中的策略路径,如下所示:app-config.yaml
文件示例permission: enabled: true rbac: policies-csv-file: ./rbac/rbac-policy.csv