Red Hat Developer Hub での認可
Red Hat Developer Hub でロールベースアクセス制御 (RBAC) を使用して認可を設定する
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
管理者は、ユーザーにアクションの実行を許可し、Developer Hub でユーザーが実行できる操作を定義できます。
ロールベースアクセス制御 (RBAC) は、システムのユーザーと、そのユーザーがシステム内のリソースに対して実行できるアクションとの間のマッピングを指定することにより、システム内のリソースへのアクセスを制御する方法を定義するセキュリティー概念です。RBAC を使用すると、特定のパーミッションを持つロールを定義し、そのロールをユーザーとグループに割り当てることができます。
Developer Hub の RBAC は、コード内で RBAC ポリシーを定義するパーミッションフレームワーク上に構築されています。コードでポリシーを定義するのではなく、Developer Hub の RBAC 機能を使用し、シンプルな CSV ベースの形式を使用して宣言的にポリシーを定義できます。CSV を直接編集するのではなく、Developer Hub Web インターフェイスまたは REST API を使用してポリシーを定義できます。
管理者は、次の手順を実行して、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/backstage-community-plugin-rbacプラグインを有効にするには、dynamic-plugins.yamlを次の内容で編集します。dynamic-plugins.yamlフラグメントplugins: - package: ./dynamic-plugins/dist/backstage-community-plugin-rbac disabled: falseplugins: - package: ./dynamic-plugins/dist/backstage-community-plugin-rbac disabled: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Developer Hub でのプラグインのインストールと表示 を参照してください。
ポリシー管理者を宣言して、選択した数人の認証済みユーザーが、CSV ファイルを直接変更することなく、REST API または Web UI を使用して RBAC ポリシーを設定できるようにします。パーミッションは、
my-rhdh-app-configconfig map で参照される別の CSV ファイルで指定することも、REST API または Web UI を使用して作成することもできます。<your_policy_administrator_name> などのユーザーをポリシー管理者として宣言するには、
app-config-rhdhなどのカスタム Developer Hub ConfigMap を編集し、次のコードをapp-config.yamlコンテンツに追加します。app-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストールされたプラグインによって提供される利用可能なパーミッションを Developer Hub Web UI に表示するには、対応するプラグイン ID を カスタムの Developer Hub 設定ファイル
app-config.yamlに追加します。RBAC UI で利用可能なパーミッションを表示するには、
app-config-rhdhなどのカスタム Developer Hub ConfigMap を編集し、次のコードをapp-config.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
必須
namespaceエンティティーの namespace
String
必須
nameエンティティーの名前
String
必須
memberReferences関連するグループの情報
String
必須
応答の例
204
204Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [DELETE] /api/permission/roles/<kind>/<namespace>/<name>
Developer Hub から、指定されたロールを削除します。
Expand 表4.3 要求パラメーター 名前 説明 型 要否 kindエンティティーの種類
String
必須
namespaceエンティティーの namespace
String
必須
nameエンティティーの名前
String
必須
応答の例
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
必須
namespaceエンティティーの namespace
String
必須
nameエンティティーに関連する名前
String
必須
応答例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [POST] /api/permission/policies
指定されたエンティティーのパーミッションポリシーを作成します。
Expand 表4.5 要求パラメーター 名前 説明 型 要否 entityReferencekind、namespace、nameを含むエンティティーの参照値String
必須
permission特定のプラグイン、リソースタイプ、または名前からのパーミッション
String
必須
policyパーミッションのポリシーアクション (
create、read、update、delete、useなど)String
必須
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
必須
policyパーミッションのポリシーアクション (
create、read、update、delete、useなど)String
必須
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
必須
namespaceエンティティーの namespace
String
必須
nameエンティティーに関連する名前
String
必須
permission特定のプラグイン、リソースタイプ、または名前からのパーミッション
String
必須
policyパーミッションのポリシーアクション (
create、read、update、delete、useなど)String
必須
effectポリシーを許可するかどうか
String
必須
応答の例
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
必須
namespaceエンティティーの namespace
String
必須
nameエンティティーに関連する名前
String
必須
応答の例
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
必須
roleEntityRefRBAC ロールへの文字列エンティティー参照 (
role:default/devなど)String
必須
pluginId対応するプラグイン ID (
catalogなど)String
必須
permissionMappingパーミッションアクションの配列 (
['read', 'update', 'delete']など)String array
必須
resourceTypeプラグインによって提供されるリソースタイプ (
catalog-entityなど)String
必須
conditions条件によって結合されたパラメーターまたは配列パラメーターを含む条件 JSON
JSON
必須
nameロールの名前
String
必須
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
必須
roleEntityRefRBAC ロールへの文字列エンティティー参照 (
role:default/devなど)String
必須
pluginId対応するプラグイン ID (
catalogなど)String
必須
permissionMappingパーミッションアクションの配列 (
['read', 'update', 'delete']など)String array
必須
resourceTypeプラグインによって提供されるリソースタイプ (
catalog-entityなど)String
必須
conditions条件によって結合されたパラメーターまたは配列パラメーターを含む条件 JSON
JSON
必須
nameロールの名前
String
必須
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 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.yamlファイルのフラグメント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.yamlファイルのフラグメント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プラグインがインストールされている。詳細は、{plugins-configure-book-title} を参照してください。
手順
-
次のように
app-config.yamlファイルを更新して、パーミッションフレームワークを有効にします。
app-config.yaml ファイルの pluginsWithPermission セクションには、デフォルトでは 3 つのプラグインのみが含まれています。必要に応じて、パーミッションを組み込む追加のプラグインも含めるように、セクションも更新します。
6.2. ゲスト認証プロバイダーの設定 リンクのコピーリンクがクリップボードにコピーされました!
ゲスト認証を有効にし、RBAC フロントエンドプラグインと一緒に使用できます。
前提条件
-
Developer Hub に
@janus-idp/backstage-plugin-rbacプラグインがインストールされている。詳細は、{plugins-configure-book-title} を参照してください。
手順
-
app-config.yamlファイルで、次の例に示すように、ユーザーエンティティー参照を追加して、dangerouslyAllowOutsideDevelopmentオプションを解決して有効にします。
user:default/guest をユーザーエンティティー参照として使用し、app-config.yaml ファイルの permission.rbac.admin.users セクションで追加されたユーザーを照合できます。
第7章 Red Hat Developer Hub でのロールベースアクセス制御 (RBAC) アクセスの委譲 リンクのコピーリンクがクリップボードにコピーされました!
エンタープライズのお客様には、ロールベースアクセス制御 (RBAC) の管理権限を組織内の他の担当者に委譲する機能が必要です。このシナリオでは、管理者は、チームリードなど特定のユーザーに対して RBAC プラグインへのアクセス権を付与できます。各チームリードは、割り当てられた範囲外のパーミッションを表示したり制御したりすることなく、それぞれのチームまたは部門内のユーザーのみのパーミッションを管理できます。このアプローチにより、チームリードは自分のチームのアクセスやパーミッションを独立して管理できる一方で、管理者は全体を統括することができます。
Red Hat Developer Hub では、RBAC プラグインのマルチテナント機能、具体的には IS_OWNER 条件ルールを使用して RBAC アクセスを委譲できます。優先するワークフローと自動化のレベルに応じて、Web UI または RBAC バックエンド API のいずれかを使用できます。
- Web UI を使用して、直感的なインターフェイスを通じてロールの作成、ユーザーまたはグループの割り当て、パーミッションの定義、所有権条件の適用を行います。
- より柔軟で自動化可能なアプローチには API を使用します。この場合、認証された curl リクエストを使用してロール、パーミッション、所有権の条件をプログラムで管理できます。
いずれかの方法で RBAC アクセスを委譲すると、次の結果が期待できます。
- チームリードは、チームの RBAC 設定を個別に管理できます。
- 他のユーザーまたはチームのパーミッションの表示は制限されます。
- 管理者は、チーム固有のアクセスを委譲しながら、全体的な制御を維持します。
前提条件
- RHDH インスタンスが、RBAC プラグインがインストールおよび設定された状態で実行されている。
- RHDH への管理者アクセス権がある。
7.1. Web UI を使用して Red Hat Developer Hub で RBAC アクセスを委譲する リンクのコピーリンクがクリップボードにコピーされました!
Web UI を使用して、Red Hat Developer Hub で RBAC アクセスを委譲できます。
手順
- 管理者の認証情報を使用して RHDH インスタンスにログインします。
- Administration → RBAC に移動します。
-
Create Role をクリックし、
role:default/team_leadなど、チームリードの新しいロールを定義します。 -
Members セクションで、
user:default/team_leadなどのユーザーまたはグループを追加します。 以下のように、チームリードに必要なパーミッションを付与します。
-
policy.entity.create: ポリシーの作成を許可する。 -
catalog-entity:read: カタログへのアクセスを許可する。
-
アクセスを制限するには、次のように 条件 を適用します。
-
IS_OWNERルールを使用して、チームリードが自分が所有するリソースのみを管理できるようにします。
-
- Save をクリックして、ロールを作成し、変更を適用します。
検証
- チームリードとしてログインします。
以下を確認します。
- RBAC UI にアクセスできます。
- チームに関連するユーザーまたはロールのみが表示されます。
- ロールやパーミッションの範囲外へのアクセスは許可されません。
7.2. API を使用して Red Hat Developer Hub で RBAC アクセスを委譲する リンクのコピーリンクがクリップボードにコピーされました!
RBAC バックエンド API を使用して、Red Hat Developer Hub で RBAC アクセスを委譲できます。
前提条件
-
curlまたは別のツールを使用して API にアクセスできます。
手順
RBAC バックエンド API を使用して、チームリード専用の新しいロールを作成します。
RBAC バックエンド API を使用してチームリードの新しいロールを作成する例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の API リクエストを使用して、チームリードがカタログエンティティーを読み取り、RBAC プラグインパーミッションを作成できるようにします。
チームリードロールに、RBAC ポリシーの作成およびカタログエンティティーの読み取りを許可する例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow チームリードが自分の所有するもののみを管理できるようにするには、次のように
IS_OWNER条件ルールを使用します。チームリードのロールに対して
IS_OWNERルールを使用し、条件付きアクセスポリシーを適用するcurlの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前の条件付きポリシーの例では、表示と制御が所有されているロールとポリシーのみに制限されています。
チームリードとして RHDH にログインし、次のことを確認します。
次のリクエストを使用して、ロールが表示されないことを確認します。
チームリードに表示されるロールを取得するための
curlの例curl -X GET 'http://localhost:7007/api/permission/roles' \ --header "Authorization: Bearer $TEAM_LEAD_TOKEN"
curl -X GET 'http://localhost:7007/api/permission/roles' \ --header "Authorization: Bearer $TEAM_LEAD_TOKEN"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のリクエストを使用して、チームに新しいロールを作成します。
チームリードが所有権を割り当てた新しいロールをチームに作成する
curlの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記作成時に所有権を設定できますが、所有権はいつでも更新できます。
新しいロールにパーミッションポリシーを割り当てるには、次のリクエストを使用します。
新しいロールにカタログエンティティーへの読み取りアクセスを許可する
curlの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のリクエストを使用して、チームが所有するロールとポリシーのみが表示されることを確認します。
チームリードに表示されるロールとパーミッションポリシーを取得するための
curlの例curl -X GET 'http://localhost:7007/api/permission/roles' \ --header "Authorization: Bearer $TEAM_LEAD_TOKEN" curl -X GET 'http://localhost:7007/api/permission/policies' \ --header "Authorization: Bearer $TEAM_LEAD_TOKEN"
curl -X GET 'http://localhost:7007/api/permission/roles' \ --header "Authorization: Bearer $TEAM_LEAD_TOKEN" curl -X GET 'http://localhost:7007/api/permission/policies' \ --header "Authorization: Bearer $TEAM_LEAD_TOKEN"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
チームリードとしてログインし、以下を確認します。
- RBAC UI にアクセスできます。
- 割り当てられたユーザーまたはグループのみが表示されます。
- スコープ外のチームに対するパーミッションは、表示も編集もできません。
- 管理者としてログインし、完全な可視性と制御が保持されていることを確認します。
第8章 パーミッションポリシーリファレンス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub のパーミッションポリシーは、リソースまたは機能へのアクセスを管理する一連のルールです。これらのポリシーは、ユーザーのロールに基づいてユーザーに付与される認可レベルを示します。パーミッションポリシーは、特定の環境内でセキュリティーと機密性を維持するために実装されます。
Developer Hub では、次の種類のパーミッションを定義できます。
- リソースタイプ
- basic
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 パーミッションはクラスタービューへのアクセスのみを制限しますが、リソースビュー内の Kubernetes クラスターへのアクセスを妨げることはありません。より効果的なパーミッションを得るには、条件付きポリシーを適用して、
kubernetes-clusterタイプのカタログエンティティーへのアクセスを制限することを検討してください。アクセス制限は、ロールに付与されたパーミッションのセットに依存します。たとえば、ロールに完全なパーミッション (read、update、delete) がある場合は、permissionMappingフィールドにそのすべてのパーミッションを指定する必要があります。
permissionMapping 定義の例
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| ユーザーまたはロールが OCM プラグインから読み取ることを許可する | |
|
|
| ユーザーまたはロールが OCM プラグイン内のクラスター情報を読み取ることを許可する |
- トポロジーパーミッション
- .Topology パーミッション
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
|
ユーザーが | |
|
|
|
ユーザーが | |
|
|
| ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可し、RHDH 内の Pod ログとイベントを読み取ることを許可する |
- Tekton パーミッション
- .Tekton パーミッション
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
|
ユーザーが | |
|
|
|
ユーザーが | |
|
|
| ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可し、RHDH 内の Pod ログとイベントを読み取ることを許可する |
- ArgoCD パーミッション
- .ArgoCD パーミッション
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| ユーザーが ArgoCD プラグインから読み取ることを許可する |
- Quay パーミッション
- .Quay パーミッション
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| ユーザーが Quay プラグインから読み取ることを許可する |
第9章 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 表9.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 エイリアスを使用した条件付きポリシーオブジェクトの例
9.1. 条件付きポリシーリファレンス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub では、条件付きポリシー用の API エンドポイントにアクセスできます。たとえば、条件付きポリシーを定義するのに役立つ利用可能な条件ルールを取得するために、GET [api/plugins/condition-rules] エンドポイントにアクセスできます。
api/plugins/condition-rules は、条件パラメータースキーマを返します。次に例を示します。
RBAC バックエンド API は、上記の条件スキーマに基づいて JSON 条件オブジェクトを構築します。
9.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 のパーミッションの詳細は、8章パーミッションポリシーリファレンス を参照してください。
第10章 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 リンクが有効になります。
10.1. Red Hat Developer Hub でのアクティブユーザーリストのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Developer Hub Web インターフェイスを使用して、ユーザーのリストを CSV 形式でダウンロードできます。
前提条件
-
RBAC プラグイン (
@backstage-community/plugin-rbacおよび@backstage-community/plugin-rbac-backend) を Red Hat Developer Hub で有効にする。 - 管理者ロールを割り当てている。
手順
- Red Hat Developer Hub で、Administration に移動し、RBAC タブを選択します。
- RBAC ページの下部にある Download User List をクリックします。
- オプション: Save as フィールドでファイル名を変更し、Save をクリックします。
- ダウンロードしたユーザーリストにアクセスするには、ローカルマシンの Downloads フォルダーに移動し、CSV ファイルを開きます。