4.2. 基于角色的访问控制(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 的 Home 页面中,您可以进入 Network 选项卡并搜索 query?term= network 调用。或者,您可以进入 Catalog 页面,再选择带有 entity-facets 的任何网络调用来获取 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 和 username)是附加到基本 URL 中的 URI,以访问对应的资源。
/api/permission/policies/[kind]/[namespace]/[name] 端点的请求 URL 示例:
http://localhost:7007/api/permission/policies/user/default/johndoe
如果至少有一个权限分配给 user:default/johndoe,则前面提到的示例请求 URL 会返回带有有效授权令牌的 GET 响应中的结果。但是,如果只为角色分配权限,则示例请求 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 状态代码来返回响应:
-
200OK :请求成功。 -
201created :请求成功创建新资源。 -
204no Content: 请求成功,但响应有效负载中没有发送额外内容。 -
400bad Request: input error with the request -
401未授权:缺少所请求资源的有效身份验证 -
403forbidden:拒绝授权请求 -
404not Found:无法找到请求的资源 -
409冲突:请求与当前状态和目标资源冲突
4.2.1. 使用 REST 客户端或 curl 实用程序通过 RBAC REST API 发送请求 复制链接链接已复制到粘贴板!
RBAC REST API 可让您在不使用用户界面的情况下与 Developer Hub 中的权限策略和角色交互。您可以使用任何 REST 客户端或 curl 实用程序发送 RBAC REST API 请求。
先决条件
- Red Hat Developer Hub 已安装并运行。有关安装 Red Hat Developer Hub 的更多信息,请参阅 第 2 章 使用 Helm Chart 安装 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/jsonAuthorization: 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/policies" -d '{"entityReference":"role:default/test", "permission": "catalog-entity", "policy": "read", "effect":"allow"}' -H "Content-Type: application/json" -H "Authorization: Bearer $token" -v- 执行请求并检查响应。
4.2.2. 支持的 RBAC REST API 端点 复制链接链接已复制到粘贴板!
RBAC REST API 提供了以下端点,以管理 Developer Hub 中的权限策略和角色,并检索有关策略和角色的信息。
4.2.2.1. 权限策略 复制链接链接已复制到粘贴板!
RBAC REST API 支持以下端点来管理 Red Hat Developer Hub 中的权限策略。
- [GET] /api/permission/policies
返回所有用户的权限策略列表。
响应示例(JSON)
[ { "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "read", "effect": "allow" }, { "entityReference": "role:default/test", "permission": "catalog.entity.create", "policy": "use", "effect": "allow" }, ]- [GET] /api/permission/policies/{kind}/{namespace}/{name}
返回与指定实体引用相关的权限策略。
Expand 表 4.1. 请求参数 名称 描述 类型 要求 kind实体的类型
字符串
必填
namespace实体的命名空间
字符串
必填
name与实体相关的用户名
字符串
必填
响应示例(JSON)
[ { "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "read", "effect": "allow" }, { "entityReference": "role:default/test", "permission": "catalog.entity.create", "policy": "use", "effect": "allow" } ]- [POST] /api/permission/policies
为指定实体创建权限策略。
Expand 表 4.2. 请求参数 名称 描述 类型 要求 entityReference包括命名空间和名称的实体的引用值
字符串
必填
权限权限类型
字符串
必填
policy权限的读取或写入策略
字符串
必填
effect指明允许策略
字符串
必填
请求正文(JSON)示例
{ "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "read", "effect": "allow" }响应示例
201 Created- [PUT] /api/permission/policies/{kind}/{namespace}/{name}
更新指定实体的权限策略。
请求参数
请求正文包含
oldPolicy和newPolicy对象:Expand Name 描述 类型 要求 权限权限类型
字符串
必填
policy权限的读取或写入策略
字符串
必填
effect指明允许策略
字符串
必填
请求正文(JSON)示例
{ "oldPolicy": { "permission": "catalog-entity", "policy": "read", "effect": "deny" }, "newPolicy": { "permission": "policy-entity", "policy": "read", "effect": "allow" } }响应示例
200- [DELETE] /api/permission/policies/{kind}/{namespace}/{name}?permission={value1}&policy={value2}&effect={value3}
删除添加到指定实体的权限策略。
Expand 表 4.3. 请求参数 名称 描述 类型 要求 kind实体的类型
字符串
必填
namespace实体的命名空间
字符串
必填
name与实体相关的用户名
字符串
必填
权限权限类型
字符串
必填
policy权限的读取或写入策略
字符串
必填
effect指明允许策略
字符串
必填
响应示例
204 No Content- [GET] /api/permission/plugins/policies
返回所有静态插件的权限策略。
响应示例(JSON)
[ { "pluginId": "catalog", "policies": [ { "permission": "catalog-entity", "policy": "read" }, { "permission": "catalog.entity.create", "policy": "create" }, { "permission": "catalog-entity", "policy": "delete" }, { "permission": "catalog-entity", "policy": "update" }, { "permission": "catalog.location.read", "policy": "read" }, { "permission": "catalog.location.create", "policy": "create" }, { "permission": "catalog.location.delete", "policy": "delete" } ] }, ... ]
4.2.2.2. 角色 复制链接链接已复制到粘贴板!
RBAC REST API 支持以下端点来管理 Red Hat Developer Hub 中的角色。
- [GET] /api/permission/roles
返回 Developer Hub 中的所有角色。
响应示例(JSON)
[ { "memberReferences": ["user:default/pataknight"], "name": "role:default/guests" }, { "memberReferences": [ "group:default/janus-authors", "user:default/matt" ], "name": "role:default/rbac_admin" } ]- [GET] /api/permission/roles/{kind}/{namespace}/{name}
在 Developer Hub 中创建角色。
Expand 表 4.4. 请求参数 名称 描述 类型 要求 正文(body)memberReferences、组、namespace,并命名要创建的新角色。请求正文
必填
请求正文(JSON)示例
{ "memberReferences": ["group:default/test"], "name": "role:default/test_admin" }响应示例
201 Created- [PUT] /api/permission/roles/{kind}/{namespace}/{name}
为 Developer Hub
中的角色更新memberReferences、类型、命名空间或名称。请求参数
请求正文包含
oldRole和newRole对象:Expand Name 描述 类型 要求 正文(body)memberReferences、组、namespace,并命名要创建的新角色。请求正文
必填
请求正文(JSON)示例
{ "oldRole": { "memberReferences": ["group:default/test"], "name": "role:default/test_admin" }, "newRole": { "memberReferences": ["group:default/test", "user:default/test2"], "name": "role:default/test_admin" } }响应示例
200 OK- [DELETE] /api/permission/roles/{kind}/{namespace}/{name}?memberReferences=<VALUE>
从 Developer Hub 中的角色中删除指定的用户或组。
Expand 表 4.5. 请求参数 名称 描述 类型 要求 kind实体的类型
字符串
必填
namespace实体的命名空间
字符串
必填
name与实体相关的用户名
字符串
必填
memberReferences关联的组信息
字符串
必填
响应示例
204- [DELETE] /api/permission/roles/{kind}/{namespace}/{name}
从 Developer Hub 中删除指定的角色。
Expand 表 4.6. 请求参数 名称 描述 类型 要求 kind实体的类型
字符串
必填
namespace实体的命名空间
字符串
必填
name与实体相关的用户名
字符串
必填
响应示例
204