5.3. 基于角色的访问控制(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/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: input error with the request
  • 401 未授权:缺少所请求资源的有效身份验证
  • 403 forbidden:拒绝授权请求
  • 404 not Found:无法找到请求的资源
  • 409 冲突:请求与当前状态和目标资源冲突

RBAC REST API 可让您在不使用用户界面的情况下与 Developer Hub 中的权限策略和角色交互。您可以使用任何 REST 客户端或 curl 实用程序发送 RBAC REST API 请求。

先决条件

流程

  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/policies" -d '{"entityReference":"role:default/test", "permission": "catalog-entity", "policy": "read", "effect":"allow"}' -H "Content-Type: application/json" -H "Authorization: Bearer $token" -v

  2. 执行请求并检查响应。

5.3.2. 支持的 RBAC REST API 端点

RBAC REST API 提供了以下端点,以管理 Developer Hub 中的权限策略和角色,并检索有关策略和角色的信息。

5.3.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"
  },
]
Copy to Clipboard Toggle word wrap

[GET] /api/permission/policies/{kind}/{namespace}/{name}

返回与指定实体引用相关的权限策略。

Expand
表 5.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"
  }
]
Copy to Clipboard Toggle word wrap

[POST] /api/permission/policies

为指定实体创建权限策略。

Expand
表 5.2. 请求参数
名称描述类型要求

entityReference

包括命名空间和名称的实体的引用值

字符串

必填

权限

权限类型

字符串

必填

policy

权限的读取或写入策略

字符串

必填

effect

指明允许策略

字符串

必填

请求正文(JSON)示例

{
    "entityReference": "role:default/test",
    "permission": "catalog-entity",
    "policy": "read",
    "effect": "allow"
}
Copy to Clipboard Toggle word wrap

响应示例

201 Created
Copy to Clipboard Toggle word wrap

[PUT] /api/permission/policies/{kind}/{namespace}/{name}

更新指定实体的权限策略。

请求参数

请求正文包含 oldPolicynewPolicy 对象:

Expand
Name描述类型要求

权限

权限类型

字符串

必填

policy

权限的读取或写入策略

字符串

必填

effect

指明允许策略

字符串

必填

请求正文(JSON)示例

{
    "oldPolicy": {
        "permission": "catalog-entity",
        "policy": "read",
        "effect": "deny"
    },
    "newPolicy": {
        "permission": "policy-entity",
        "policy": "read",
        "effect": "allow"
    }
}
Copy to Clipboard Toggle word wrap

响应示例

200
Copy to Clipboard Toggle word wrap

[DELETE] /api/permission/policies/{kind}/{namespace}/{name}?permission={value1}&policy={value2}&effect={value3}

删除添加到指定实体的权限策略。

Expand
表 5.3. 请求参数
名称描述类型要求

kind

实体的类型

字符串

必填

namespace

实体的命名空间

字符串

必填

name

与实体相关的用户名

字符串

必填

权限

权限类型

字符串

必填

policy

权限的读取或写入策略

字符串

必填

effect

指明允许策略

字符串

必填

响应示例

204 No Content
Copy to Clipboard Toggle word wrap

[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"
        }
      ]
    },
  ...
]
Copy to Clipboard Toggle word wrap

5.3.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"
  }
]
Copy to Clipboard Toggle word wrap

[GET] /api/permission/roles/{kind}/{namespace}/{name}

在 Developer Hub 中创建角色。

Expand
表 5.4. 请求参数
名称描述类型要求

正文(body)

memberReferencesnamespace,并 命名 要创建的新角色。

请求正文

必填

请求正文(JSON)示例

{
  "memberReferences": ["group:default/test"],
  "name": "role:default/test_admin"
}
Copy to Clipboard Toggle word wrap

响应示例

201 Created
Copy to Clipboard Toggle word wrap

[PUT] /api/permission/roles/{kind}/{namespace}/{name}

为 Developer Hub中的角色 更新 memberReferences、类型、命名空间或 名称

请求参数

请求正文包含 oldRolenewRole 对象:

Expand
Name描述类型要求

正文(body)

memberReferencesnamespace,并 命名 要创建的新角色。

请求正文

必填

请求正文(JSON)示例

{
  "oldRole": {
    "memberReferences": ["group:default/test"],
    "name": "role:default/test_admin"
  },
  "newRole": {
    "memberReferences": ["group:default/test", "user:default/test2"],
    "name": "role:default/test_admin"
  }
}
Copy to Clipboard Toggle word wrap

响应示例

200 OK
Copy to Clipboard Toggle word wrap

[DELETE] /api/permission/roles/{kind}/{namespace}/{name}?memberReferences=<VALUE>

从 Developer Hub 中的角色中删除指定的用户或组。

Expand
表 5.5. 请求参数
名称描述类型要求

kind

实体的类型

字符串

必填

namespace

实体的命名空间

字符串

必填

name

与实体相关的用户名

字符串

必填

memberReferences

关联的组信息

字符串

必填

响应示例

204
Copy to Clipboard Toggle word wrap

[DELETE] /api/permission/roles/{kind}/{namespace}/{name}

从 Developer Hub 中删除指定的角色。

Expand
表 5.6. 请求参数
名称描述类型要求

kind

实体的类型

字符串

必填

namespace

实体的命名空间

字符串

必填

name

与实体相关的用户名

字符串

必填

响应示例

204
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat