This documentation is for a release that is no longer maintained
See documentation for the latest supported version.認可
Red Hat Developer Hub でロールベースアクセス制御 (RBAC) を使用して認可を設定する
概要
第1章 Red Hat Developer Hub のロールベースアクセス制御 (RBAC) リンクのコピーリンクがクリップボードにコピーされました!
ロールベースアクセス制御は、認可済みユーザーへのアクセスを制限するセキュリティーパラダイムです。この機能を使用すると、特定の権限を持つロールが定義され、それらのロールがユーザーに割り当てられます。
Red Hat Developer Hub は RBAC を使用して、プラットフォーム内の権限システムを改善します。Developer Hub の RBAC 機能は、管理者ロールを導入し、効率的なアクセス制御を促進して、チーム、グループ、ユーザーを含む組織構造を活用します。
第2章 Red Hat Developer Hub の権限ポリシー リンクのコピーリンクがクリップボードにコピーされました!
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 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| read | ユーザーまたはロールがカタログから読み取ることを許可します。 |
|
| create | ユーザーまたはロールによるカタログエンティティーの作成 (既存のコンポーネントをカタログに登録することを含む) を許可します。 | |
|
|
| update | ユーザーまたはロールがカタログから単一または複数のエンティティーを更新することを許可します。 |
|
|
| delete | ユーザーまたはロールがカタログから単一または複数のエンティティーを削除することを許可します。 |
|
| read | ユーザーまたはロールがカタログから単一または複数の場所を読み取ることを許可します。 | |
|
| create | ユーザーまたはロールがカタログ内に場所を作成することを許可します。 | |
|
| delete | ユーザーまたはロールがカタログから場所を削除することを許可します。 |
- Scaffolder 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| テンプレートからのアクションの実行を許可します。 | |
|
|
| read | ユーザーまたはロールがテンプレートから単一または複数のパラメーターを読み取ることを許可します。 |
|
|
| read | ユーザーまたはロールがテンプレートから単一または複数のステップを読み取ることを許可します。 |
|
| create | ユーザーまたはロールが新しい scaffolder タスクを作成するソフトウェアテンプレートをトリガーすることを許可します。 | |
|
| ユーザーまたはロールが現在実行中の scaffolder タスクをキャンセルすることを許可します。 | ||
|
| read | ユーザーまたはロールがすべての scaffolder タスクとそれに関連するイベントおよびログを読み取ることを許可します。 |
- RBAC 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| read | ユーザーまたはロールに権限ポリシーとロールの読み取りを許可します。 |
|
|
| create | ユーザーまたはロールが単一または複数の権限ポリシーとロールを作成することを許可します。 |
|
|
| update | ユーザーまたはロールが単一または複数の権限ポリシーとロールを更新することを許可します。 |
|
|
| delete | ユーザーまたはロールが単一または複数の権限ポリシーとロールを削除することを許可します。 |
- Kubernetes 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
| ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可します。 |
- OCM 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
| read | ユーザーまたはロールが OCM プラグインから読み取ることを許可します。 | |
|
| read | ユーザーまたはロールが OCM プラグイン内のクラスター情報を読み取ることを許可します。 |
- トポロジー権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
| read | ユーザーまたはロールがトポロジープラグインを表示することを許可します。 | |
|
| ユーザーまたはロールがプロキシーエンドポイントにアクセスし、RHDH 内の Pod ログとイベントを読み取ることを許可します。 |
2.1. 権限ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub では、2 つの方法で権限ポリシーを設定できます。
- 権限ポリシー管理者の設定
- 外部ファイルで定義された権限ポリシーの設定
2.1.1. 権限ポリシー管理者の設定 リンクのコピーリンクがクリップボードにコピーされました!
Developer Hub のユーザーとグループの権限ポリシーは、権限ポリシー管理者が管理します。ロールベースアクセス制御 REST API には、権限ポリシー管理者のみアクセスできます。
ポリシー管理者を設定する目的は、特定の制限された数の認証済みユーザーが RBAC REST API にアクセスできるようにすることです。権限ポリシーは、app-config-rhdh ConfigMap で参照される policy.csv ファイルで定義されます。OpenShift プラットフォーム管理者またはクラスター管理者は、Red Hat Developer Hub がデプロイされている namespace にアクセスしてこのタスクを実行できます。
以下のように app-config.yaml ファイルを設定して、パーミッションポリシー管理者を有効にすることができます。
権限ポリシーロール (role:default/rbac_admin) は、Developer Hub のデフォルトのロールです。権限ポリシー/ロールの作成、読み取り、更新、削除、カタログからの読み取りなどの権限を作成時に追加します。
デフォルトの権限が要件に適していない場合は、適切な権限ポリシーを使用して、要件に合わせて新しい管理者ロールを定義できます。または、オプションの superUsers 設定値を使用して、Developer Hub 全体に無制限の権限を付与することもできます。
superUsers は、app-config.yaml ファイルで次のように設定できます。
2.1.2. 外部ファイルで定義された権限ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub を起動する前に、権限ポリシーを設定できます。権限ポリシーが外部ファイルで定義されている場合は、同じファイルを Developer Hub にインポートできます。次の Casbin ルール形式を使用して、権限ポリシーを定義する必要があります。
--- `p, <ROLE>, <PERMISSION_NAME or PERMISSION_RESOURCE_TYPE>, <PERMISSION_POLICY_ACTION>, <ALLOW or DENY>` ---
---
`p, <ROLE>, <PERMISSION_NAME or PERMISSION_RESOURCE_TYPE>, <PERMISSION_POLICY_ACTION>, <ALLOW or DENY>`
---
次の Casbin ルール形式を使用してロールを定義できます。
--- `g, <USER or GROUP>, <ROLE>` ---
---
`g, <USER or GROUP>, <ROLE>`
---
Casbin ルールの形式の詳細は、Casbin ルールの基本 を参照してください。
以下は、権限ポリシーの設定例です。
--- `p, role:default/guests, catalog-entity, read, allow`
---
`p, role:default/guests, catalog-entity, read, allow`
p, role:default/guests, catalog.entity.create, create, allow
g, user:default/<USER_TO_ROLE>, role:default/guests
g, group:default/<GROUP_TO_ROLE>, role:default/guests ---
定義された権限に関連付けられたアクションが含まれていない場合は、ポリシーとして use を追加します。以下の例を参照してください。
--- `p, role:default/guests, kubernetes.proxy, use, allow` ---
---
`p, role:default/guests, kubernetes.proxy, use, allow`
---
app-config.yaml ファイルで、policy.csv ファイルのパスを定義できます。
permission:
enabled: true
rbac:
policies-csv-file: /some/path/rbac-policy.csv
permission:
enabled: true
rbac:
policies-csv-file: /some/path/rbac-policy.csv
オプションの設定値を使用すると、Developer Hub インスタンスを再起動せずに CSV ファイルを再読み込みできるようになります。
app-config.yaml ファイルで policyFileReload オプションの値を設定します。
2.1.2.1. policy.csv ファイルを Developer Hub Helm チャートにマウントする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub が Helm チャートを使用してデプロイされている場合は、policy.csv ファイルを Developer Hub Helm チャートにマウントすることで、このファイルを定義する必要があります。
configMap を作成してマウントすることで、policy.csv ファイルを Developer Hub Helm チャートに追加できます。
前提条件
- OpenShift Container Platform Web コンソールを使用して OpenShift Container Platform アカウントにログインしている。
- Red Hat Developer Hub が、Helm チャートを使用してインストールおよびデプロイされている。
手順
OpenShift Container Platform で、次の例に示すように、ポリシーを保持する ConfigMap を作成します。
ConfigMapの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 -
Name:
rbac-policy
-
mountPath:
RBAC ポリシーを、Developer Hub Helm チャートの Backstage container additional volumes に追加します。
-
name:
rbac-policy configMap
-
defaultMode:
420 -
name:
rbac-policy
-
defaultMode:
-
name:
app-config.yamlファイル内のポリシーパスを、次のように更新します。app-config.yamlファイルの例permission: enabled: true rbac: policies-csv-file: ./rbac/rbac-policy.csvpermission: enabled: true rbac: policies-csv-file: ./rbac/rbac-policy.csvCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 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 表3.1 条件オブジェクトのパラメーター パラメーター 型 説明 resultString
常に
CONDITIONALの値を持つroleEntityRefString
RBAC ロールへの文字列エンティティー参照 (
role:default/devなど)pluginIdString
対応するプラグイン ID (
catalogなど)permissionMappingString array
権限アクションの配列
(['read', 'update', 'delete']など)resourceTypeString
プラグインによって提供されるリソースタイプ (
catalog-entityなど)conditionsJSON
条件によって結合されたパラメーターまたは配列パラメーターを含む条件 JSON
3.1. 条件付きポリシーの定義 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub では、条件付きポリシー用の API エンドポイントにアクセスできます。たとえば、条件付きポリシーを定義するのに役立つ利用可能な条件ルールを取得するために、GET [api/plugins/condition-rules] エンドポイントにアクセスできます。
api/plugins/condition-rules は、条件パラメータースキーマを返します。次に例を示します。
RBAC バックエンド API は、上記の条件スキーマに基づいて JSON 条件オブジェクトを構築します。
3.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 の権限の詳細は、2章Red Hat Developer Hub の権限ポリシー を参照してください。
第4章 Red Hat Developer Hub Web UI を使用したロールベースアクセス制御 (RBAC) の管理 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、Developer Hub Web インターフェイス (Web UI) を使用して、特定のロールと権限を個々のユーザーまたはグループに割り当てることができます。ロールを割り当てると、リソースと機能へのアクセスが Developer Hub 全体で確実に規制されます。
Developer Hub の管理者ロールを使用すると、ユーザーとグループに権限を割り当てることができます。これにより、ユーザーまたはグループは、Developer Hub Web UI を使用してロールを表示、作成、変更、および削除できます。
Web UI で RBAC 機能にアクセスするには、@janus-idp/backstage-plugin-rbac プラグインを動的プラグインとしてインストールおよび設定する必要があります。動的プラグインのインストールの詳細は、Red Hat Developer Hub でのプラグインの設定 を参照してください。
@janus-idp/backstage-plugin-rbac プラグインをインストールすると、サイドバーの下部に Administration オプションが表示されます。Administration をクリックすると、デフォルトで RBAC タブが表示され、Developer Hub で作成された既存のロールがすべて表示されます。RBAC タブでは、ユーザー、グループの合計数、およびロールに関連付けられた権限ポリシーの合計数も表示できます。Actions 列を使用してロールを編集または削除することもできます。
4.1. Red Hat Developer Hub Web UI でのロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
Web UI を使用して、Red Hat Developer Hub でロールを作成できます。
前提条件
- Developer Hub の管理者ロールがある。
-
Developer Hub に
@janus-idp/backstage-plugin-rbacプラグインをインストールした。詳細は、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 タブのリストに表示されます。
4.2. Red Hat Developer Hub Web UI でのロールの編集 リンクのコピーリンクがクリップボードにコピーされました!
Web UI を使用して、Red Hat Developer Hub でロールを編集できます。
policy.csv または ConfigMap ファイルから生成されたポリシーは、Developer Hub Web UI を使用して編集または削除することはできません。
前提条件
- Developer Hub の管理者ロールがある。
-
Developer Hub に
@janus-idp/backstage-plugin-rbacプラグインをインストールした。詳細は、Red Hat Developer Hub でのプラグインの設定 を参照してください。 - 必要な権限ポリシーが設定されている。詳細は、「権限ポリシーの設定」 を参照してください。
- 編集するロールが Developer Hub で作成されている。
手順
Developer Hub のサイドバーの下部にある Administration に移動します。
RBAC タブが表示され、Developer Hub で作成されたすべてのロールが表示されます。
- (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
- 編集するロールの編集アイコンを選択します。
- 名前、説明、ユーザーとグループ、権限ポリシーなどのロールの詳細を編集し、NEXT をクリックします。
- 編集したロールの詳細を確認し、SAVE をクリックします。
ロールを編集した後、ロールの OVERVIEW ページで編集したロールの詳細を表示できます。OVERVIEW ページの各カードにある編集アイコンを使用して、ロールのユーザーとグループ、または権限を編集することもできます。
4.3. Red Hat Developer Hub Web UI でのロールの削除 リンクのコピーリンクがクリップボードにコピーされました!
Web UI を使用して、Red Hat Developer Hub でロールを削除できます。
policy.csv または ConfigMap ファイルから生成されたポリシーは、Developer Hub Web UI を使用して編集または削除することはできません。
前提条件
- Developer Hub の管理者ロールがある。
-
Developer Hub に
@janus-idp/backstage-plugin-rbacプラグインをインストールした。詳細は、Red Hat Developer Hub でのプラグインの設定 を参照してください。 - 必要な権限ポリシーが設定されている。詳細は、「権限ポリシーの設定」 を参照してください。
- 削除するロールが Developer Hub で作成されている。
手順
Developer Hub のサイドバーの下部にある Administration に移動します。
RBAC タブが表示され、Developer Hub で作成されたすべてのロールが表示されます。
- (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
削除するロールの Actions 列から削除アイコンを選択します。
Delete this role? というポップアップが画面に表示されます。
- DELETE をクリックします。
第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 データの例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - HTTP ステータスコード
RBAC REST API は、応答として返される次の HTTP ステータスコードをサポートしています。
-
200OK: 要求は成功しました。 -
201Created: 要求により、新しいリソースが正常に作成されました。 -
204No Content: 要求は成功しましたが、応答ペイロードで送信する追加コンテンツはありません。 -
400Bad Request: 要求に入力エラーがありました。 -
401Unauthorized: 要求されたリソースに対する有効な認証がありません。 -
403Forbidden: 要求の承認が拒否されました。 -
404Not Found: 要求されたリソースは見つかりません。 -
409Conflict: 要求が、現在の状態およびターゲットリソースと競合しています。
-
- ソース
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/jsonAuthorization: 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" -vcurl -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" -vcurl -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- 要求を実行し、応答を確認します。
5.2. サポートされている RBAC REST API エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
RBAC REST API は、Developer Hub でロール、権限、条件付きポリシーを管理し、ロールとポリシーに関する情報を取得するためのエンドポイントを提供します。
5.2.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 表5.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 表5.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 表5.3 要求パラメーター 名前 説明 型 存在 kindエンティティーの種類
String
必須
namespaceエンティティーの namespace
String
必須
nameエンティティーの名前
String
必須
応答の例
204
204Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.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 表5.4 要求パラメーター 名前 説明 型 存在 kindエンティティーの種類
String
必須
namespaceエンティティーの namespace
String
必須
nameエンティティーに関連する名前
String
必須
応答例 (JSON)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - [POST] /api/permission/policies
指定されたエンティティーの権限ポリシーを作成します。
Expand 表5.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 表5.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 表5.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
5.2.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 表5.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 表5.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