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)

[
  {
    "memberReferences": ["user:default/username"],
    "name": "role:default/guests"
  },
  {
    "memberReferences": [
      "group:default/groupname",
      "user:default/username"
    ],
    "name": "role:default/rbac_admin"
  }
]
Copy to Clipboard Toggle word wrap

[GET] /api/permission/roles/<kind>/<namespace>/<name>

Developer Hub の 1 つのロールに関する情報を返します。

応答例 (JSON)

[
  {
    "memberReferences": [
      "group:default/groupname",
      "user:default/username"
    ],
    "name": "role:default/rbac_admin"
  }
]
Copy to Clipboard Toggle word wrap

[POST] /api/permission/roles/<kind>/<namespace>/<name>

Developer Hub でロールを作成します。

Expand
表4.1 要求パラメーター
名前説明要否

body

作成される新しいロールの memberReferencesgroupnamespacename

リクエストの本文

必須

要求の body の例 (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 のロールの memberReferenceskindnamespace、または name を更新します。

要求パラメーター

要求の body には、oldRole オブジェクトと newRole オブジェクトが含まれています。

Expand
名前説明要否

body

作成される新しいロールの memberReferencesgroupnamespacename

リクエストの本文

必須

要求の body の例 (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
表4.2 要求パラメーター
名前説明要否

kind

エンティティーの種類

String

Required

namespace

エンティティーの namespace

String

Required

name

エンティティーの名前

String

Required

memberReferences

関連するグループの情報

String

Required

応答の例

204
Copy to Clipboard Toggle word wrap

[DELETE] /api/permission/roles/<kind>/<namespace>/<name>

Developer Hub から、指定されたロールを削除します。

Expand
表4.3 要求パラメーター
名前説明要否

kind

エンティティーの種類

String

Required

namespace

エンティティーの namespace

String

Required

name

エンティティーの名前

String

Required

応答の例

204
Copy to Clipboard Toggle word wrap

4.3.2. 権限ポリシー

RBAC REST API は、Red Hat Developer Hub で権限ポリシーを管理するために、次のエンドポイントをサポートします。

[GET] /api/permission/policies

すべてのユーザーの権限ポリシーリストを返します。

応答例 (JSON)

[
  {
    "entityReference": "role:default/test",
    "permission": "catalog-entity",
    "policy": "read",
    "effect": "allow",
    "metadata": {
      "source": "csv-file"
    }
  },
  {
    "entityReference": "role:default/test",
    "permission": "catalog.entity.create",
    "policy": "use",
    "effect": "allow",
    "metadata": {
      "source": "csv-file"
    }
  },
]
Copy to Clipboard Toggle word wrap

[GET] /api/permission/policies/<kind>/<namespace>/<name>

指定されたエンティティー参照に関連する権限ポリシーを返します。

Expand
表4.4 要求パラメーター
名前説明要否

kind

エンティティーの種類

String

Required

namespace

エンティティーの namespace

String

Required

name

エンティティーに関連する名前

String

Required

応答例 (JSON)

[
  {
    "entityReference": "role:default/test",
    "permission": "catalog-entity",
    "policy": "read",
    "effect": "allow",
    "metadata": {
      "source": "csv-file"
    }
  },
  {
    "entityReference": "role:default/test",
    "permission": "catalog.entity.create",
    "policy": "use",
    "effect": "allow",
    "metadata": {
      "source": "csv-file"
    }
  }
]
Copy to Clipboard Toggle word wrap

[POST] /api/permission/policies

指定されたエンティティーの権限ポリシーを作成します。

Expand
表4.5 要求パラメーター
名前説明要否

entityReference

kindnamespacename を含むエンティティーの参照値

String

Required

permission

特定のプラグイン、リソースタイプ、または名前からの権限

String

Required

policy

権限のポリシーアクション (createreadupdatedeleteuse など)

String

Required

effect

ポリシーを許可するかどうか

String

Required

要求の body の例 (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>

指定されたエンティティーの権限ポリシーを更新します。

要求パラメーター

要求の body には、oldPolicy オブジェクトと newPolicy オブジェクトが含まれています。

Expand
名前説明要否

permission

特定のプラグイン、リソースタイプ、または名前からの権限

String

Required

policy

権限のポリシーアクション (createreadupdatedeleteuse など)

String

Required

effect

ポリシーを許可するかどうか

String

Required

要求の body の例 (JSON)

{
  "oldPolicy": [
    {
      "permission": "catalog-entity",
      "policy": "read",
      "effect": "allow"
    },
    {
      "permission": "catalog.entity.create",
      "policy": "create",
      "effect": "allow"
    }
  ],
  "newPolicy": [
    {
      "permission": "catalog-entity",
      "policy": "read",
      "effect": "deny"
    },
    {
      "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
表4.6 要求パラメーター
名前説明要否

kind

エンティティーの種類

String

Required

namespace

エンティティーの namespace

String

Required

name

エンティティーに関連する名前

String

Required

permission

特定のプラグイン、リソースタイプ、または名前からの権限

String

Required

policy

権限のポリシーアクション (createreadupdatedeleteuse など)

String

Required

effect

ポリシーを許可するかどうか

String

Required

応答の例

204 No Content
Copy to Clipboard Toggle word wrap

[DELETE] /api/permission/policies/<kind>/<namespace>/<name>

指定されたエンティティーに追加されているすべての権限ポリシーを削除します。

Expand
表4.7 要求パラメーター
名前説明要否

kind

エンティティーの種類

String

Required

namespace

エンティティーの namespace

String

Required

name

エンティティーに関連する名前

String

Required

応答の例

204 No Content
Copy to Clipboard Toggle word wrap

[GET] /api/permission/plugins/policies

すべての静的プラグインの権限ポリシーを返します。

応答例 (JSON)

[
  {
    "pluginId": "catalog",
    "policies": [
      {
        "isResourced": true,
        "permission": "catalog-entity",
        "policy": "read"
      },
      {
        "isResourced": false,
        "permission": "catalog.entity.create",
        "policy": "create"
      },
      {
        "isResourced": true,
        "permission": "catalog-entity",
        "policy": "delete"
      },
      {
        "isResourced": true,
        "permission": "catalog-entity",
        "policy": "update"
      },
      {
        "isResourced": false,
        "permission": "catalog.location.read",
        "policy": "read"
      },
      {
        "isResourced": false,
        "permission": "catalog.location.create",
        "policy": "create"
      },
      {
        "isResourced": false,
        "permission": "catalog.location.delete",
        "policy": "delete"
      }
    ]
  },
  ...
]
Copy to Clipboard Toggle word wrap

4.3.3. 条件付きポリシー

RBAC REST API は、Red Hat Developer Hub で条件付きポリシーを管理するための次のエンドポイントをサポートしています。

[GET] /api/permission/plugins/condition-rules

Developer Hub で有効になっている利用可能なプラグインの利用可能な条件ルールパラメータースキーマを返します。

応答例 (JSON)

[
   {
      "pluginId": "catalog",
      "rules": [
         {
            "name": "HAS_ANNOTATION",
            "description": "Allow entities with the specified annotation",
            "resourceType": "catalog-entity",
            "paramsSchema": {
               "type": "object",
               "properties": {
                  "annotation": {
                     "type": "string",
                     "description": "Name of the annotation to match on"
                  },
                  "value": {
                     "type": "string",
                     "description": "Value of the annotation to match on"
                  }
               },
               "required": [
                  "annotation"
               ],
               "additionalProperties": false,
               "$schema": "http://json-schema.org/draft-07/schema#"
            }
         },
         {
            "name": "HAS_LABEL",
            "description": "Allow entities with the specified label",
            "resourceType": "catalog-entity",
            "paramsSchema": {
               "type": "object",
               "properties": {
                  "label": {
                     "type": "string",
                     "description": "Name of the label to match on"
                  }
               },
               "required": [
                  "label"
               ],
               "additionalProperties": false,
               "$schema": "http://json-schema.org/draft-07/schema#"
            }
         },
         {
            "name": "HAS_METADATA",
            "description": "Allow entities with the specified metadata subfield",
            "resourceType": "catalog-entity",
            "paramsSchema": {
               "type": "object",
               "properties": {
                  "key": {
                     "type": "string",
                     "description": "Property within the entities metadata to match on"
                  },
                  "value": {
                     "type": "string",
                     "description": "Value of the given property to match on"
                  }
               },
               "required": [
                  "key"
               ],
               "additionalProperties": false,
               "$schema": "http://json-schema.org/draft-07/schema#"
            }
         },
         {
            "name": "HAS_SPEC",
            "description": "Allow entities with the specified spec subfield",
            "resourceType": "catalog-entity",
            "paramsSchema": {
               "type": "object",
               "properties": {
                  "key": {
                     "type": "string",
                     "description": "Property within the entities spec to match on"
                  },
                  "value": {
                     "type": "string",
                     "description": "Value of the given property to match on"
                  }
               },
               "required": [
                  "key"
               ],
               "additionalProperties": false,
               "$schema": "http://json-schema.org/draft-07/schema#"
            }
         },
         {
            "name": "IS_ENTITY_KIND",
            "description": "Allow entities matching a specified kind",
            "resourceType": "catalog-entity",
            "paramsSchema": {
               "type": "object",
               "properties": {
                  "kinds": {
                     "type": "array",
                     "items": {
                        "type": "string"
                     },
                     "description": "List of kinds to match at least one of"
                  }
               },
               "required": [
                  "kinds"
               ],
               "additionalProperties": false,
               "$schema": "http://json-schema.org/draft-07/schema#"
            }
         },
         {
            "name": "IS_ENTITY_OWNER",
            "description": "Allow entities owned by a specified claim",
            "resourceType": "catalog-entity",
            "paramsSchema": {
               "type": "object",
               "properties": {
                  "claims": {
                     "type": "array",
                     "items": {
                        "type": "string"
                     },
                     "description": "List of claims to match at least one on within ownedBy"
                  }
               },
               "required": [
                  "claims"
               ],
               "additionalProperties": false,
               "$schema": "http://json-schema.org/draft-07/schema#"
            }
         }
      ]
   }
   ... <another plugin condition parameter schemas>
]
Copy to Clipboard Toggle word wrap

[GET] /api/permission/roles/conditions/:id

指定された ID の条件を返します。

応答例 (JSON)

{
  "id": 1,
  "result": "CONDITIONAL",
  "roleEntityRef": "role:default/test",
  "pluginId": "catalog",
  "resourceType": "catalog-entity",
  "permissionMapping": ["read"],
  "conditions": {
    "anyOf": [
      {
        "rule": "IS_ENTITY_OWNER",
        "resourceType": "catalog-entity",
        "params": {
          "claims": ["group:default/team-a"]
        }
      },
      {
        "rule": "IS_ENTITY_KIND",
        "resourceType": "catalog-entity",
        "params": {
          "kinds": ["Group"]
        }
      }
    ]
  }
}
Copy to Clipboard Toggle word wrap

[GET] /api/permission/roles/conditions

全ロールの全条件のリストを返します。

応答例 (JSON)

[
  {
    "id": 1,
    "result": "CONDITIONAL",
    "roleEntityRef": "role:default/test",
    "pluginId": "catalog",
    "resourceType": "catalog-entity",
    "permissionMapping": ["read"],
    "conditions": {
      "anyOf": [
        {
          "rule": "IS_ENTITY_OWNER",
          "resourceType": "catalog-entity",
          "params": {
            "claims": ["group:default/team-a"]
          }
        },
        {
          "rule": "IS_ENTITY_KIND",
          "resourceType": "catalog-entity",
          "params": {
            "kinds": ["Group"]
          }
        }
      ]
    }
  }
]
Copy to Clipboard Toggle word wrap

[POST] /api/permission/roles/conditions

指定されたロールの条件付きポリシーを作成します。

Expand
表4.8 要求パラメーター
名前説明要否

result

常に CONDITIONAL の値を持つ

String

Required

roleEntityRef

RBAC ロールへの文字列エンティティー参照 (role:default/dev など)

String

Required

pluginId

対応するプラグイン ID (catalog など)

String

Required

permissionMapping

権限アクションの配列 (['read', 'update', 'delete'] など)

String array

Required

resourceType

プラグインによって提供されるリソースタイプ (catalog-entity など)

String

Required

conditions

条件によって結合されたパラメーターまたは配列パラメーターを含む条件 JSON

JSON

Required

name

ロールの名前

String

Required

metadata.description

ロールの説明

String

任意

要求の body の例 (JSON)

{
  "result": "CONDITIONAL",
  "roleEntityRef": "role:default/test",
  "pluginId": "catalog",
  "resourceType": "catalog-entity",
  "permissionMapping": ["read"],
  "conditions": {
    "rule": "IS_ENTITY_OWNER",
    "resourceType": "catalog-entity",
    "params": {
      "claims": ["group:default/team-a"]
    }
  }
}
Copy to Clipboard Toggle word wrap

応答例 (JSON)

{
  "id": 1
}
Copy to Clipboard Toggle word wrap

[PUT] /permission/roles/conditions/:id

指定された ID の条件ポリシーを更新します。

Expand
表4.9 要求パラメーター
名前説明要否

result

常に CONDITIONAL の値を持つ

String

Required

roleEntityRef

RBAC ロールへの文字列エンティティー参照 (role:default/dev など)

String

Required

pluginId

対応するプラグイン ID (catalog など)

String

Required

permissionMapping

権限アクションの配列 (['read', 'update', 'delete'] など)

String array

Required

resourceType

プラグインによって提供されるリソースタイプ (catalog-entity など)

String

Required

conditions

条件によって結合されたパラメーターまたは配列パラメーターを含む条件 JSON

JSON

Required

name

ロールの名前

String

Required

metadata.description

ロールの説明

String

任意

要求の body の例 (JSON)

{
  "result": "CONDITIONAL",
  "roleEntityRef": "role:default/test",
  "pluginId": "catalog",
  "resourceType": "catalog-entity",
  "permissionMapping": ["read"],
  "conditions": {
    "anyOf": [
      {
        "rule": "IS_ENTITY_OWNER",
        "resourceType": "catalog-entity",
        "params": {
          "claims": ["group:default/team-a"]
        }
      },
      {
        "rule": "IS_ENTITY_KIND",
        "resourceType": "catalog-entity",
        "params": {
          "kinds": ["Group"]
        }
      }
    ]
  }
}
Copy to Clipboard Toggle word wrap

応答の例

200
Copy to Clipboard Toggle word wrap

[DELETE] /api/permission/roles/conditions/:id

指定された ID の条件付きポリシーを削除します。

応答の例

204
Copy to Clipboard Toggle word wrap

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"
Copy to Clipboard Toggle word wrap

応答の例

{ "quantity": "2" }
Copy to Clipboard Toggle word wrap

[GET] /users

ログインしているユーザーとその詳細のリストを返します。

要求の例

curl -X GET "http://localhost:7007/api/licensed-users-info/users" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $token"
Copy to Clipboard Toggle word wrap

応答の例

[
  {
    "userEntityRef": "user:default/dev",
    "lastTimeLogin": "Thu, 22 Aug 2024 16:27:41 GMT",
    "displayName": "John Leavy",
    "email": "dev@redhat.com"
  }
]
Copy to Clipboard Toggle word wrap

[GET] /users

ログインしているユーザーのリストを CSV 形式で返します。

要求の例

curl -X GET "http://localhost:7007/api/licensed-users-info/users" \
-H "Content-Type: text/csv" \
-H "Authorization: Bearer $token"
Copy to Clipboard Toggle word wrap

応答の例

userEntityRef,displayName,email,lastTimeLogin
user:default/dev,John Leavy,dev@redhat.com,"Thu, 22 Aug 2024 16:27:41 GMT"
Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat