第 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 ])用于指定 kindnamespacename,是附加到基本 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/policiesPOST 请求 URL 和 JSON 请求正文数据示例:

{
    "entityReference": "role:default/test",
    "permission": "catalog-entity",
    "policy": "delete",
    "effect": "allow"
}
Copy to Clipboard Toggle word wrap
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 请求来查询角色和策略,并根据需要确定源信息。

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。

流程

  1. 识别您要向发送请求的相关 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

  2. 执行请求并检查响应。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat