第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 に追加できます。

前提条件

手順

  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 Chart で、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 Chart の 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

5.1.3. Red Hat Developer Hub の権限ポリシー

Red Hat Developer Hub の権限ポリシーは、リソースまたは機能へのアクセスを管理する一連のルールです。これらのポリシーは、ユーザーのロールに基づいてユーザーに付与される認可レベルを示します。権限ポリシーは、特定の環境内でセキュリティーと機密性を維持するために実装されます。

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

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

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

  

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

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.