第4章 REST API を使用した認可の管理
Red Hat Developer Hub の権限ポリシーとロールのメンテナンスを自動化するには、Developer Hub のロールベースアクセス制御 (RBAC) REST API を使用できます。
REST API を使用して次のアクションを実行できます。
次の情報を取得します。
- すべての権限ポリシー
- 特定の権限ポリシー
- 特定のロール
- 静的プラグインの権限ポリシー
作成、更新、または削除:
- 許可ポリシー
- Role
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 ステータスコードを確認します。
200
OK- リクエストは成功しました。
201
Created- リクエストの結果、新しいリソースが正常に作成されました。
204
No Content- リクエストは成功し、応答のペイロードにはこれ以上のコンテンツはありません。
400
Bad Request- リクエストの入力エラー。
401
Unauthorized- 要求されたリソースに対する有効な認証がありません。
403
Forbidden- リクエストの承認を拒否します。
404
Not Found- 要求されたリソースが見つかりませんでした。
409
Conflict- 現在の状態とターゲットリソースとの要求の競合。