第5章 Red Hat Developer Hub のロールベースアクセス制御 (RBAC)
ロールベースアクセス制御は、認可済みユーザーへのアクセスを制限するセキュリティーパラダイムです。この機能を使用すると、特定の権限を持つロールが定義され、それらのロールがユーザーに割り当てられます。
Red Hat Developer Hub は RBAC を使用して、プラットフォーム内の権限システムを改善します。Developer Hub の RBAC 機能は、管理者ロールを導入し、効率的なアクセス制御を促進して、チーム、グループ、ユーザーを含む組織構造を活用します。
5.1. 権限ポリシーの設定
Red Hat Developer Hub では、2 つの方法で権限ポリシーを設定できます。
- 権限ポリシー管理者の設定
- 外部ファイルで定義された権限ポリシーの設定
5.1.1. 権限ポリシー管理者の設定
Developer Hub のユーザーとグループの権限ポリシーは、権限ポリシー管理者が管理します。ロールベースアクセス制御 REST API には、権限ポリシー管理者のみアクセスできます。
ポリシー管理者を設定する目的は、特定の制限された数の認証済みユーザーが RBAC REST API にアクセスできるようにすることです。権限ポリシーは、app-config-rhdh
ConfigMap で参照される policy.csv
ファイルで定義されます。OpenShift プラットフォーム管理者またはクラスター管理者は、Red Hat Developer Hub がデプロイされている名前空間にアクセスしてこのタスクを実行できます。
次のように、app-config.yaml
ファイルで権限ポリシー管理者の認証情報を設定できます。
permission: enabled: true rbac: admin: users: - name: user:default/joeuser
5.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
5.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 Container Platform Web コンソールを使用して OpenShift Container Platform アカウントにログインしています。
Red Hat Developer Hub が、Helm Chart を使用してインストールおよびデプロイされている。
Helm Chart を使用して OpenShift Container Platform に Red Hat Developer Hub をインストールする方法の詳細は、「Helm Chart を使用した OpenShift Container Platform への Red Hat Developer Hub のデプロイ」 を参照してください。
手順
OpenShift Container Platform で、次の例に示すように、ポリシーを保持する 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
5.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 権限
名前 | リソースタイプ | ポリシー | 説明 |
---|---|---|---|
| ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可します。 |