第5章 ロールベースアクセス制御 (RBAC) REST API


Red Hat Developer Hub は、Developer Hub で権限とロールを管理するために使用できる RBAC REST API を提供します。この API は、Developer Hub の権限ポリシーとロールのメンテナンスを容易にし、自動化します。

RBAC REST API を使用すると、次のアクションを実行できます。

  • すべて、または特定の権限ポリシー、もしくはロールに関する情報を取得します。
  • 権限ポリシーまたはロールを作成、更新、削除します。
  • 静的プラグインに関する権限ポリシーの情報を取得します。

RBAC REST API には、次のコンポーネントが必要です。

認可

RBAC REST API には、許可されたユーザーロールに対するベアラートークンの認可が必要です。開発目的の場合、ブラウザーで Web コンソールにアクセスできます。ネットワーク要求リストでトークン要求を更新すると、応答 JSON 内でトークンが見つかります。

Authorization: Bearer $token

たとえば、Developer Hub の Homepage で、Network タブに移動し、query?term= ネットワーク呼び出しを検索します。または、Catalog ページに移動し、任意のカタログ API ネットワーク呼び出しを選択して、ベアラートークンを取得することもできます。

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 など) です。
エンドポイント

RBAC REST API エンドポイント (特定の kindnamespacename/api/permission/policies/[kind]/[namespace]/[name] など) は、対応するリソースにアクセスするためにベース URL に追加する URI です。

以下は、/api/permission/policies/[kind]/[namespace]/[name] エンドポイントの要求 URL の例です。

http://localhost:7007/api/permission/policies/user/default/johndoe

注記

少なくとも 1 つの権限が user:default/johndoe に割り当てられている場合、前述した要求 URL の例は、有効な認可トークンを含む GET 応答で送信されると結果を返します。ただし、権限がロールにのみ割り当てられている場合、例として挙げた要求 URL は出力を返しません。

要求データ

RBAC REST API の HTTP POST 要求では、データに JSON 要求の body が必要になる場合があります。

http://localhost:7007/api/permission/policiesPOST 要求 URL と JSON 要求の body データの例:

{
    "entityReference": "role:default/test",
    "permission": "catalog-entity",
    "policy": "delete",
    "effect": "allow"
}
HTTP ステータスコード

RBAC REST API は、応答として返される次の HTTP ステータスコードをサポートしています。

  • 200 OK: 要求は成功しました。
  • 201 Created: 要求により、新しいリソースが正常に作成されました。
  • 204 No Content: 要求は成功しましたが、応答ペイロードで送信する追加コンテンツはありません。
  • 400 Bad Request: 要求に入力エラーがありました。
  • 401 Unauthorized: 要求されたリソースに対する有効な認証がありません。
  • 403 Forbidden: 要求の承認が拒否されました。
  • 404 Not Found: 要求されたリソースは見つかりません。
  • 409 Conflict: 要求が、現在の状態およびターゲットリソースと競合しています。
ソース

RBAC プラグインを使用して作成された各権限ポリシーとロールは、プラグイン内でデータの一貫性を維持するために、ソースに関連付けられます。次の指定のソース情報に基づいて、権限ポリシーとロールを操作できます。

  • CSV ファイル
  • 設定ファイル
  • REST API
  • レガシー

CSV ファイルと REST API から生成されたロールと権限ポリシーを管理する場合、元のソース情報に基づく簡単な変更が必要になります。

設定ファイルは、RBAC プラグインによって提供されるデフォルトの role:default/rbac_admin ロールに関係します。デフォルトのロールには、権限ポリシーまたはロールの作成、読み取り、更新、削除、およびカタログエンティティーの読み取りを行うための制限された権限があります。

注記

デフォルトの権限が管理要件に適していない場合は、必要な権限ポリシーを使用してカスタム管理者ロールを作成できます。

レガシーソースは、RBAC バックエンドプラグインバージョン 2.1.3 より前に定義されたポリシーとロールに適用されます。上記の選択肢の中で、最も制限が少ないソースの場所です。REST API ソースまたは CSV ファイルソースを使用するには、レガシーソースの権限とロールを更新する必要があります。

必要に応じて、GET リクエストを使用してロールとポリシーをクエリーし、ソース情報を確認できます。

5.1. REST クライアントまたは curl ユーティリティーを使用して RBAC REST API で要求を送信する

RBAC REST API を使用すると、ユーザーインターフェイスを使用せずに、Developer Hub の権限ポリシーおよびロールと対話できます。RBAC REST API 要求は、任意の REST クライアントまたは curl ユーティリティーを使用して送信できます。

前提条件

  • Red Hat Developer Hub がインストールされ、実行されている。

Red Hat Developer Hub のインストールの詳細は、Helm チャートを使用した OpenShift Container Platform への Red Hat Developer Hub のインストール を参照してください。

  • Developer Hub にアクセスできる。

手順

  1. 要求の送信先となる API エンドポイント (例: POST/api/permission/policies) を特定します。ユースケースに合わせて、要求の詳細を調整します。

    REST クライアントの場合:

    • Authorization: Web コンソールから生成されたトークンを入力します。
    • HTTP method: 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 body を追加します。

    要求例:

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

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.