第4章 Red Hat Developer Hub のロールベースアクセス制御 (RBAC)
ロールベースアクセス制御は、認可済みユーザーへのアクセスを制限するセキュリティーパラダイムです。この機能を使用すると、特定の権限を持つロールが定義され、それらのロールがユーザーに割り当てられます。
Red Hat Developer Hub は RBAC を使用して、プラットフォーム内の権限システムを改善します。Developer Hub の RBAC 機能は、管理者ロールを導入し、効率的なアクセス制御を促進して、チーム、グループ、ユーザーを含む組織構造を活用します。
4.1. 権限ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub では、2 つの方法で権限ポリシーを設定できます。
- 権限ポリシー管理者の設定
- 外部ファイルで定義された権限ポリシーの設定
4.1.1. 権限ポリシー管理者の設定 リンクのコピーリンクがクリップボードにコピーされました!
Developer Hub のユーザーとグループの権限ポリシーは、権限ポリシー管理者が管理します。ロールベースアクセス制御 REST API には、権限ポリシー管理者のみアクセスできます。
ポリシー管理者を設定する目的は、特定の制限付き認証ユーザーが RBAC REST API にアクセスできるようにすることです。パーミッションポリシーは policy.csv ファイルで定義されます。このファイルは、app-config-rhdh ConfigMap で参照されます。OpenShift プラットフォーム管理者またはクラスター管理者は、Red Hat Developer Hub がデプロイされている namespace にアクセスできるこのタスクを実行できます。
次のように、app-config.yaml ファイルで権限ポリシー管理者の認証情報を設定できます。
permission:
enabled: true
rbac:
admin:
users:
- name: user:default/joeuser
4.1.2. 外部ファイルで定義された権限ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub を起動する前に、このアプローチを使用して権限ポリシーを設定できます。権限ポリシーが外部ファイルで定義されている場合は、同じファイルを Developer Hub にインポートできます。権限ポリシーは、Casbin ルール形式で定義する必要があります。Casbin ルールの形式の詳細は、Casbin ルールの基本 を参照してください。
以下は、権限ポリシーの設定例です。
p, role:default/guests, catalog-entity, read, deny
p, role:default/guests, catalog.entity.create, create, deny
g, user:default/<USER_TO_ROLE>, role:default/guests
定義された権限に関連付けられたアクションが含まれていない場合は、ポリシーとして use を追加します。以下の例を参照してください。
p, role:default/guests, kubernetes.proxy, use, deny
app-config.yaml ファイルで、policy.csv ファイルのパスを定義できます。
permission:
enabled: true
rbac:
policies-csv-file: /some/path/rbac-policy.csv
4.1.2.1. Developer Hub Helm Chart に policy.csv ファイルをマウントする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub が Helm Chart を使用してデプロイされている場合は、policy.csv ファイルを Developer Hub Helm Chart にマウントすることで、それを定義する必要があります。
configMap を作成してマウントすることで、policy.csv ファイルを Developer Hub Helm Chart に追加できます。
前提条件
- OpenShift Web コンソールを使用して OCP にログインしている。
Red Hat Developer Hub が、Helm Chart を使用してインストールおよびデプロイされている。
Helm Chart を使用して Red Hat Developer Hub をインストールする場合の詳細は、2章Helm チャートを使用した Red Hat Developer Hub のインストール を参照してください。
手順
ポリシーを保持するために、Red Hat OpenShift で次の例のとおり configMap を作成します。
ConfigMapの例kind: ConfigMap apiVersion: v1 metadata: name: rbac-policy namespace: rhdh data: rbac-policy.csv: | p, role:default/guests, catalog-entity, read, allow p, role:default/guests, catalog.entity.create, create, allow g, user:default/<YOUR_USER>, role:default/guests-
Developer Hub Helm Chart で、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 Chart の 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.csv
4.1.3. Red Hat Developer Hub の権限ポリシー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub の権限ポリシーは、リソースまたは機能へのアクセスを管理する一連のルールです。これらのポリシーは、ユーザーのロールに基づいてユーザーに付与される認可レベルを示します。権限ポリシーは、特定の環境内でセキュリティーと機密性を維持するために実装されます。
Developer Hub では、次の権限ポリシーがサポートされます。
- Catalog 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| read | ユーザーまたはロールがカタログから読み取ることを許可します。 |
|
| create | ユーザーまたはロールによるカタログエンティティーの作成 (既存のコンポーネントをカタログに登録することを含む) を許可します。 | |
|
|
| update | ユーザーまたはロールがカタログから単一または複数のエンティティーを更新することを許可します。 |
|
|
| delete | ユーザーまたはロールがカタログから単一または複数のエンティティーを削除することを許可します。 |
|
| read | ユーザーまたはロールがカタログから単一または複数の場所を読み取ることを許可します。 | |
|
| create | ユーザーまたはロールがカタログ内に場所を作成することを許可します。 | |
|
| delete | ユーザーまたはロールがカタログから場所を削除することを許可します。 |
- Scaffolder 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| テンプレートからのアクションの実行を許可します。 | |
|
|
| read | ユーザーまたはロールがテンプレートから単一または複数のパラメーターを読み取ることを許可します。 |
|
|
| read | ユーザーまたはロールがテンプレートから単一または複数のステップを読み取ることを許可します。 |
- RBAC 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
|
| read | ユーザーまたはロールに権限ポリシーとロールの読み取りを許可します。 |
|
|
| create | ユーザーまたはロールが単一または複数の権限ポリシーとロールを作成することを許可します。 |
|
|
| update | ユーザーまたはロールが単一または複数の権限ポリシーとロールを更新することを許可します。 |
|
|
| delete | ユーザーまたはロールが単一または複数の権限ポリシーとロールを削除することを許可します。 |
- Kubernetes 権限
| 名前 | リソースタイプ | ポリシー | 説明 |
|---|---|---|---|
|
| ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可します。 |