認可
Red Hat Developer Hub でロールベースアクセス制御 (RBAC) を使用して認可を設定する
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
認証 では、Red Hat Developer Hub に対してユーザーを認証する方法を学びました。Developer Hub は、ユーザーを認識しています。
このドキュメントでは、Developer Hub でユーザーにアクションの実行を許可する方法を学習します。Developer Hub でユーザーが実行できる操作を定義します。
ロールベースアクセス制御 (RBAC) は、システム内のリソースへのアクセスを制御し、システムのユーザーと、ユーザーがシステム内のリソースに対して実行できるアクションの間のマッピングを指定するセキュリティーの概念です。特定の権限を持つロールを定義し、そのロールをユーザーとグループに割り当てます。
Developer Hub の RBAC は、コード内で RBAC ポリシーを定義するアクセス許可フレームワーク上に構築されています。Developer Hub RBAC 機能を使用すると、コードでポリシーを定義するのではなく、シンプルな CSV ベースの形式を使用して宣言的にポリシーを定義できます。CSV を直接編集するのではなく、Developer Hub Web インターフェイスまたは REST API を使用してポリシーを定義できます。
Developer Hub で認可を定義するには、以下を行います。
- Developer Hub 管理者は RBAC 機能を有効にし、アクセス権を付与します。
次の方法を組み合わせて、ロールとポリシーを定義します。
- Developer Hub ポリシー管理者は、Developer Hub Web インターフェイスまたは REST API を使用します。
- Developer Hub 管理者は、メインの Developer Hub 設定ファイルを編集します。
- Developer Hub 管理者は外部ファイルを編集します。
第1章 ロールベースのアクセス制御 (RBAC) 機能の有効化とアクセス権の付与 リンクのコピーリンクがクリップボードにコピーされました!
ロールベースのアクセス制御 (RBAC) 機能はデフォルトで無効になっています。RBAC プラグインを有効にし、ポリシー管理者が RBAC 機能の使用を開始することを宣言します。
Developer Hub のユーザーとグループの権限ポリシーは、権限ポリシー管理者が管理します。ロールベースアクセス制御 REST API には、権限ポリシー管理者のみアクセスできます。
前提条件
- カスタム Developer Hub アプリケーション設定を追加 している。また、それを変更するための十分な権限を持っている。
- 認証プロバイダーを有効にした。
手順
RBAC プラグインはインストールされていますが、デフォルトでは無効になっています。
./dynamic-plugins/dist/janus-idp-backstage-plugin-rbacプラグインを有効にするには、次の内容でdynamic-plugins.yamlを編集します。dynamic-plugins.yamlフラグメントplugins: - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-rbac disabled: falseplugins: - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-rbac disabled: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 動的プラグインのインストールと表示 を参照してください。
ポリシー管理者を宣言して、CSV ファイルを直接変更するのではなく、認証されたユーザーの選択した数が REST API または Web UI を使用して RBAC ポリシーを設定できるようにします。権限は、
app-config-rhdhConfigMap で参照される別の CSV ファイルで指定することも、REST API または Web UI を使用して作成することもできます。<your_policy_administrator_name> などのユーザーをポリシー管理者として宣言するには、
app-config-rhdhなどのカスタム Developer Hub ConfigMap を編集し、次のコードをapp-config-rhdh.yamlコンテンツに追加します。app-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- 既存の Red Hat Developer Hub セッションからサインアウトし、宣言されたポリシー管理者アカウントを使用して再度ログインします。
RBAC を有効にすると、ほとんどの機能はデフォルトで無効になっています。
- RHDH の Catalog ページに移動します。Create ボタンは表示されません。新しいコンポーネントは作成できません。
- API ページに移動します。Register ボタンは表示されません。
次のステップ
- Developer Hub のリソースへのパーミッションを明示的に有効にします。
第2章 権限ポリシーとロール設定ソースの決定 リンクのコピーリンクがクリップボードにコピーされました!
さまざまなソースを使用して、Red Hat Developer Hub のポリシーとロールを設定できます。データの一貫性を維持するために、Developer Hub は各権限ポリシーとロールを 1 つの一意のソースに関連付けます。このソースはリソースを変更する場合にのみ使用できます。
利用可能なソースは次のとおりです。
- 設定ファイル
たとえば、ポリシー管理者を宣言する には、Developer Hub の
app-config.yaml設定ファイルでロールとポリシーを設定します。設定ファイルは、RBAC プラグインによって提供されるデフォルトの
role:default/rbac_adminロールに関係します。デフォルトのロールには、権限ポリシーまたはロールの作成、読み取り、更新、削除、およびカタログエンティティーの読み取りを行うための制限された権限があります。注記デフォルトの権限が管理要件を満たしていない場合は、必要な権限ポリシーを持つカスタム管理者ロールを作成できます。
- REST API
- Developer Hub Web UI または REST API を使用して、ロールとポリシーを設定します。
- CSV ファイル
- 外部 CSV ファイルを使用してロールとポリシーを設定します。
- レガシー
レガシーソースは、RBAC バックエンドプラグインバージョン
2.1.3より前に定義されたポリシーとロールに適用されます。上記の選択肢の中で、最も制限が少ないソースの場所です。重要従来のソースを使用した権限とロールを、REST API または CSV ファイルソースを使用した権限に置き換えます。
手順
-
ロールまたはポリシーのソースを確認するには、
GETリクエストを使用します。
第3章 Red Hat Developer Hub Web UI を使用したロールベースアクセス制御 (RBAC) の管理 リンクのコピーリンクがクリップボードにコピーされました!
ポリシー管理者は、Developer Hub Web インターフェイス (Web UI) を使用して、特定のロールと権限を個々のユーザーまたはグループに割り当てることができます。ロールを割り当てると、リソースと機能へのアクセスが Developer Hub 全体で確実に規制されます。
Developer Hub のポリシー管理者ロールを使用すると、ユーザーとグループに権限を割り当てることができます。このロールを使用すると、Developer Hub Web UI を使用してロールを表示、作成、変更、削除できます。
3.1. Red Hat Developer Hub Web UI でのロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
Web UI を使用して、Red Hat Developer Hub でロールを作成できます。
手順
Developer Hub のサイドバーの下部にある Administration に移動します。
RBAC タブが表示され、Developer Hub で作成されたすべてのロールが表示されます。
- (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
- CREATE をクリックしてロールを作成します。
- 所定のフィールドにロールの名前と説明を入力し、NEXT をクリックします。
- 検索フィールドを使用してユーザーとグループを追加し、NEXT をクリックします。
- Add permission policies セクションのドロップダウンから Plugin と Permission を選択します。
- Add permission policies セクションで、設定する Policy を選択または選択解除し、NEXT をクリックします。
- Review and create セクションで追加された情報を確認します。
- CREATE をクリックします。
検証
作成したロールは、RBAC タブのリストに表示されます。
3.2. Red Hat Developer Hub Web UI でのロールの編集 リンクのコピーリンクがクリップボードにコピーされました!
Web UI を使用して、Red Hat Developer Hub でロールを編集できます。
policy.csv または ConfigMap ファイルから生成されたポリシーは、Developer Hub Web UI を使用して編集または削除することはできません。
前提条件
- RBAC が有効になっており、Developer Hub のポリシー管理者のロールがある。
- 編集するロールが Developer Hub で作成されている。
手順
Developer Hub のサイドバーの下部にある Administration に移動します。
RBAC タブが表示され、Developer Hub で作成されたすべてのロールが表示されます。
- (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
- 編集するロールの編集アイコンを選択します。
- 名前、説明、ユーザーとグループ、権限ポリシーなどのロールの詳細を編集し、NEXT をクリックします。
- 編集したロールの詳細を確認し、SAVE をクリックします。
ロールを編集した後、ロールの OVERVIEW ページで編集したロールの詳細を表示できます。OVERVIEW ページの各カードにある編集アイコンを使用して、ロールのユーザーとグループ、または権限を編集することもできます。
3.3. Red Hat Developer Hub Web UI でのロールの削除 リンクのコピーリンクがクリップボードにコピーされました!
Web UI を使用して、Red Hat Developer Hub でロールを削除できます。
policy.csv または ConfigMap ファイルから生成されたポリシーは、Developer Hub Web UI を使用して編集または削除することはできません。
前提条件
- RBAC が有効になっており、Developer Hub のポリシー管理者のロールがある。
- 削除するロールが Developer Hub で作成されている。
手順
Developer Hub のサイドバーの下部にある Administration に移動します。
RBAC タブが表示され、Developer Hub で作成されたすべてのロールが表示されます。
- (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
削除するロールの Actions 列から削除アイコンを選択します。
Delete this role? というポップアップが画面に表示されます。
- DELETE をクリックします。
第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>" \
curl -v \ -H "Authorization: Bearer <token>" \ -X <method> "https://<my_developer_hub_url>/<endpoint>" \Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON ボディーデータを必要とする
POSTリクエストまたはPUTリクエストcurl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>" \ -X POST "https://<my_developer_hub_url>/<endpoint>" \ -d <body>
curl -v -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>" \ -X POST "https://<my_developer_hub_url>/<endpoint>" \ -d <body>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <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 ボディーを入力します。
ロールを作成するためのリクエストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロールを更新するリクエストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 権限ポリシーを作成するためのリクエストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 権限ポリシーを更新するリクエストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 条件を作成するためのリクエストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 条件を更新するリクエストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
返された HTTP ステータスコードを確認します。
200OK- リクエストは成功しました。
201Created- リクエストの結果、新しいリソースが正常に作成されました。
204No Content- リクエストは成功し、応答のペイロードにはこれ以上のコンテンツはありません。
400Bad Request- リクエストの入力エラー。
401Unauthorized- 要求されたリソースに対する有効な認証がありません。
403Forbidden- リクエストの承認を拒否します。
404Not Found- 要求されたリソースが見つかりませんでした。
409Conflict- 現在の状態とターゲットリソースとの要求の競合。
4.2. REST クライアントを使用した RBAC REST API へのリクエストの送信 リンクのコピーリンクがクリップボードにコピーされました!
任意の REST クライアントを使用して RBAC REST API リクエストを送信できます。
前提条件
手順
REST API に認証するための Bearer トークンを見つけます。
- ブラウザーで、Web コンソールの Network タブを開きます。
- メイン画面で、Developer Hub の ホームページ を再読み込みします。
-
Web コンソールの Network タブで、
query?term=ネットワーク呼び出しを検索します。 - 次の手順のために、レスポンス JSON に トークン を保存します。
REST クライアントで、次のパラメーターを使用してコマンドを実行し、応答を確認します。
- 認可
- 保存した認可トークンを入力します。
- HTTP メソッド
API エンドポイント の HTTP メソッドを入力します。
-
GET: 指定されたリソースエンドポイントから指定された情報を取得します。 -
POST: リソースを作成または更新します。 -
PUT: リソースを更新します。 -
DELETE: リソースを削除します。
-
- URL
-
Developer Hub の URL と API エンドポイント を入力します (https://<my_developer_hub_url>/<endpoint> (
https://<my_developer_hub_url>/api/permission/policiesなど))。 - Body
-
HTTP
POSTリクエストで API エンドポイント に必要なデータを含む JSON ボディーを入力します。
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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/roles/<kind>/<namespace>/<name>
Developer Hub の 1 つのロールに関する情報を返します。
応答例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [POST] /api/permission/roles/<kind>/<namespace>/<name>
Developer Hub でロールを作成します。
Expand 表4.1 要求パラメーター 名前 説明 型 要否 body作成される新しいロールの
memberReferences、group、namespace、name。リクエストの本文
必須
要求の body の例 (JSON)
{ "memberReferences": ["group:default/test"], "name": "role:default/test_admin" }{ "memberReferences": ["group:default/test"], "name": "role:default/test_admin" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答の例
201 Created
201 CreatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [PUT] /api/permission/roles/<kind>/<namespace>/<name>
Developer Hub のロールの
memberReferences、kind、namespace、またはnameを更新します。要求パラメーター
要求の body には、
oldRoleオブジェクトとnewRoleオブジェクトが含まれています。Expand 名前 説明 型 要否 body作成される新しいロールの
memberReferences、group、namespace、name。リクエストの本文
必須
要求の body の例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答の例
200 OK
200 OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/roles/<kind>/<namespace>/<name>?memberReferences=<VALUE>
Developer Hub のロールから、指定されたユーザーまたはグループを削除します。
Expand 表4.2 要求パラメーター 名前 説明 型 要否 kindエンティティーの種類
String
Required
namespaceエンティティーの namespace
String
Required
nameエンティティーの名前
String
Required
memberReferences関連するグループの情報
String
Required
応答の例
204
204Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/roles/<kind>/<namespace>/<name>
Developer Hub から、指定されたロールを削除します。
Expand 表4.3 要求パラメーター 名前 説明 型 要否 kindエンティティーの種類
String
Required
namespaceエンティティーの namespace
String
Required
nameエンティティーの名前
String
Required
応答の例
204
204Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2. 権限ポリシー リンクのコピーリンクがクリップボードにコピーされました!
RBAC REST API は、Red Hat Developer Hub で権限ポリシーを管理するために、次のエンドポイントをサポートします。
- [GET] /api/permission/policies
すべてのユーザーの権限ポリシーリストを返します。
応答例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/policies/<kind>/<namespace>/<name>
指定されたエンティティー参照に関連する権限ポリシーを返します。
Expand 表4.4 要求パラメーター 名前 説明 型 要否 kindエンティティーの種類
String
Required
namespaceエンティティーの namespace
String
Required
nameエンティティーに関連する名前
String
Required
応答例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [POST] /api/permission/policies
指定されたエンティティーの権限ポリシーを作成します。
Expand 表4.5 要求パラメーター 名前 説明 型 要否 entityReferencekind、namespace、nameを含むエンティティーの参照値String
Required
permission特定のプラグイン、リソースタイプ、または名前からの権限
String
Required
policy権限のポリシーアクション (
create、read、update、delete、useなど)String
Required
effectポリシーを許可するかどうか
String
必須
要求の body の例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答の例
201 Created
201 CreatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [PUT] /api/permission/policies/<kind>/<namespace>/<name>
指定されたエンティティーの権限ポリシーを更新します。
要求パラメーター
要求の body には、
oldPolicyオブジェクトとnewPolicyオブジェクトが含まれています。Expand 名前 説明 型 要否 permission特定のプラグイン、リソースタイプ、または名前からの権限
String
Required
policy権限のポリシーアクション (
create、read、update、delete、useなど)String
Required
effectポリシーを許可するかどうか
String
必須
要求の body の例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答の例
200
200Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/policies/<kind>/<namespace>/<name>?permission={value1}&policy={value2}&effect={value3}
指定されたエンティティーに追加された権限ポリシーを削除します。
Expand 表4.6 要求パラメーター 名前 説明 型 要否 kindエンティティーの種類
String
Required
namespaceエンティティーの namespace
String
Required
nameエンティティーに関連する名前
String
Required
permission特定のプラグイン、リソースタイプ、または名前からの権限
String
Required
policy権限のポリシーアクション (
create、read、update、delete、useなど)String
Required
effectポリシーを許可するかどうか
String
Required
応答の例
204 No Content
204 No ContentCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/policies/<kind>/<namespace>/<name>
指定されたエンティティーに追加されているすべての権限ポリシーを削除します。
Expand 表4.7 要求パラメーター 名前 説明 型 要否 kindエンティティーの種類
String
Required
namespaceエンティティーの namespace
String
Required
nameエンティティーに関連する名前
String
Required
応答の例
204 No Content
204 No ContentCopy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/plugins/policies
すべての静的プラグインの権限ポリシーを返します。
応答例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 条件付きポリシー リンクのコピーリンクがクリップボードにコピーされました!
RBAC REST API は、Red Hat Developer Hub で条件付きポリシーを管理するための次のエンドポイントをサポートしています。
- [GET] /api/permission/plugins/condition-rules
Developer Hub で有効になっている利用可能なプラグインの利用可能な条件ルールパラメータースキーマを返します。
応答例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/roles/conditions/:id
指定された ID の条件を返します。
応答例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /api/permission/roles/conditions
全ロールの全条件のリストを返します。
応答例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [POST] /api/permission/roles/conditions
指定されたロールの条件付きポリシーを作成します。
Expand 表4.8 要求パラメーター 名前 説明 型 要否 result常に
CONDITIONALの値を持つString
Required
roleEntityRefRBAC ロールへの文字列エンティティー参照 (
role:default/devなど)String
Required
pluginId対応するプラグイン ID (
catalogなど)String
Required
permissionMapping権限アクションの配列 (
['read', 'update', 'delete']など)String array
Required
resourceTypeプラグインによって提供されるリソースタイプ (
catalog-entityなど)String
Required
conditions条件によって結合されたパラメーターまたは配列パラメーターを含む条件 JSON
JSON
Required
nameロールの名前
String
Required
metadata.descriptionロールの説明
String
任意
要求の body の例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答例 (JSON)
{ "id": 1 }{ "id": 1 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [PUT] /permission/roles/conditions/:id
指定された ID の条件ポリシーを更新します。
Expand 表4.9 要求パラメーター 名前 説明 型 要否 result常に
CONDITIONALの値を持つString
Required
roleEntityRefRBAC ロールへの文字列エンティティー参照 (
role:default/devなど)String
Required
pluginId対応するプラグイン ID (
catalogなど)String
Required
permissionMapping権限アクションの配列 (
['read', 'update', 'delete']など)String array
Required
resourceTypeプラグインによって提供されるリソースタイプ (
catalog-entityなど)String
Required
conditions条件によって結合されたパラメーターまたは配列パラメーターを含む条件 JSON
JSON
Required
nameロールの名前
String
Required
metadata.descriptionロールの説明
String
任意
要求の body の例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答の例
200
200Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/roles/conditions/:id
指定された ID の条件付きポリシーを削除します。
応答の例
204
204Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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"
curl -X GET "http://localhost:7007/api/licensed-users-info/users/quantity" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $token"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答の例
{ "quantity": "2" }{ "quantity": "2" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /users
ログインしているユーザーとその詳細のリストを返します。
要求の例
curl -X GET "http://localhost:7007/api/licensed-users-info/users" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $token"
curl -X GET "http://localhost:7007/api/licensed-users-info/users" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $token"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [GET] /users
ログインしているユーザーのリストを CSV 形式で返します。
要求の例
curl -X GET "http://localhost:7007/api/licensed-users-info/users" \ -H "Content-Type: text/csv" \ -H "Authorization: Bearer $token"
curl -X GET "http://localhost:7007/api/licensed-users-info/users" \ -H "Content-Type: text/csv" \ -H "Authorization: Bearer $token"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答の例
userEntityRef,displayName,email,lastTimeLogin user:default/dev,John Leavy,dev@redhat.com,"Thu, 22 Aug 2024 16:27:41 GMT"
userEntityRef,displayName,email,lastTimeLogin user:default/dev,John Leavy,dev@redhat.com,"Thu, 22 Aug 2024 16:27:41 GMT"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 外部ファイルを使用した認可の管理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub のメンテナンスを自動化するには、Developer Hub を起動する前に、外部ファイルで権限とロールを設定できます。
5.1. Operator を使用して外部ファイルで権限の定義 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub のメンテナンスを自動化するには、Developer Hub を起動する前に、外部ファイルで権限とロールを定義します。ファイルを準備し、OpenShift Container Platform プロジェクトにアップロードして、外部ファイルを使用するように Developer Hub を設定する必要があります。
前提条件
手順
次の形式を使用して、CSV ファイル
rbac-policies.csvでポリシーを定義します。ロール権限を定義します。
p, <role_entity_reference>, <permission>, <action>, <allow_or_deny>
p, <role_entity_reference>, <permission>, <action>, <allow_or_deny>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <role_entity_reference>
-
ロールエンティティー参照 (例:
role:default/guest)。 - <permission>
権限 (例:
bulk.import、catalog.entity.read、catalog.entity.refresh)、または権限リソースタイプ (例:bulk-import、catalog-entity)。権限ポリシーリファレンス を参照してください。
- <action>
-
アクションタイプ (例:
use、read、create、update、delete)。 - <allow_or_deny>
-
許可されるアクセス: (
allowまたはdeny)。
グループまたはユーザーにロールを割り当てます。
g, <group_or_user>, <role_entity_reference>
g, <group_or_user>, <role_entity_reference>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <group_or_user>
グループ (例:
user:default/mygroup)、またはユーザー (例:user:default/myuser)。サンプル
rbac-policies.csvp, role:default/guests, catalog-entity, read, allow p, role:default/guests, catalog.entity.create, create, allow g, user:default/my-user, role:default/guests g, group:default/my-group, role:default/guests
p, role:default/guests, catalog-entity, read, allow p, role:default/guests, catalog.entity.create, create, allow g, user:default/my-user, role:default/guests g, group:default/my-group, role:default/guestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次の形式を使用して、YAML ファイル
rbac-conditional-policies.yamlで条件付きポリシーを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 条件付きポリシーリファレンス を参照してください。
rbac-policies.csvファイルとrbac-conditional-policies.yamlファイルを、Developer Hub を含む OpenShift Container Platform プロジェクトのrbac-policiesconfig map にアップロードします。oc create configmap rbac-policies \ --from-file=rbac-policies.csv \ --from-file=rbac-conditional-policies.yaml$ oc create configmap rbac-policies \ --from-file=rbac-policies.csv \ --from-file=rbac-conditional-policies.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Developer Hub
Backstageカスタムリソースを更新して、rbac-policiesconfig map からファイルを Developer Hub ファイルシステムにマウントします。BackstageカスタムリソースフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow 外部ファイル
rbac-policies.csvおよびrbac-conditional-policies.yamlを使用するように、Developer Hub のapp-config.yaml設定ファイルを更新します。app-config.ymlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. Helm を使用して外部ファイルで認可の定義 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub のメンテナンスを自動化するには、Developer Hub を起動する前に、外部ファイルで権限とロールを定義します。ファイルを準備し、OpenShift Container Platform プロジェクトにアップロードして、外部ファイルを使用するように Developer Hub を設定する必要があります。
前提条件
手順
次の形式を使用して、CSV ファイル
rbac-policies.csvでポリシーを定義します。ロール権限を定義します。
p, <role_entity_reference>, <permission>, <action>, <allow_or_deny>
p, <role_entity_reference>, <permission>, <action>, <allow_or_deny>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <role_entity_reference>
-
ロールエンティティー参照 (例:
role:default/guest)。 - <permission>
権限 (例:
bulk.import、catalog.entity.read、catalog.entity.refresh)、または権限リソースタイプ (例:bulk-import、catalog-entity)。権限ポリシーリファレンス を参照してください。
- <action>
-
アクションタイプ (例:
use、read、create、update、delete)。 - <allow_or_deny>
-
許可されるアクセス: (
allowまたはdeny)。
グループまたはユーザーにロールを割り当てます。
g, <group_or_user>, <role_entity_reference>
g, <group_or_user>, <role_entity_reference>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <group_or_user>
グループ (例:
user:default/mygroup)、またはユーザー (例:user:default/myuser)。サンプル
rbac-policies.csvp, role:default/guests, catalog-entity, read, allow p, role:default/guests, catalog.entity.create, create, allow g, user:default/my-user, role:default/guests g, group:default/my-group, role:default/guests
p, role:default/guests, catalog-entity, read, allow p, role:default/guests, catalog.entity.create, create, allow g, user:default/my-user, role:default/guests g, group:default/my-group, role:default/guestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次の形式を使用して、YAML ファイル
rbac-conditional-policies.yamlで条件付きポリシーを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 条件付きポリシーリファレンス を参照してください。
rbac-policies.csvファイルとrbac-conditional-policies.yamlファイルを、Developer Hub を含む OpenShift Container Platform プロジェクトのrbac-policiesconfig map にアップロードします。oc create configmap rbac-policies \ --from-file=rbac-policies.csv \ --from-file=rbac-conditional-policies.yaml$ oc create configmap rbac-policies \ --from-file=rbac-policies.csv \ --from-file=rbac-conditional-policies.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Developer Hub
BackstageHelm チャートを更新して、rbac-policiesconfig map からファイルを Developer Hub ファイルシステムにマウントします。- Developer Hub Helm チャートで、Root Schema → Backstage chart schema → Backstage parameters → Backstage container additional volume mounts に移動します。
Add Backstage container additional volume mounts を選択し、次の値を追加します。
- mountPath
-
/opt/app-root/src/rbac - 名前
-
rbac-policies
RBAC ポリシーを、Developer Hub Helm チャートの Backstage container additional volumes に追加します。
- name
-
rbac-policies - configMap
- defaultMode
-
420 - name
-
rbac-policies
外部ファイル
rbac-policies.csvおよびrbac-conditional-policies.yamlを使用するように、Developer Hub のapp-config.yaml設定ファイルを更新します。app-config.ymlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第6章 RBAC UI を使用したゲストアクセスの設定 リンクのコピーリンクがクリップボードにコピーされました!
ロールベースのアクセス制御 (RBAC) フロントエンドプラグインでゲストアクセスを使用すると、認証プロバイダーの設定および構成の必要がなく、ユーザーがロールとポリシーの作成をテストできるようになります。
ゲストアクセスは実稼働環境では推奨されません。
6.1. RBAC バックエンドプラグインの設定 リンクのコピーリンクがクリップボードにコピーされました!
app-config.yaml ファイルを更新してパーミッションフレームワークを有効にして、RBAC バックエンドプラグインを設定できます。
前提条件
-
Developer Hub に
@janus-idp/backstage-plugin-rbacプラグインをインストールした。詳細は、動的プラグインの設定 を参照してください。
手順
-
次のように
app-config.yamlファイルを更新して、パーミッションフレームワークを有効にします。
app-config.yaml セクションの pluginsWithPermission セクションには、デフォルトで 3 つのプラグインのみが含まれます。必要に応じて、パーミッションを組み込む追加のプラグインも含めるように、セクションも更新します。
6.2. ゲスト認証プロバイダーの設定 リンクのコピーリンクがクリップボードにコピーされました!
ゲスト認証を有効にし、RBAC フロントエンドプラグインと一緒に使用できます。
前提条件
-
Developer Hub に
@janus-idp/backstage-plugin-rbacプラグインをインストールした。詳細は、動的プラグインの設定 を参照してください。
手順
-
app-config.yamlファイルで、次の例に示すように、ユーザーエンティティー参照を追加して、dangerouslyAllowOutsideDevelopmentオプションを解決して有効にします。
user:default/guest をユーザーエンティティー参照として使用し、app-config.yaml ファイルの permission.rbac.admin.users セクションで追加されたユーザーを照合できます。
第7章 権限ポリシーリファレンス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub の権限ポリシーは、リソースまたは機能へのアクセスを管理する一連のルールです。これらのポリシーは、ユーザーのロールに基づいてユーザーに付与される認可レベルを示します。権限ポリシーは、特定の環境内でセキュリティーと機密性を維持するために実装されます。
Developer Hub では、次の種類の権限を定義できます。
- リソースタイプ
- 基本
2 種類の権限の違いは、定義されたリソースタイプが権限に含まれているかどうかによって決まります。
リソースタイプ権限は、次の例に示すように、関連するリソースタイプまたは権限名のいずれかを使用して定義できます。
リソースタイプ権限の定義の例
p, role:default/myrole, catalog.entity.read, read, allow g, user:default/myuser, role:default/myrole p, role:default/another-role, catalog-entity, read, allow g, user:default/another-user, role:default/another-role
p, role:default/myrole, catalog.entity.read, read, allow
g, user:default/myuser, role:default/myrole
p, role:default/another-role, catalog-entity, read, allow
g, user:default/another-user, role:default/another-role
基本的な権限は、次の例に示すように、権限名を使用して Developer Hub で定義できます。
基本的な権限の定義の例
p, role:default/myrole, catalog.entity.create, create, allow g, user:default/myuser, role:default/myrole
p, role:default/myrole, catalog.entity.create, create, allow
g, user:default/myuser, role:default/myrole
Developer Hub は次の権限ポリシーをサポートしています。
- Catalog 権限
- .Catalog 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
|
| ユーザーまたはロールがカタログから読み取ることを許可する |
|
|
| ユーザーまたはロールがカタログエンティティーを作成することを許可する。これには、カタログ内の既存のコンポーネントの登録も含まれます。 | |
|
|
|
| ユーザーまたはロールがカタログから単一または複数のエンティティーを更新することを許可する。 |
|
|
|
| ユーザーまたはロールがカタログから単一または複数のエンティティーを削除することを許可する。 |
|
|
| ユーザーまたはロールがカタログから単一または複数の場所を読み取ることを許可する | |
|
|
| ユーザーまたはロールがカタログ内に場所を作成することを許可する | |
|
|
| ユーザーまたはロールがカタログから場所を削除することを許可する |
- 一括インポートパーミッション
- .一括インポートパーミッション
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
|
| すべての GitHub インテグレーションでアクセス可能なすべてのリポジトリーと組織のリスト表示や、インポート要求の管理など、一括インポートエンドポイントにユーザーがアクセスできるようにする |
- Scaffolder 権限
- .Scaffolder 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
|
| テンプレートからのアクションの実行を許可する |
|
|
|
| ユーザーまたはロールがテンプレートから 1 つまたは複数のパラメーターを読み取ることを許可する |
|
|
|
| ユーザーまたはロールがテンプレートから 1 つまたは複数のステップを読み取ることを許可する |
|
|
| ユーザーまたはロールが新しいスキャフォールダータスクを作成するソフトウェアテンプレートをトリガーすることを許可する | |
|
|
| ユーザーまたはロールが現在実行中のスキャフォールダータスクをキャンセルすることを許可する | |
|
|
| ユーザーまたはロールがすべてのスキャフォールダータスクとそれに関連するイベントおよびログを読み取ることを許可する |
- RBAC 権限
- .RBAC 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
|
| ユーザーまたはロールが権限ポリシーとロールを読み取ることを許可する |
|
|
|
| ユーザーまたはロールが単一または複数の権限ポリシーとロールを作成することを許可する |
|
|
|
| ユーザーまたはロールが単一または複数の権限ポリシーとロールを更新することを許可する |
|
|
|
| ユーザーまたはロールが単一または複数の権限ポリシーとロールを削除することを許可する |
- Kubernetes 権限
- .Kubernetes 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可する |
- OCM 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| ユーザーまたはロールが OCM プラグインから読み取ることを許可する | |
|
|
| ユーザーまたはロールが OCM プラグイン内のクラスター情報を読み取ることを許可する |
- トポロジー権限
- .Topology 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| ユーザーまたはロールがトポロジープラグインを表示することを許可する | |
|
|
| ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可し、RHDH 内の Pod ログとイベントを読み取ることを許可する |
第8章 Red Hat Developer Hub の条件付きポリシー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub の権限フレームワークでは、RBAC バックエンドプラグイン (backstage-plugin-rbac-backend) によってサポートされる条件を使用できます。条件は、RBAC バックエンドプラグインによって提供される Developer Hub リソースのコンテンツフィルターとして機能します。
RBAC バックエンド API は、ロールに割り当てられた条件をデータベースに保存します。ユーザーがフロントエンドリソースへのアクセスを要求すると、RBAC バックエンド API は、対応する条件を検索し、プラグイン ID を使用して適切なプラグインに条件を委譲します。異なる条件を持つ複数のロールにユーザーが割り当てられていると、RBAC バックエンドは anyOf 基準を使用して条件をマージします。
- 条件基準
Developer Hub の条件は、ルールとパラメーターを含む単純な条件です。ただし、条件には、条件基準によって結合されたパラメーターまたはパラメーターの配列を含めることもできます。サポートされている条件基準は次のとおりです。
-
allOf: 結合された条件が満たされるためには、配列内のすべての条件が true でなければならない。 -
anyOf: 結合された条件が満たされるためには、配列内の条件の少なくとも 1 つが true でなければならない。 -
not: 結合された条件が満たされるためには、その中の条件が true であってはならない。
-
- 条件オブジェクト
条件でサポートされるパラメーターは、プラグインによって指定されます。RBAC API エンドポイントから条件オブジェクトスキーマにアクセスすると、RBAC バックエンドプラグイン API で使用される JSON 条件オブジェクトの構築方法を確認できます。
条件オブジェクトには次のパラメーターがあります。
Expand 表8.1 条件オブジェクトのパラメーター パラメーター 型 説明 resultString
常に
CONDITIONALの値を持つroleEntityRefString
RBAC ロールへの文字列エンティティー参照 (
role:default/devなど)pluginIdString
対応するプラグイン ID (
catalogなど)permissionMappingString array
権限アクションの配列
(['read', 'update', 'delete']など)resourceTypeString
プラグインによって提供されるリソースタイプ (
catalog-entityなど)conditionsJSON
条件によって結合されたパラメーターまたは配列パラメーターを含む条件 JSON
- 条件付きポリシーエイリアス
RBAC バックエンドプラグイン (
backstage-plugin-rbac-backend) は、条件付きポリシールールパラメーターでのエイリアスの使用をサポートしています。条件付きポリシーエイリアスは、ポリシー評価中に対応する値に動的に置き換えられます。条件付きポリシー内の各エイリアスには、その特殊な機能を示す$記号が先頭に付きます。サポートされている条件付きエイリアスは次のとおりです。
-
$currentUser: このエイリアスは、リソースへのアクセスを要求するユーザーのユーザーエンティティー参照に置き換えられます。たとえば、デフォルトの namespace のユーザー Tom がアクセスを要求すると、$currentUserはuser:default/tomになります。
-
$currentUser エイリアスを使用した条件付きポリシーオブジェクトの例
-
$ownerRefs: このエイリアスは所有者参照に置き換えられます。通常は、ユーザーエンティティー参照とユーザーの親グループエンティティー参照を含む配列として表されます。たとえば、team-a のユーザー Tom の場合、$ownerRefsは['user:default/tom', 'group:default/team-a']になります。
$ownerRefs エイリアスを使用した条件付きポリシーオブジェクトの例
8.1. 条件付きポリシーリファレンス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub では、条件付きポリシー用の API エンドポイントにアクセスできます。たとえば、条件付きポリシーを定義するのに役立つ利用可能な条件ルールを取得するために、GET [api/plugins/condition-rules] エンドポイントにアクセスできます。
api/plugins/condition-rules は、条件パラメータースキーマを返します。次に例を示します。
RBAC バックエンド API は、上記の条件スキーマに基づいて JSON 条件オブジェクトを構築します。
8.1.1. 条件付きポリシーの例 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub では、基準のある、または基準のない条件付きポリシーを定義できます。次の例を使用して、ユースケースに応じて条件を定義できます。
- 基準のない条件
ユーザーが所有者グループに属する場合にのみカタログを表示する、基準のない条件を考えてみます。この条件を追加するには、カタログプラグインスキーマ
IS_ENTITY_OWNERを次のように使用します。基準のない条件の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の例では、条件パラメーターとして、ユーザーまたはグループエンティティー参照のリストを含む
Claimsだけが使用されています。次のように追加のパラメーターを追加することで、上記の例の条件を RBAC REST API に適用できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 基準のある条件
ユーザーが所有者グループに属する場合にのみカタログを表示するか、すべてのカタログユーザーグループのリストを表示する、基準のある条件を考えてみます。
基準を追加するには、次のように、条件に
IS_ENTITY_KINDとして別のルールを追加します。基準のある条件の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記作成中に条件を並行して実行することは、サポートされていません。したがって、利用可能な基準に基づいて、ネストされた条件付きポリシーを定義することを検討してください。
ネストされた条件の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のように追加のパラメーターを追加することで、上記の例の条件を RBAC REST API に適用できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下の例は、Developer Hub プラグインで使用できます。以下の例は、条件付きポリシーを定義する方法を決定するのに役立ちます。
Keycloak プラグイン用に定義した条件付きポリシー
上記の Keycloak プラグインの例では、role:default/developer のユーザーが、Keycloak プラグインからカタログに取り込まれたユーザーを更新または削除できないようにしています。
上記の例では、アノテーション keycloak.org/realm に <YOUR_REALM> の値が必要です。
Quay プラグイン用に定義した条件付きポリシー
上記の Quay プラグインの例では、ロール role:default/developer が Quay の scaffolder アクションを使用できないようにしています。permissionMapping に use が含まれていることに注意してください。これは、scaffolder-action リソースタイプ権限に権限ポリシーがないことを示しています。
Red Hat Developer Hub の権限の詳細は、7章権限ポリシーリファレンス を参照してください。
第9章 Red Hat Developer Hub のユーザー統計 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub では、licensed-users-info-backend プラグインが、Web UI または REST API エンドポイントを使用してログインしたユーザーに関する統計情報を提供します。
licensed-users-info-backend プラグインを使用すると、管理者は Developer Hub 上のアクティブユーザーの数を監視できます。この機能を使用すると、組織は実際の使用状況と購入したライセンスの数を比較できます。さらに、透明性と正確なライセンスを実現するために、ユーザーメトリクスを Red Hat と共有することもできます。
デフォルトでは、licensed-users-info-backend プラグインが有効になっています。このプラグインにより、Administration → RBAC タブの下部にある Download User List リンクが有効になります。
9.1. Red Hat Developer Hub でのアクティブユーザーリストのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Developer Hub Web インターフェイスを使用して、ユーザーのリストを CSV 形式でダウンロードできます。
前提条件
-
RBAC プラグイン (
@janus-idp/backstage-plugin-rbacおよび@janus-idp/backstage-plugin-rbac-backend) を Red Hat Developer Hub で有効にする必要があります。 - 管理者ロールを割り当てる必要があります。
手順
- Red Hat Developer Hub で、Administration に移動し、RBAC タブを選択します。
- RBAC ページの下部にある Download User List をクリックします。
- オプション: Save as フィールドでファイル名を変更し、Save をクリックします。
- ダウンロードしたユーザーリストにアクセスするには、ローカルマシンの Downloads フォルダーに移動し、CSV ファイルを開きます。