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"
  }
]

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

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

応答例 (JSON)

[
  {
    "memberReferences": [
      "group:default/groupname",
      "user:default/username"
    ],
    "name": "role:default/rbac_admin"
  }
]

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

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

表4.1 要求パラメーター
名前説明存在

body

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

リクエストの本文

必須

要求の body の例 (JSON)

{
  "memberReferences": ["group:default/test"],
  "name": "role:default/test_admin"
}

応答の例

201 Created

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

Developer Hub のロールの memberReferenceskindnamespace、または name を更新します。

要求パラメーター

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

名前説明存在

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"
  }
}

応答の例

200 OK

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

Developer Hub のロールから、指定されたユーザーまたはグループを削除します。

表4.2 要求パラメーター
名前説明存在

kind

エンティティーの種類

String

必須

namespace

エンティティーの namespace

String

必須

name

エンティティーの名前

String

必須

memberReferences

関連するグループの情報

String

必須

応答の例

204

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

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

表4.3 要求パラメーター
名前説明存在

kind

エンティティーの種類

String

必須

namespace

エンティティーの namespace

String

必須

name

エンティティーの名前

String

必須

応答の例

204

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"
    }
  },
]

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

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

表4.4 要求パラメーター
名前説明存在

kind

エンティティーの種類

String

必須

namespace

エンティティーの namespace

String

必須

name

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

String

必須

応答例 (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"
    }
  }
]

[POST] /api/permission/policies

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

表4.5 要求パラメーター
名前説明存在

entityReference

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

String

必須

permission

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

String

必須

policy

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

String

必須

effect

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

String

必須

要求の body の例 (JSON)

[
  {
    "entityReference": "role:default/test",
    "permission": "catalog-entity",
    "policy": "read",
    "effect": "allow"
  }
]

応答の例

201 Created

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

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

要求パラメーター

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

名前説明存在

permission

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

String

必須

policy

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

String

必須

effect

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

String

必須

要求の 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"
    }
  ]
}

応答の例

200

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

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

表4.6 要求パラメーター
名前説明存在

kind

エンティティーの種類

String

必須

namespace

エンティティーの namespace

String

必須

name

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

String

必須

permission

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

String

必須

policy

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

String

必須

effect

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

String

必須

応答の例

204 No Content

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

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

表4.7 要求パラメーター
名前説明存在

kind

エンティティーの種類

String

必須

namespace

エンティティーの namespace

String

必須

name

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

String

必須

応答の例

204 No Content

[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"
      }
    ]
  },
  ...
]

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>
]

[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"]
        }
      }
    ]
  }
}

[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"]
          }
        }
      ]
    }
  }
]

[POST] /api/permission/roles/conditions

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

表4.8 要求パラメーター
名前説明存在

result

常に CONDITIONAL の値を持つ

String

必須

roleEntityRef

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

String

必須

pluginId

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

String

必須

permissionMapping

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

String array

必須

resourceType

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

String

必須

conditions

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

JSON

必須

name

ロールの名前

String

必須

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"]
    }
  }
}

応答例 (JSON)

{
  "id": 1
}

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

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

表4.9 要求パラメーター
名前説明存在

result

常に CONDITIONAL の値を持つ

String

必須

roleEntityRef

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

String

必須

pluginId

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

String

必須

permissionMapping

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

String array

必須

resourceType

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

String

必須

conditions

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

JSON

必須

name

ロールの名前

String

必須

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"]
        }
      }
    ]
  }
}

応答の例

200

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

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

応答の例

204

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"

応答の例

{ "quantity": "2" }

[GET] /users

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

要求の例

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

応答の例

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

[GET] /users

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

要求の例

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

応答の例

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

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.