第4章 REST API を使用した認可の管理
Red Hat Developer Hub のパーミッションポリシーとロールのメンテナンスを自動化するには、Developer Hub のロールベースアクセス制御 (RBAC) REST API を使用できます。
REST API を使用して次のアクションを実行できます。
次の情報を取得します。
- すべてのパーミッションポリシー
- 特定のパーミッションポリシー
- 特定のロール
- 静的プラグインのパーミッションポリシー
作成、更新、または削除:
- パーミッションポリシー
- ロール
4.1. curl ユーティリティーを使用した RBAC REST API へのリクエストの送信 リンクのコピーリンクがクリップボードにコピーされました!
curl ユーティリティーを使用して RBAC REST API リクエストを送信できます。
前提条件
手順
REST API に認証するための Bearer トークンを見つけます。
- ブラウザーで、Web コンソールの Network タブを開きます。
- メイン画面で、Developer Hub の ホームページ を再読み込みします。
-
Web コンソールの Network タブで、
query?term=ネットワーク呼び出しを検索します。 - 次の手順のために、レスポンス JSON に トークン を保存します。
ターミナルで curl コマンドを実行し、応答を確認します。
GETまたはDELETEリクエストcurl -v \ -H "Authorization: Bearer <token>" \ -X <method> "https://<my_developer_hub_url>/<endpoint>" \JSON ボディーデータを必要とする
POSTリクエストまたはPUTリクエストcurl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>" \ -X POST "https://<my_developer_hub_url>/<endpoint>" \ -d <body>- <token>
- 保存した認可トークンを入力します。
- <method>
API エンドポイント の HTTP メソッドを入力します。
-
GET: 指定されたリソースエンドポイントから指定された情報を取得します。 -
POST: リソースを作成または更新します。 -
PUT: リソースを更新します。 -
DELETE: リソースを削除します。
-
- https://<my_developer_hub_url>
- Developer Hub の URL を入力します。
- <endpoint>
-
/api/permission/policiesなど、リクエストを送信する API エンドポイント を入力します。 - <body>
-
HTTP
POSTまたはPUTリクエストで API エンドポイント に必要なデータを含む JSON ボディーを入力します。
ロールを作成するためのリクエストの例
curl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>" \ -X POST "https://<my_developer_hub_url>/api/permission/roles" \ -d '{ "memberReferences": ["group:default/example"], "name": "role:default/test", "metadata": { "description": "This is a test role" } }'ロールを更新するリクエストの例
curl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>" \ -X PUT "https://<my_developer_hub_url>/api/permission/roles/role/default/test" \ -d '{ "oldRole": { "memberReferences": [ "group:default/example" ], "name": "role:default/test" }, "newRole": { "memberReferences": [ "group:default/example", "user:default/test" ], "name": "role:default/test" } }'パーミッションポリシーを作成するためのリクエストの例
curl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer $token" \ -X POST "https://<my_developer_hub_url>/api/permission/policies" \ -d '[{ "entityReference":"role:default/test", "permission": "catalog-entity", "policy": "read", "effect":"allow" }]'パーミッションポリシーを更新するリクエストの例
curl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer $token" \ -X PUT "https://<my_developer_hub_url>/api/permission/policies/role/default/test" \ -d '{ "oldPolicy": [ { "permission": "catalog-entity", "policy": "read", "effect": "allow" } ], "newPolicy": [ { "permission": "policy-entity", "policy": "read", "effect": "allow" } ] }'条件を作成するためのリクエストの例
curl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer $token" \ -X POST "https://<my_developer_hub_url>/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"]} } }'条件を更新するリクエストの例
curl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer $token" \ -X PUT "https://<my_developer_hub_url>/api/permission/roles/conditions/1" \ -d '{ "result":"CONDITIONAL", "roleEntityRef":"role:default/test", "pluginId":"catalog", "resourceType":"catalog-entity", "permissionMapping": ["read", "update", "delete"], "conditions": { "rule": "IS_ENTITY_OWNER", "resourceType": "catalog-entity", "params": {"claims": ["group:default/janus-authors"]} } }'
検証
返された HTTP ステータスコードを確認します。
200OK- リクエストは成功しました。
201Created- リクエストの結果、新しいリソースが正常に作成されました。
204No Content- リクエストは成功し、応答のペイロードにはこれ以上のコンテンツはありません。
400Bad Request- リクエストの入力エラー。
401Unauthorized- 要求されたリソースに対する有効な認証がありません。
403Forbidden- リクエストの承認を拒否します。
404Not Found- 要求されたリソースが見つかりませんでした。
409Conflict- 現在の状態とターゲットリソースとの要求の競合。