第 5 章 基于角色的访问控制(RBAC) REST API
Red Hat Developer Hub 提供 RBAC REST API,可用于管理 Developer Hub 中的权限和角色。此 API 支持您促进和自动维护 Developer Hub 权限策略和角色。
使用 RBAC REST API,您可以执行以下操作:
- 检索有关所有权限策略或特定权限策略或角色的信息
- 创建、更新或删除权限策略或角色
- 检索有关静态插件的权限策略信息
RBAC REST API 需要以下组件:
- 授权
RBAC REST API 需要允许用户角色的 Bearer 令牌授权。出于开发目的,您可以在浏览器中访问 Web 控制台。当您在网络请求列表中刷新令牌请求时,您可以在响应 JSON 中找到令牌。
Authorization: Bearer $token
例如,在 Developer Hub Homepage 中,导航到 Network 选项卡并搜索
query?term=
网络调用。或者,您也可以前往 Catalog 页面,再选择任何 Catalog API 网络调用来获取 Bearer 令牌。- HTTP 方法
RBAC REST API 支持以下 API 请求的 HTTP 方法:
-
GET
:从指定的资源端点检索指定信息 -
POST
:创建或更新资源 -
PUT
:更新资源 -
DELETE
:删除资源
-
- 基本 URL
-
RBAC REST API 请求的基本 URL 是
http://SERVER:PORT/api/permission/policies
,如http://localhost:7007/api/permission/policies。
- Endpoints
RBAC REST API 端点(如
/api/permission/policies/[kind]/[namespace]/[name
])用于指定kind
、namespace
和name
,是附加到基本 URL 的 URI,以访问对应的资源。/api/permission/policies/[kind]/[namespace]/[name]
端点的请求 URL 示例:http://localhost:7007/api/permission/policies/user/default/johndoe
注意如果至少为一个权限分配给
user:default/johndoe
,则前面提到的示例请求 URL 如果以有效授权令牌在GET
响应中发送,则前面提到的示例请求 URL 会返回结果。但是,如果权限仅分配给角色,则示例请求 URL 不会返回输出。- 请求数据
RBAC REST API 中的 HTTP
POST
请求可能需要带有与请求相关的数据的 JSON 请求正文。http://localhost:7007/api/permission/policies
的POST
请求 URL 和 JSON 请求正文数据示例:{ "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "delete", "effect": "allow" }
- HTTP 状态代码
RBAC REST API 支持以下 HTTP 状态代码来返回作为响应:
-
200
OK :请求成功。 -
201
created :请求会导致成功创建新资源。 -
204
no Content: 请求成功,但没有要在响应有效负载中发送的额外内容。 -
400
bad Request: 输入错误以及请求 -
401
未授权:请求的资源缺少有效的身份验证 -
403
forbidden: 禁止授权请求 -
404
not Found: could not find requested resource -
409
冲突:请求与当前状态和目标资源冲突
-
- Source
使用 RBAC 插件创建的每个权限策略和角色都与源关联,以维护插件中的数据一致性。您可以根据以下指定源信息操作权限策略和角色:
- CSV 文件
- 配置文件
- REST API
- Legacy
管理源自 CSV 文件和 REST API 的角色和权限策略涉及根据其初始源信息直接修改。
配置文件与 RBAC 插件提供的默认
role:default/rbac_admin
角色相关。默认角色具有创建、读取、更新和删除权限策略或角色以及读取目录实体的权限。注意如果您的管理要求默认权限不足,您可以创建具有所需权限策略的自定义 admin 角色。
传统源适用于在 RBAC 后端插件版本
2.1.3
之前定义的策略和角色,并且是源位置选项中最严格的限制。您必须更新旧源中的权限和角色,以使用 REST API 或 CSV 文件源。您可以使用
GET
请求来查询角色和策略,并根据需要确定源信息。
5.1. 使用 REST 客户端或 curl 工具使用 RBAC REST API 发送请求
RBAC REST API 可让您与 Developer Hub 中的权限策略和角色交互,而无需使用用户界面。您可以使用任何 REST 客户端或 curl 实用程序发送 RBAC REST API 请求。
先决条件
- Red Hat Developer Hub 已安装并运行。
有关安装 Red Hat Developer Hub 的更多信息,请参阅使用 Helm Chart 在 OpenShift Container Platform 上安装 Red Hat Developer Hub。
- 您可以访问 Developer Hub。
流程
识别您要向发送请求的相关 API 端点,如
POST /api/permission/policies
。根据您的用例调整任何请求详情。对于 REST 客户端 :
- Authorization :从 web 控制台输入生成的令牌。
-
HTTP 方法:设置为
POST
。 -
URL:输入 RBAC REST API 基本 URL 和端点,如
http://localhost:7007/api/permission/policies
。
对于 curl 工具 :
-
-x
:设置为POST
-
h :设置以下标头:content-type: application/json
Authorization: Bearer $token
$token
是浏览器中从 Web 控制台请求的令牌。-
URL :输入以下 RBAC REST API 基本 URL 端点,如
http://localhost:7007/api/permission/policies
-
-d
:添加请求 JSON 正文
请求示例 :
curl -X POST "http://localhost:7007/api/permission/roles" -d '{"memberReferences": ["group:default/example"], "name": "role:default/test", "metadata": { "description": "This is a test role" } }' -H "Content-Type: application/json" -H "Authorization: Bearer $token" -v
curl -X POST "http://localhost:7007/api/permission/policies" -d '[{"entityReference":"role:default/test", "permission": "catalog-entity", "policy": "read", "effect":"allow"}]' -H "Content-Type: application/json" -H "Authorization: Bearer $token" -v
curl -X POST "http://localhost:7007/api/permission/roles/conditions" -d '{"result": "CONDITIONAL", "roleEntityRef": "role:default/test", "pluginId": "catalog", "resourceType": "catalog-entity", "permissionMapping": ["read"], "conditions": {"rule": {"rule": "IS_ENTITY_OWNER", "resourceType": "catalog-entity", "params": {"claims": ["group:default/janus-authors"]}}}' -H "Content-Type: application/json" -H "Authorization: Bearer $token" -v
- 执行请求并检查响应。