This documentation is for a release that is no longer maintained
See documentation for the latest supported version.第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
など) です。 - Endpoints
RBAC REST API エンドポイント (特定の
kind
、namespace
、name
の/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/policies
のPOST
要求 URL と JSON 要求の body データの例:{ "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "delete", "effect": "allow" }
{ "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "delete", "effect": "allow" }
Copy to Clipboard Copied! - 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 にアクセスできる。
手順
要求の送信先となる 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
- 要求を実行し、応答を確認します。