第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

基本的な権限は、次の例に示すように、権限名を使用して Developer Hub で定義できます。

基本的な権限の定義の例

p, role:default/myrole, catalog.entity.create, create, allow
g, user:default/myuser, role:default/myrole

Developer Hub では、次の権限ポリシーがサポートされます。

Catalog 権限
名前リソースタイプポリシー説明

catalog.entity.read

catalog-entity

read

ユーザーまたはロールがカタログから読み取ることを許可します。

catalog.entity.create

 

create

ユーザーまたはロールによるカタログエンティティーの作成 (既存のコンポーネントをカタログに登録することを含む) を許可します。

catalog.entity.refresh

catalog-entity

update

ユーザーまたはロールがカタログから単一または複数のエンティティーを更新することを許可します。

catalog.entity.delete

catalog-entity

delete

ユーザーまたはロールがカタログから単一または複数のエンティティーを削除することを許可します。

catalog.location.read

 

read

ユーザーまたはロールがカタログから単一または複数の場所を読み取ることを許可します。

catalog.location.create

 

create

ユーザーまたはロールがカタログ内に場所を作成することを許可します。

catalog.location.delete

 

delete

ユーザーまたはロールがカタログから場所を削除することを許可します。

Scaffolder 権限
名前リソースタイプポリシー説明

scaffolder.action.execute

scaffolder-action

 

テンプレートからのアクションの実行を許可します。

scaffolder.template.parameter.read

scaffolder-template

read

ユーザーまたはロールがテンプレートから単一または複数のパラメーターを読み取ることを許可します。

scaffolder.template.step.read

scaffolder-template

read

ユーザーまたはロールがテンプレートから単一または複数のステップを読み取ることを許可します。

scaffolder.task.create

 

create

ユーザーまたはロールが新しい scaffolder タスクを作成するソフトウェアテンプレートをトリガーすることを許可します。

scaffolder.task.cancel

  

ユーザーまたはロールが現在実行中の scaffolder タスクをキャンセルすることを許可します。

scaffolder.task.read

 

read

ユーザーまたはロールがすべての scaffolder タスクとそれに関連するイベントおよびログを読み取ることを許可します。

RBAC 権限
名前リソースタイプポリシー説明

policy.entity.read

policy-entity

read

ユーザーまたはロールに権限ポリシーとロールの読み取りを許可します。

policy.entity.create

policy-entity

create

ユーザーまたはロールが単一または複数の権限ポリシーとロールを作成することを許可します。

policy.entity.update

policy-entity

update

ユーザーまたはロールが単一または複数の権限ポリシーとロールを更新することを許可します。

policy.entity.delete

policy-entity

delete

ユーザーまたはロールが単一または複数の権限ポリシーとロールを削除することを許可します。

Kubernetes 権限
名前リソースタイプポリシー説明

kubernetes.proxy

  

ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可します。

OCM 権限
名前リソースタイプポリシー説明

ocm.entity.read

 

read

ユーザーまたはロールが OCM プラグインから読み取ることを許可します。

ocm.cluster.read

 

read

ユーザーまたはロールが OCM プラグイン内のクラスター情報を読み取ることを許可します。

トポロジー権限
名前リソースタイプポリシー説明

topology.view.read

 

read

ユーザーまたはロールがトポロジープラグインを表示することを許可します。

kubernetes.proxy

  

ユーザーまたはロールがプロキシーエンドポイントにアクセスし、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 ファイルを設定して、パーミッションポリシー管理者を有効にすることができます。

permission:
  enabled: true
  rbac:
    admin:
      users:
        - name: user:default/joeuser

権限ポリシーロール (role:default/rbac_admin) は、Developer Hub のデフォルトのロールです。権限ポリシー/ロールの作成、読み取り、更新、削除、カタログからの読み取りなどの権限を作成時に追加します。

デフォルトの権限が要件に適していない場合は、適切な権限ポリシーを使用して、要件に合わせて新しい管理者ロールを定義できます。または、オプションの superUsers 設定値を使用して、Developer Hub 全体に無制限の権限を付与することもできます。

superUsers は、app-config.yaml ファイルで次のように設定できます。

# ...
permission:
  enabled: true
  rbac:
    admin:
      superUsers:
        - name: user:default/joeuser
        # ...

2.1.2. 外部ファイルで定義された権限ポリシーの設定

Red Hat Developer Hub を起動する前に、権限ポリシーを設定できます。権限ポリシーが外部ファイルで定義されている場合は、同じファイルを Developer Hub にインポートできます。次の Casbin ルール形式を使用して、権限ポリシーを定義する必要があります。

---
`p, <ROLE>, <PERMISSION_NAME or PERMISSION_RESOURCE_TYPE>, <PERMISSION_POLICY_ACTION>, <ALLOW or DENY>`
---

次の Casbin ルール形式を使用してロールを定義できます。

---
`g, <USER or GROUP>, <ROLE>`
---
注記

Casbin ルールの形式の詳細は、Casbin ルールの基本 を参照してください。

以下は、権限ポリシーの設定例です。

---
`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`
---

app-config.yaml ファイルで、policy.csv ファイルのパスを定義できます。

permission:
  enabled: true
  rbac:
    policies-csv-file: /some/path/rbac-policy.csv

オプションの設定値を使用すると、Developer Hub インスタンスを再起動せずに CSV ファイルを再読み込みできるようになります。

app-config.yaml ファイルで policyFileReload オプションの値を設定します。

# ...
permission:
  enabled: true
  rbac:
    policies-csv-file: /some/path/rbac-policy.csv
    policyFileReload: true
    # ...

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 チャートを使用してインストールおよびデプロイされている。

手順

  1. 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

  2. Developer Hub Helm チャートで、Root Schema Backstage chart schema Backstage parameters Backstage container additional volume mounts に移動します。
  3. Add Backstage container additional volume mounts を選択し、次の値を追加します。

    • mountPath: opt/app-root/src/rbac
    • Name: rbac-policy
  4. RBAC ポリシーを、Developer Hub Helm チャートの Backstage container additional volumes に追加します。

    • name: rbac-policy
    • configMap

      • defaultMode: 420
      • name: rbac-policy
  5. app-config.yaml ファイル内のポリシーパスを、次のように更新します。

    app-config.yaml ファイルの例

    permission:
      enabled: true
      rbac:
        policies-csv-file: ./rbac/rbac-policy.csv

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.