授权
在 Red Hat Developer Hub 中使用基于角色的访问控制(RBAC)配置授权
摘要
前言 复制链接链接已复制到粘贴板!
管理员可以授权用户执行操作,并定义用户在 Developer Hub 中执行的操作。
基于角色的访问控制(RBAC)是一种安全概念,通过指定系统用户与系统中资源可以执行的操作之间的映射来定义如何控制对系统中的资源的访问。您可以使用 RBAC 定义具有特定权限的角色,然后将角色分配给用户和组。
Developer Hub 上的 RBAC 基于 Permissions 框架构建,该框架在代码中定义 RBAC 策略。您可以使用 Developer Hub RBAC 功能在代码中定义策略,而不是使用基于 CSV 的简单格式以声明方式定义策略。您可以使用 Developer Hub Web 界面或 REST API 来定义策略,而不是直接编辑 CSV。
管理员可以执行以下步骤在 Developer Hub 中定义授权:
- 启用 RBAC 功能,并授予授权用户对该功能的访问权限。
通过组合以下方法来定义角色和策略:
- Developer Hub 策略管理员使用 Developer Hub Web 界面或 REST API。
- Developer Hub 管理员编辑主 Developer Hub 配置文件。
- Developer Hub 管理员编辑外部文件。
第 1 章 启用并提供基于角色的访问控制(RBAC)功能的访问权限 复制链接链接已复制到粘贴板!
基于角色的访问控制(RBAC)功能默认为禁用。启用 RBAC 插件并声明策略管理员以使用 RBAC 功能启动。
Developer Hub 中用户和组的权限策略由权限策略管理员管理。只有权限策略管理员才能访问基于角色的访问控制 REST API。
先决条件
- 您已 添加了自定义 Developer Hub 应用程序配置,并具有修改它所需的权限。
- 您已 启用了身份验证提供程序。
流程
RBAC 插件已安装,但默认禁用。要启用
./dynamic-plugins/dist/backstage-community-plugin-rbac插件,请使用以下内容编辑dynamic-plugins.yaml:dynamic-plugins.yaml片段plugins: - package: ./dynamic-plugins/dist/backstage-community-plugin-rbac disabled: falseplugins: - package: ./dynamic-plugins/dist/backstage-community-plugin-rbac disabled: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 声明策略管理员,以启用选择数量的经过身份验证的用户,以通过 REST API 或 Web UI 配置 RBAC 策略,而不是直接修改 CSV 文件。权限可以在
my-rhdh-app-config配置映射中引用的单独 CSV 文件中指定,也可以使用 REST API 或 Web UI 创建权限。要将 < your_policy_administrator_name> 等用户声明为策略管理员,请编辑自定义 Developer Hub ConfigMap,如
app-config-rhdh,并将以下代码添加到app-config.yaml内容中:app-config.yaml片段Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要让 Developer Hub Web UI 显示安装插件提供的可用权限,请将对应的插件 ID 添加到 自定义
app-config.yamlDeveloper Hub 配置文件 中。要在 RBAC UI 中显示可用权限,请编辑自定义 Developer Hub ConfigMap,如
app-config-rhdh,并将以下代码添加到app-config.yaml内容中:app-config.yaml片段Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 从现有的 Red Hat Developer Hub 会话注销,并使用声明的策略管理员帐户再次登录。
启用 RBAC 后,大多数功能都会默认禁用。
- 导航到 RHDH 中的 Catalog 页面。Create 按钮不可见。您无法创建新组件。
- 导航到 API 页面。Register 按钮不可见。
后续步骤
- 明确启用对 Developer Hub 中资源的权限。
第 2 章 确定权限策略和角色配置源 复制链接链接已复制到粘贴板!
您可以使用不同源配置 Red Hat Developer Hub 策略和角色。为了保持数据一致性,Developer Hub 将每个权限策略和角色与一个唯一源相关联。您只能使用这个源来更改资源。
可用的源有:
- 配置文件
在 Developer Hub
app-config.yaml配置文件中配置角色和策略,以便实例 声明您的策略管理员。配置文件与 RBAC 插件提供的默认
role:default/rbac_admin角色相关。默认角色具有创建、读取、更新、删除权限策略或角色以及读取目录实体的权限。注意如果您的管理要求默认权限不足,您可以创建具有所需权限策略的自定义 admin 角色。
- REST API
- 使用 Developer Hub Web UI 或使用 REST API 配置角色和策略。
- CSV 文件
- 使用外部 CSV 文件配置角色和策略。
- Legacy
传统源适用于在 RBAC 后端插件版本
2.1.3之前定义的策略和角色,并且是源位置选项中最严格的限制。重要使用 REST API 或 CSV 文件源将使用旧源的权限和角色替换为权限。
流程
-
要确定角色或策略的来源,请使用
GET请求。
第 3 章 使用 Red Hat Developer Hub Web UI 管理基于角色的访问控制(RBAC) 复制链接链接已复制到粘贴板!
策略管理员可以使用 Developer Hub Web 界面(Web UI)为单独的用户或组分配特定的角色和权限。分配角色可确保在 Developer Hub 中控制资源和功能的访问。
使用 Developer Hub 中的策略管理员角色,您可以为用户和组分配权限。此角色允许您使用 Developer Hub Web UI 查看、创建、修改和删除角色。
3.1. 在 Red Hat Developer Hub Web UI 中创建角色 复制链接链接已复制到粘贴板!
您可以使用 Web UI 在 Red Hat Developer Hub 中创建角色。
流程
进入 Developer Hub 中边栏底部的 管理。
此时会出现 RBAC 选项卡,在 Developer Hub 中显示所有创建的角色。
- (可选)点击任何角色查看 OVERVIEW 页面上的角色信息。
- 单击 CREATE 以创建角色。
- 在给定字段中输入角色的名称和描述,然后单击 NEXT。
- 使用搜索字段添加用户和组,然后单击 NEXT。
- 从 Add permission policies 部分中的下拉列表中,选择 Plugin 和 Permission。
- 选择或清除您要在 Add permissions policies 部分中设置的 Policy,然后单击 NEXT。
- 查看 Review and create 部分中的添加的信息。
- 点 CREATE。
验证
创建的角色会出现在 RBAC 选项卡中可用的列表中。
3.2. 在 Red Hat Developer Hub Web UI 中编辑角色 复制链接链接已复制到粘贴板!
您可以使用 Web UI 在 Red Hat Developer Hub 中编辑角色。
从 policy.csv 或 ConfigMap 文件生成的策略无法使用 Developer Hub Web UI 编辑或删除。
先决条件
- 您已启用了 RBAC,在 Developer Hub 中有一个策略管理员角色,并添加了带有权限 的插件。
- 您要编辑的角色在 Developer Hub 中创建。
流程
进入 Developer Hub 中边栏底部的 管理。
此时会出现 RBAC 选项卡,在 Developer Hub 中显示所有创建的角色。
- (可选)点击任何角色查看 OVERVIEW 页面上的角色信息。
- 选择您要编辑的角色的编辑图标。
- 编辑角色的详细信息,如名称、描述、用户和组以及权限策略,然后单击 NEXT。
- 检查角色的编辑详细信息,然后单击 SAVE。
编辑角色后,您可以查看角色的 OVERVIEW 页面上 角色的 编辑详情。您还可以使用 OVERVIEW 页面中的编辑图标来编辑角色的用户和组或权限。
3.3. 删除 Red Hat Developer Hub Web UI 中的角色 复制链接链接已复制到粘贴板!
您可以使用 Web UI 删除 Red Hat Developer Hub 中的角色。
从 policy.csv 或 ConfigMap 文件生成的策略无法使用 Developer Hub Web UI 编辑或删除。
先决条件
- 您已启用了 RBAC,并在 Developer Hub 中有一个策略管理员角色。
- 要删除的角色在 Developer Hub 中创建。
流程
进入 Developer Hub 中边栏底部的 管理。
此时会出现 RBAC 选项卡,在 Developer Hub 中显示所有创建的角色。
- (可选)点击任何角色查看 OVERVIEW 页面上的角色信息。
从您要删除的角色的 Actions 列中选择 delete 图标。
删除此角色? 弹出会出现在屏幕上。
- 点 DELETE。
第 4 章 使用 REST API 管理授权 复制链接链接已复制到粘贴板!
要自动维护 Red Hat Developer Hub 权限策略和角色,您可以使用 Developer Hub 基于角色的访问控制(RBAC) REST API。
您可以使用 REST API 执行以下操作:
检索有关以下相关信息:
- 所有权限策略
- 特定权限策略
- 特定角色
- 静态插件权限策略
创建、更新或删除:
- 权限策略
- 角色
4.1. 使用 curl 工具将请求发送到 RBAC REST API 复制链接链接已复制到粘贴板!
您可以使用 curl 实用程序发送 RBAC REST API 请求。
先决条件
流程
查找 Bearer 令牌以向 REST API 进行身份验证。
- 在您的浏览器中,打开 Web 控制台 网络 选项卡。
- 在主屏幕中,重新载入 Developer Hub Homepage。
-
在 Web 控制台 网络 选项卡中,搜索
query?term=网络调用。 - 将 令牌 保存到响应 JSON 中,以获取后续步骤。
在终端中运行 curl 命令并查看响应:
GET或DELETE请求curl -v \ -H "Authorization: Bearer <token>" \ -X <method> "https://<my_developer_hub_url>/<endpoint>" \
curl -v \ -H "Authorization: Bearer <token>" \ -X <method> "https://<my_developer_hub_url>/<endpoint>" \Copy to Clipboard Copied! Toggle word wrap Toggle overflow 需要 JSON 正文数据的
POST或PUT请求curl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>" \ -X POST "https://<my_developer_hub_url>/<endpoint>" \ -d <body>
curl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>" \ -X POST "https://<my_developer_hub_url>/<endpoint>" \ -d <body>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建角色的请求示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新角色的请求示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建权限策略的请求示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新权限策略的请求示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建条件的请求示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新条件的请求示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
查看返回的 HTTP 状态代码:
200OK- 请求成功。
201created- 请求会导致成功创建新资源。
204无内容- 请求成功,响应有效负载没有更多内容。
400错误请求- 输入错误以及请求。
401未授权- 缺少请求资源的有效身份验证。
403Forbidden- 退款以授权请求。
404not Found- 无法找到所请求的资源。
409冲突- 请求与当前状态和目标资源冲突。
4.2. 使用 REST 客户端将请求发送到 RBAC REST API 复制链接链接已复制到粘贴板!
您可以使用任何 REST 客户端发送 RBAC REST API 请求。
先决条件
流程
查找 Bearer 令牌以向 REST API 进行身份验证。
- 在您的浏览器中,打开 Web 控制台 网络 选项卡。
- 在主屏幕中,重新载入 Developer Hub Homepage。
-
在 Web 控制台 网络 选项卡中,搜索
query?term=网络调用。 - 将 令牌 保存到响应 JSON 中,以获取后续步骤。
在 REST 客户端中,使用以下参数运行命令并查看响应:
4.3. 支持的 RBAC REST API 端点 复制链接链接已复制到粘贴板!
RBAC REST API 提供了在 Developer Hub 中管理角色、权限和条件策略的端点,并检索有关角色和策略的信息。
4.3.1. 角色 复制链接链接已复制到粘贴板!
RBAC REST API 支持以下端点来管理 Red Hat Developer Hub 中的角色。
- [GET] /api/permission/roles
返回 Developer Hub 中的所有角色。
响应示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/roles/<kind>/<namespace>/<name>
返回 Developer Hub 中单个角色的信息。
响应示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [POST] /api/permission/roles/<kind>/<namespace>/<name>
在 Developer Hub 中创建角色。
Expand 表 4.1. 请求参数 名称 描述 类型 存在 正文(body)memberReferences、组、namespace并将新角色命名为要创建的新角色。请求正文
必填
请求正文示例(JSON)
{ "memberReferences": ["group:default/test"], "name": "role:default/test_admin" }{ "memberReferences": ["group:default/test"], "name": "role:default/test_admin" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
201 Created
201 CreatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [PUT] /api/permission/roles/ <kind> / <namespace> / <name>
为 Developer Hub 中的角色更新
memberReferences、类型、namespace或name。请求参数
请求正文包含
oldRole和newRole对象:Expand Name 描述 类型 存在 正文(body)memberReferences、组、namespace并将新角色命名为要创建的新角色。请求正文
必填
请求正文示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
200 OK
200 OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/roles/<kind>/<namespace>/<name>?memberReferences=<VALUE>
从 Developer Hub 中的角色中删除指定的用户或组。
Expand 表 4.2. 请求参数 名称 描述 类型 存在 kind实体的类型
字符串
必填
namespace实体的命名空间
字符串
必填
名称实体的名称
字符串
必填
memberReferences关联的组信息
字符串
必填
响应示例
204
204Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/roles/<kind>/<namespace>/<name>
从 Developer Hub 删除指定的角色。
Expand 表 4.3. 请求参数 名称 描述 类型 存在 kind实体的类型
字符串
必填
namespace实体的命名空间
字符串
必填
名称实体的名称
字符串
必填
响应示例
204
204Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2. 权限策略 复制链接链接已复制到粘贴板!
RBAC REST API 支持以下端点来管理 Red Hat Developer Hub 中的权限策略。
- [GET] /api/permission/policies
返回所有用户的权限策略列表。
响应示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/policies/<kind>/<namespace>/<name>
返回与指定实体引用相关的权限策略。
Expand 表 4.4. 请求参数 名称 描述 类型 存在 kind实体的类型
字符串
必填
namespace实体的命名空间
字符串
必填
名称与实体相关的名称
字符串
必填
响应示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [POST] /api/permission/policies
为指定实体创建权限策略。
Expand 表 4.5. 请求参数 名称 描述 类型 存在 entityReference实体的引用值,包括
类型、namespace和name字符串
必填
权限特定插件、资源类型或名称的权限
字符串
必填
policy权限的策略操作,如创建、
读取、更新、删除或使用字符串
必填
effect表示允许或不允许策略
字符串
必填
请求正文示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
201 Created
201 CreatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [PUT] /api/permission/policies/<kind>/<namespace>/<name>
更新指定实体的权限策略。
请求参数
请求正文包含
oldPolicy和newPolicy对象:Expand Name 描述 类型 存在 权限特定插件、资源类型或名称的权限
字符串
必填
policy权限的策略操作,如创建、
读取、更新、删除或使用字符串
必填
effect表示允许或不允许策略
字符串
必填
请求正文示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
200
200Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/policies/ <kind> / <namespace> / <name > ?permission={value1}&policy={value2}&effect={value3}
删除添加到指定实体的权限策略。
Expand 表 4.6. 请求参数 名称 描述 类型 存在 kind实体的类型
字符串
必填
namespace实体的命名空间
字符串
必填
名称与实体相关的名称
字符串
必填
权限特定插件、资源类型或名称的权限
字符串
必填
policy权限的策略操作,如创建、
读取、更新、删除或使用字符串
必填
effect表示允许或不允许策略
字符串
必填
响应示例
204 No Content
204 No ContentCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/policies/<kind>/<namespace>/<name>
删除添加到指定实体的所有权限策略。
Expand 表 4.7. 请求参数 名称 描述 类型 存在 kind实体的类型
字符串
必填
namespace实体的命名空间
字符串
必填
名称与实体相关的名称
字符串
必填
响应示例
204 No Content
204 No ContentCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/plugins/policies
返回所有静态插件的权限策略。
响应示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 条件策略 复制链接链接已复制到粘贴板!
RBAC REST API 支持以下端点来管理 Red Hat Developer Hub 中的条件策略。
- [GET] /api/permission/plugins/condition-rules
为 Developer Hub 中启用的可用插件返回可用条件规则参数模式。
响应示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/roles/conditions/:id
返回指定 ID 的条件。
响应示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/roles/conditions
返回所有角色的所有条件列表。
响应示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [POST] /api/permission/roles/conditions
为指定角色创建条件策略。
Expand 表 4.8. 请求参数 名称 描述 类型 存在 result始终值为
CONDITIONAL字符串
必填
roleEntityRef对 RBAC 角色的字符串实体引用,如
role:default/dev字符串
必填
pluginId对应的插件 ID,如
目录字符串
必填
permissionMapping数组权限操作,如
['read', 'update', 'delete']字符串数组
必填
resourceType插件提供的资源类型,如
catalog-entity字符串
必填
conditions带有参数或数组参数的条件 JSON,按条件加入
JSON
必填
名称角色的名称
字符串
必填
metadata.description角色的描述
字符串
选填
请求正文示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例(JSON)
{ "id": 1 }{ "id": 1 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [PUT] /permission/roles/conditions/:id
更新指定 ID 的条件策略。
Expand 表 4.9. 请求参数 名称 描述 类型 存在 result始终值为
CONDITIONAL字符串
必填
roleEntityRef对 RBAC 角色的字符串实体引用,如
role:default/dev字符串
必填
pluginId对应的插件 ID,如
目录字符串
必填
permissionMapping数组权限操作,如
['read', 'update', 'delete']字符串数组
必填
resourceType插件提供的资源类型,如
catalog-entity字符串
必填
conditions带有参数或数组参数的条件 JSON,按条件加入
JSON
必填
名称角色的名称
字符串
必填
metadata.description角色的描述
字符串
选填
请求正文示例(JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
200
200Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/roles/conditions/:id
删除指定 ID 的条件策略。
响应示例
204
204Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.4. 用户统计 复制链接链接已复制到粘贴板!
licensed-users-info-backend 插件公开各种 REST API 端点,以检索与登录用户相关的数据。
licensed-users-info-backend 插件不需要额外的配置。如果启用了 RBAC 后端插件,则必须分配管理员角色来访问端点,因为端点由 policy.entity.read 权限保护。
用户统计端点的基本 URL 是 http://SERVER:PORT/api/licensed-users-info,如 http://localhost:7007/api/licensed-users-info。
- [GET] /users/quantity
返回登录用户总数。
请求示例
curl -X GET "http://localhost:7007/api/licensed-users-info/users/quantity" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $token"
curl -X GET "http://localhost:7007/api/licensed-users-info/users/quantity" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $token"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
{ "quantity": "2" }{ "quantity": "2" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /users
返回登录的用户列表及其详情。
请求示例
curl -X GET "http://localhost:7007/api/licensed-users-info/users" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $token"
curl -X GET "http://localhost:7007/api/licensed-users-info/users" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $token"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /users
返回 CSV 格式的登录用户列表。
请求示例
curl -X GET "http://localhost:7007/api/licensed-users-info/users" \ -H "Content-Type: text/csv" \ -H "Authorization: Bearer $token"
curl -X GET "http://localhost:7007/api/licensed-users-info/users" \ -H "Content-Type: text/csv" \ -H "Authorization: Bearer $token"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
userEntityRef,displayName,email,lastTimeLogin user:default/dev,John Leavy,dev@redhat.com,"Thu, 22 Aug 2024 16:27:41 GMT"
userEntityRef,displayName,email,lastTimeLogin user:default/dev,John Leavy,dev@redhat.com,"Thu, 22 Aug 2024 16:27:41 GMT"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 5 章 使用外部文件管理授权 复制链接链接已复制到粘贴板!
要自动化 Red Hat Developer Hub 维护,您可以在启动 Developer Hub 前在外部文件中配置权限和角色。
5.1. 使用 Operator 在外部文件中定义授权 复制链接链接已复制到粘贴板!
要自动化 Red Hat Developer Hub 维护,您可以在启动 Developer Hub 前在外部文件中定义权限和角色。您需要准备文件,将其上传到 OpenShift Container Platform 项目中,并将 Developer Hub 配置为使用外部文件。
先决条件
流程
使用以下格式在
rbac-policies.csvCSV 文件中定义您的策略:定义角色权限:
p, <role_entity_reference>, <permission>, <action>, <allow_or_deny>
p, <role_entity_reference>, <permission>, <action>, <allow_or_deny>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <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>
g, <group_or_user>, <role_entity_reference>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <group_or_user>
组,如
user:default/mygroup或 user,例如:user:default/myuser。Sample
rbac-policies.csvp, 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
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/guestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用以下格式在
rbac-conditional-policies.yamlYAML 文件中定义条件策略:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请参阅: 条件策略参考。
将
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$ oc create configmap rbac-policies \ --from-file=rbac-policies.csv \ --from-file=rbac-conditional-policies.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
Backstage自定义资源,以挂载来自rbac-policies配置映射的 Developer Hub 文件系统:Backstage自定义资源片段Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 Developer Hub
app-config.yaml配置文件,以使用rbac-policies.csv和rbac-conditional-policies.yaml外部文件:app-config.yaml文件片段Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. 使用 Helm 在外部文件中定义授权 复制链接链接已复制到粘贴板!
要自动化 Red Hat Developer Hub 维护,您可以在启动 Developer Hub 前在外部文件中定义权限和角色。您需要准备文件,将其上传到 OpenShift Container Platform 项目中,并将 Developer Hub 配置为使用外部文件。
先决条件
流程
使用以下格式在
rbac-policies.csvCSV 文件中定义您的策略:定义角色权限:
p, <role_entity_reference>, <permission>, <action>, <allow_or_deny>
p, <role_entity_reference>, <permission>, <action>, <allow_or_deny>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <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>
g, <group_or_user>, <role_entity_reference>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <group_or_user>
组,如
user:default/mygroup或 user,例如:user:default/myuser。Sample
rbac-policies.csvp, 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
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/guestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用以下格式在
rbac-conditional-policies.yamlYAML 文件中定义条件策略:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请参阅: 条件策略参考。
将
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$ oc create configmap rbac-policies \ --from-file=rbac-policies.csv \ --from-file=rbac-conditional-policies.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 Developer Hub
BackstageHelm 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/rbac - Name
-
rbac-policies
将 RBAC 策略添加到 Developer Hub Helm Chart 中的 Backstage 容器 附加卷:
- 名称
-
rbac-policies - configMap
- defaultMode
-
420 - 名称
-
rbac-policies
更新 Developer Hub
app-config.yaml配置文件,以使用rbac-policies.csv和rbac-conditional-policies.yaml外部文件:app-config.yaml文件片段Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 使用 RBAC UI 配置客户机访问 复制链接链接已复制到粘贴板!
使用带有基于角色的访问控制(RBAC)前端插件的客户机访问权限,允许用户测试角色和策略创建,而无需设置和配置身份验证供应商。
不建议在生产环境中使用客户机访问。
6.1. 配置 RBAC 后端插件 复制链接链接已复制到粘贴板!
您可以通过更新 app-config.yaml 文件来启用权限框架来配置 RBAC 后端插件。
先决条件
-
您已在 Developer Hub 中安装了
@janus-idp/backstage-plugin-rbac插件。如需更多信息,请参阅配置动态插件。
流程
-
更新
app-config.yaml文件,以启用权限框架,如下所示:
app-config.yaml 文件的 pluginsWithPermission 部分默认只包含三个插件。根据需要更新 部分,使其包含任何同时包含权限的额外插件。
6.2. 设置客户端身份验证供应商 复制链接链接已复制到粘贴板!
您可以启用客户机身份验证,并将其与 RBAC frontend 插件一起使用。
先决条件
-
您已在 Developer Hub 中安装了
@janus-idp/backstage-plugin-rbac插件。如需更多信息,请参阅配置动态插件。
流程
-
在
app-config.yaml文件中,添加用户实体引用来解析和启用dangerouslyAllowOutsideDevelopment选项,如下例所示:
您可以使用 user:default/guest 作为用户实体引用,以匹配 app-config.yaml 文件的 permission.rbac.admin.users 部分下添加的用户。
第 7 章 权限策略参考 复制链接链接已复制到粘贴板!
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
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
p, role:default/myrole, catalog.entity.create, create, allow
g, user:default/myuser, role:default/myrole
Developer Hub 支持以下权限策略:
- 目录权限
- .catalog 权限
| Name | 资源类型 | policy | 描述 |
|---|---|---|---|
|
|
|
| 允许用户或角色从目录中读取 |
|
|
| 允许用户或角色创建目录实体,包括在目录中注册现有组件 | |
|
|
|
| 允许用户或角色从目录中刷新一个或多个实体 |
|
|
|
| 允许用户或角色从目录中删除单个或多个实体 |
|
|
| 允许用户或角色从目录中读取单个或多个位置 | |
|
|
| 允许用户或角色在目录中创建位置 | |
|
|
| 允许用户或角色从目录中删除位置 |
- 批量导入权限
- .bulk 导入权限
| Name | 资源类型 | policy | 描述 |
|---|---|---|---|
|
|
|
| 允许用户访问批量导入端点,如列出所有 GitHub 集成可访问的所有存储库和机构,并管理导入请求 |
- Scaffolder 权限
- .Scaffolder 权限
| Name | 资源类型 | policy | 描述 |
|---|---|---|---|
|
|
|
| 允许从模板执行操作 |
|
|
|
| 允许用户或角色从模板中读取单个或多个参数 |
|
|
|
| 允许用户或角色从模板读取单个或多个步骤 |
|
|
| 允许用户或角色触发软件模板,以创建新的构建程序任务 | |
|
|
| 允许用户或角色取消当前运行的构建程序任务 | |
|
|
| 允许用户或角色读取所有构建器任务及其关联的事件和日志 |
- RBAC 权限
- .RBAC 权限
| Name | 资源类型 | policy | 描述 |
|---|---|---|---|
|
|
|
| 允许用户或角色读权限策略和角色 |
|
|
|
| 允许用户或角色创建单个或多个权限策略和角色 |
|
|
|
| 允许用户或角色更新单个或多个权限策略和角色 |
|
|
|
| 允许用户或角色删除一个或多个权限策略和角色 |
- Kubernetes 权限
- .Kubernetes 权限
| Name | 资源类型 | policy | 描述 |
|---|---|---|---|
|
|
| 允许用户或角色访问代理端点 |
- OCM 权限
-
基本 OCM 权限只限制对集群视图的访问,但它们不会阻止访问资源视图中的 Kubernetes 集群。要获得更有效的权限,请考虑应用条件策略来限制对类型为
kubernetes-cluster的目录实体的访问。访问限制取决于授予角色的权限集合。例如,如果角色具有完整权限(读取、update和delete),则必须在permissionMapping字段中指定其所有权限。
permissionMapping 定义示例
| Name | 资源类型 | policy | 描述 |
|---|---|---|---|
|
|
| 允许用户或角色从 OCM 插件读取 | |
|
|
| 允许用户或角色读取 OCM 插件中的集群信息 |
- 拓扑权限
- .topology 权限
| Name | 资源类型 | policy | 描述 |
|---|---|---|---|
|
|
| 允许用户或角色查看拓扑插件 | |
|
|
| 允许用户或角色访问代理端点,允许用户或角色读取 RHDH 中的 pod 日志和事件 |
第 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 中条件策略的 API 端点。例如,要检索可用的条件规则,这有助于定义这些策略,您可以访问 GET [api/plugins/condition-rules] 端点。
api/plugins/condition-rules 返回条件参数 schemas,例如:
RBAC 后端 API 根据前面的条件模式构造一个条件 JSON 对象。
8.1.1. 条件策略示例 复制链接链接已复制到粘贴板!
在 Red Hat Developer Hub 中,您可以使用或没有条件定义条件策略。您可以使用以下示例根据您的用例定义条件:
- 没有条件的条件
只有用户是所有者组的成员时,请考虑没有条件显示目录的条件。要添加此条件,您可以使用目录插件模式
IS_ENTITY_OWNER,如下所示:没有条件的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上例中,唯一使用的条件参数是
claims,其中包含用户或组实体引用的列表。您可以通过添加额外的参数将前面的示例条件应用到 RBAC REST API,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 具有条件的条件
考虑条件条件,它只有在用户是所有者组成员或显示所有目录用户组的列表时才会显示目录。
要添加条件,您可以在条件中添加另一个规则作为
IS_ENTITY_KIND,如下所示:带有条件的条件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意不支持在创建过程中运行并行条件。因此,请考虑根据可用的标准定义嵌套条件策略。
嵌套条件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以通过添加额外的参数将前面的示例条件应用到 RBAC REST API,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下示例可用于 Developer Hub 插件。这些示例可帮助您确定如何定义条件策略:
为 Keycloak 插件定义的条件策略
前面的 Keycloak 插件示例可防止 role:default/developer 中的用户更新或删除在 Keycloak 插件中放入目录的用户。
在上例中,注解 keycloak.org/realm 需要 < YOUR_REALM > 的值。
为 Quay 插件定义的条件策略
前面的 Quay 插件示例可防止角色 role:default/developer 使用 Quay builder 操作。请注意,permissionMapping 包含使用 ,表示 scaffolder-action 资源类型权限没有权限策略。
有关 Red Hat Developer Hub 中权限的更多信息,请参阅 第 7 章 权限策略参考。
第 9 章 Red Hat Developer Hub 中的用户统计信息 复制链接链接已复制到粘贴板!
在 Red Hat Developer Hub 中,licensed-users-info-backend 插件使用 Web UI 或 REST API 端点提供有关已登录用户的统计信息。
licensed-users-info-backend 插件使管理员能够监控 Developer Hub 上的活跃用户数量。使用此功能,组织可以将其实际使用量与他们购买的许可证数量进行比较。另外,您还可以与红帽共享用户指标,以获得透明和准确的许可证。
licensed-users-info-backend 插件被默认启用。此插件在 Administration → RBAC 选项卡的底部启用 Download User List 链接。
9.1. 在 Red Hat Developer Hub 中下载活跃用户列表 复制链接链接已复制到粘贴板!
您可以使用 Developer Hub Web 界面下载 CSV 格式的用户列表。
先决条件
-
Red Hat Developer Hub 中必须启用 RBAC 插件(
)。@backstage-community/plugin-rbac-community/plugin-rbac-backend - 必须分配管理员角色。
流程
- 在 Red Hat Developer Hub 中,进入 Administration 并选择 RBAC 选项卡。
- 在 RBAC 页面的底部,单击 Download User List。
- 可选:在 Save as 字段中修改文件名,然后点 保存。
- 要访问下载的用户列表,请访问本地计算机上的 Downloads 文件夹并打开 CSV 文件。