安全なクラスター


Red Hat Advanced Cluster Management for Kubernetes 2.15

ロールベースのアクセスと証明書を使用してクラスターを保護します。

概要

ユーザーによる、特定のロールを実行するために必要なリソースへのアクセスを可能にします。

第1章 クラスターの保護

クラスター上のアクセス制御を手動で作成および管理することが必要になる場合があります。これを行うには、ワークロードをアイデンティティーおよびアクセス管理 (IAM) にオンボードするために、Red Hat Advanced Cluster Management for Kubernetes の 認証 サービス要件を設定する必要があります。

ロールベースのアクセス制御と認証を使用して、ユーザーに関連付けられたロールとクラスターの認証情報を識別します。クラスターの認証情報を作成および管理するには、認証情報が保存されている Kubernetes シークレットに移動して、認証情報にアクセスします。アクセスおよび認証情報の詳細は、以下のドキュメントを参照してください。

必要なアクセス権: クラスター管理者

1.1. ロールベースのアクセス制御

Red Hat Advanced Cluster Management for Kubernetes は、ロールベースのアクセス制御 (RBAC) に対応しています。ロールによって実行できるアクションが決まります。RBAC は、Red Hat OpenShift Container Platform と同様に Kubernetes の認可メカニズムに基づいています。RBAC の詳細は、OpenShift Container Platform ドキュメント の OpenShift RBAC の概要を参照してください。

注記: ユーザーロールのアクセスが許可されていない場合、コンソールのアクションボタンは無効になります。

1.1.1. ロールの概要

クラスター別の製品リソースと、スコープに namespace が指定されている製品リソースがあります。アクセス制御に一貫性を持たせるため、クラスターのロールバインディングと、namespace のロールバインディングをユーザーに適用する必要があります。Red Hat Advanced Cluster Management for Kubernetes でサポートされている以下のロール定義の表を参照してください。

Expand
表1.1 ロール定義の表

ロール

定義

cluster-admin

これは OpenShift Container Platform のデフォルトのロールです。cluster-admin ロールへのクラスターバインディングがあるユーザーは、すべてのアクセス権限を持つ OpenShift Container Platform のスーパーユーザーです。

open-cluster-management:cluster-manager-admin

open-cluster-management:cluster-manager-admin ロールへのクラスターバインディングがあるユーザーは、すべてのアクセス権限を持つ Red Hat Advanced Cluster Management for Kubernetes のスーパーユーザーです。このロールを指定すると、ユーザーは ManagedCluster リソースを作成できます。

open-cluster-management:admin:<managed_cluster_name>

open-cluster-management:admin:<managed_cluster_name> ロールへのクラスターバインディングがあるユーザーには、<managed_cluster_name> という名前の ManagedCluster リソースに管理者アクセス権が付与されます。ユーザーにマネージドクラスターがある場合は、このロールが自動的に作成されます。

open-cluster-management:view:<managed_cluster_name>

open-cluster-management:view:<managed_cluster_name> ロールへのクラスターバインディングがあるユーザーには、<managed_cluster_name> という名前の ManagedCluster リソースの表示権限が付与されます。

open-cluster-management:managedclusterset:admin:<managed_clusterset_name>

open-cluster-management:managedclusterset:admin:<managed_clusterset_name> ロールへのクラスターバインディングがあるユーザーには、<managed_clusterset_name> という名前の ManagedCluster リソースの管理者アクセス権が付与されます。また、ユーザーには managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.io および clusterpool.hive.openshift.io リソースへの管理者アクセス権があります。これには、cluster.open-cluster-management.io/clusterset=<managed_clusterset_name> のマネージドクラスターセットのラベルが付いています。ロールバインディングは、クラスターセットの使用時に自動的に生成されます。リソースの管理方法は、ManagedClusterSet の作成 を参照してください。

open-cluster-management:managedclusterset:view:<managed_clusterset_name>

open-cluster-management:managedclusterset:view:<managed_clusterset_name> ロールへのクラスターバインディングがあるユーザーには、<managed_clusterset_name>` という名前の ManagedCluster リソースへの表示権限が付与されます。また、ユーザーには managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.io および clusterpool.hive.openshift.io リソースの表示権限があります。これには、cluster.open-cluster-management.ioclusterset=<managed_clusterset_name> のマネージドクラスターセットのラベルが付いています。マネージドクラスターセットのリソース管理方法の詳細は、ManagedClusterSet の作成 を参照してください。

open-cluster-management:subscription-admin

open-cluster-management:subscription-admin ロールが割り当てられたユーザーは、Git サブスクリプションを作成して、リソースを複数の namespace にデプロイできます。リソースは、サブスクライブされた Git リポジトリーの Kubernetes リソース YAML ファイルで指定されます。注記: non-subscription-admin ユーザーがサブスクリプションを作成すると、リソースに指定された namespace に関係なく、すべてのリソースがサブスクリプションの namespace にデプロイされます。詳細は、アプリケーションライフサイクル RBAC セクションを参照してください。

admin、edit、view

admin、edit、および view は OpenShift Container Platform のデフォルトロールです。これらのロールに対して namespace に限定されたバインディングが指定されているユーザーは、特定の namespace 内の open-cluster-management リソースにアクセスでき、同じロールに対してクラスター全体のバインディングが指定されている場合は、クラスター全体の全 open-cluster-management リソースにアクセスできます。

open-cluster-management:managedclusterset:bind:<managed_clusterset_name>

open-cluster-management:managedclusterset:bind:<managed_clusterset_name> ロールが割り当てられたユーザーには、<managed_clusterset_name> というマネージドクラスターリソースの表示権限が付与されます。ユーザーは <managed_clusterset_name> を namespace にバインドできます。また、ユーザーには managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.io および clusterpool.hive.openshift.io リソースの表示権限があります。これは、cluster.open-cluster-management.io/clusterset=<managed_clusterset_name> のマネージドクラスターセットのラベルが付いています。リソースの管理方法は、ManagedClusterSet の作成 を参照してください。

重要:

  • ユーザーは OpenShift Container Platform からプロジェクトを作成できます。これにより、namespace の管理者ロール権限が付与されます。
  • ユーザーがクラスターへのロールアクセスを持っていない場合、クラスター名は表示されません。クラスター名は、- の記号で表示される場合があります。

1.1.2. コンソールと API RBAC テーブル

コンポーネントのロールベースのアクセス制御を理解するには、次のコンソールと API RBAC テーブルを参照してください。

Expand
表1.2 アプリケーションライフサイクルのコンソール RBAC の表
リソース管理編集表示

アプリケーション

create, read, update, delete

create, read, update, delete

read

チャネル

create, read, update, delete

create, read, update, delete

read

サブスクリプション

create, read, update, delete

create, read, update, delete

読み取り

Expand
表1.3 アプリケーションライフサイクルの API RBAC の表
API管理編集表示

applications.app.k8s.io

create, read, update, delete

create, read, update, delete

read

channels.apps.open-cluster-management.io

create, read, update, delete

create, read, update, delete

read

deployables.apps.open-cluster-management.io (非推奨)

create, read, update, delete

create, read, update, delete

read

helmreleases.apps.open-cluster-management.io

create, read, update, delete

create, read, update, delete

read

placements.apps.open-cluster-management.io

create, read, update, delete

create, read, update, delete

read

placementrules.apps.open-cluster-management.io (非推奨)

create, read, update, delete

create, read, update, delete

read

subscriptions.apps.open-cluster-management.io

create, read, update, delete

create, read, update, delete

read

configmaps

create, read, update, delete

create, read, update, delete

read

secrets

create, read, update, delete

create, read, update, delete

read

namespace

create, read, update, delete

create, read, update, delete

read

Expand
表1.4 ガバナンスのためのコンソール RBAC テーブル
リソース管理編集表示

ポリシー

create, read, update, delete

read, update

read

PlacementBindings

create, read, update, delete

read, update

read

Placements

create, read, update, delete

read, update

read

PlacementRules (非推奨)

create, read, update, delete

read, update

read

PolicyAutomations

create, read, update, delete

read, update

read

Expand
表1.5 ガバナンスのための API RBAC テーブル
API管理編集表示

policies.policy.open-cluster-management.io

create, read, update, delete

read, update

read

placementbindings.policy.open-cluster-management.io

create, read, update, delete

read, update

read

policyautomations.policy.open-cluster-management.io

create, read, update, delete

read, update

read

Expand
表1.6 可観測性の API RBAC の表

API

管理

編集

表示

multiclusterobservabilities.observability.open-cluster-management.io

create, read, update, delete

read, update

read

searchcustomizations.search.open-cluster-management.io

create, get, list, watch, update, delete, patch

-

-

policyreports.wgpolicyk8s.io

get, list, watch

get, list, watch

get, list, watch

Expand
表1.7 仮想化のロール

ロール

ロールの説明

kubevirt.io:view

クラスター内のすべての Red Hat OpenShift Virtualization リソースのみを表示します。

kubevirt.io:edit

クラスター内の Red Hat OpenShift Virtualization リソースを作成、表示、編集、および削除します。

kubevirt.io:admin

Red Hat OpenShift Virtualization のリソースの作成、表示、編集、および削除。openshift-cnv namespace の HyperConverged カスタムリソースにアクセスすることもできます。

kubevirt.io-acm-managed:admin

デフォルトの kubevirt.io ロールの拡張。仮想マシン管理者に仮想マシン関連リソースを表示し、編集し、これを削除します。問題のトラブルシューティングを行い、高度な設定および管理タスクを完了します。

kubevirt.io-acm-managed:view

デフォルトの kubevirt.io ロールの拡張であり、マネージドクラスター上の仮想マシンリソースに対して追加の表示のみの権限を付与します。仮想マシンの操作、表示設定を監視し、変更せずに仮想マシンリソースのステータスを確認します。

kubevirt.io-acm-hub:admin

クラスター全体で仮想マシンを移行する管理者権限を付与します。ハブクラスターからマルチクラスター Red Hat OpenShift Virtualization コンソール内の仮想マシンを表示するための前提条件権限を付与します。

kubevirt.io-acm-hub:view

クラスター間で仮想マシン移行の権限のみを付与します。ハブクラスターからマルチクラスター Red Hat OpenShift Virtualization コンソール内の仮想マシンを表示するための前提条件権限を付与します。

1.1.3. 関連情報

1.2. ロールベースのアクセス制御の実装

Red Hat Advanced Cluster Management for Kubernetes のロールベースアクセス制御 (RBAC) は、コンソールレベルと API レベルでロールを検証するのに役立ちます。ユーザーのアクセスロール権限に基づいて、コンソールでアクションを有効または無効にすることができます。

マルチクラスターエンジン Operator は、Red Hat Advanced Cluster Management の前提条件であり、クラスターライフサイクル機能です。マルチクラスターエンジン Operator を使用してクラスターの RBAC を管理する場合は、Kubernetes オペレーターのクラスターライフサイクルマルチクラスターエンジンのロールベースのアクセス制御 ドキュメントの RBAC ガイダンスを使用してください。

Red Hat Advanced Cluster Management の特定のライフサイクルにおける RBAC の詳細は、以下のセクションを参照してください。

1.2.1. クラスター管理のための RBAC の有効化

クラスター管理アクションを実行するには、管理対象クラスターとハブクラスターへのアクセスが必要です。複数のクラスターロールバインディングを作成する場合、clusterRoleBindings フィールドを使用して、単一の ClusterPermission リソースに複数のクラスターロールバインディングを作成できます。

複数のクラスターロールバインディングを作成するための ClusterPermission リソースを作成するには、次の手順を実行します。

  1. 多数のクラスターロールバインディングを持つ ClusterPermission リソースを作成するには、次のコマンドを実行します。

    oc create clusterpermission clusterpermission-multiple-clusterrolebindings -n <cluster-name>
    Copy to Clipboard Toggle word wrap

    リソースは、指定された clusterRoleBindings フィールドを持つ次の YAML のようになります。

    apiVersion: rbac.open-cluster-management.io/v1alpha1
    kind: ClusterPermission
    metadata:
      name: clusterpermission-multiple-clusterrolebindings
    spec:
      clusterRoleBindings:
        - name: multi-crb-binding1
          roleRef:
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
            name: argocd-application-controller-1
          subject:
            kind: User
            name: user1
        - name: multi-crb-binding2
          roleRef:
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
            name: argocd-application-controller-3
          subjects:
            - kind: User
              name: user2
            - kind: Group
              name: group1
    Copy to Clipboard Toggle word wrap

1.2.2. アプリケーションライフサイクルの RBAC の有効化

アプリケーションの作成時に、subscription namespace が作成され、configuration map が subscription namespace に作成されます。channel namespace へのアクセス権も必要です。サブスクリプションを適用する場合は、サブスクリプションの管理者である必要があります。アプリケーションの管理の詳細は、サブスクリプション管理者としての許可および拒否リストの作成 を参照してください。

以下のアプリケーションライフサイクル RBAC 操作を確認してください。

  • username という名前のユーザーを使用して、すべてのマネージドクラスターでアプリケーションを作成および管理します。クラスターロールバインディングを作成し、username にバインドする必要があります。以下のコマンドを実行します。

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>
    Copy to Clipboard Toggle word wrap

    このロールは、すべてのリソースとアクションへのスーパーユーザーアクセスを割り当てます。このロールを使用して、アプリケーションの namespace および namespace 内のすべてのアプリケーションリソースを作成できます。

  • 複数の namespace にリソースをデプロイするアプリケーションを作成します。open-cluster-management:subscription-admin クラスターロールにバインドするクラスターロールを作成し、username という名前のユーザーにバインドする必要があります。以下のコマンドを実行します。

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
    Copy to Clipboard Toggle word wrap
  • username ユーザーを使用して、cluster-name マネージドクラスター内でアプリケーションを作成および管理します。以下のコマンドを入力して、open-cluster-management:admin:<cluster-name> クラスターロールへのバインドを作成し、username にバインドする必要があります。

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>
    Copy to Clipboard Toggle word wrap

    このロールには、マネージドクラスター cluster-name のすべての application リソースに対する読み取りおよび書き込み権限があります。他のマネージドクラスターへのアクセスが必要な場合は、この操作を繰り返します。

  • 以下のコマンドを入力し、admin ロールを使用して application namespace にバインドする namespace ロールを作成し、それを username にバインドします。

    oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>
    Copy to Clipboard Toggle word wrap

    このロールには、application namespace のすべての application リソースに対する読み取りおよび書き込み権限があります。他のアプリケーションへのアクセスが必要な場合や、アプリケーションが複数の namespace にデプロイされる場合は、これを繰り返します。

  • リソースを複数の namespace にデプロイするアプリケーションを作成できます。以下のコマンドを入力して、open-cluster-management:subscription-admin クラスターロールへのバインドを作成し、username にバインドします。

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
    Copy to Clipboard Toggle word wrap
  • username という名前のユーザーで cluster-name という名前のマネージドクラスター上のアプリケーションを表示するには、open-cluster-management:view: クラスターロールにバインドするクラスターロールを作成し、username にバインドします。以下のコマンドを実行します。

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
    Copy to Clipboard Toggle word wrap

    このロールは、マネージドクラスター cluster-name のすべての application リソースに対する読み取り権限があります。他のマネージドクラスターへのアクセスが必要な場合は、この操作を繰り返します。

  • view ロールを使用して application namespace にバインドする namespace ロールを作成し、それを username にバインドします。以下のコマンドを実行します。

    oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>
    Copy to Clipboard Toggle word wrap

    このロールには、application の namespace にあるすべての application リソースに対する読み取り権限があります。他のアプリケーションへのアクセスが必要な場合は、この操作を繰り返します。

1.2.3. ガバナンスのための RBAC の有効化

ガバナンスアクションの場合、ポリシーが作成される名前空間へのアクセスと、ポリシーが適用されるマネージドクラスターへのアクセスが必要です。マネージドクラスターは、namespace にバインドされる ManagedClusterSet の一部でもある必要があります。ManagedClusterSet の詳細は、ManagedClusterSets の概要 を参照してください。

1 つ以上の ManagedClusterSets がバインドされた rhacm-policies などの namespace を選択し、namespace 内に Placement オブジェクトを作成するためのアクセス権を取得したら、次の操作を表示します。

  • PolicyPlacementBinding、および PolicyAutomation の編集アクセス権を指定して rhacm-edit-policy という名前の ClusterRole を作成するには、次のコマンドを実行します。

    oc create clusterrole rhacm-edit-policy --resource=policies.policy.open-cluster-management.io,placementbindings.policy.open-cluster-management.io,policyautomations.policy.open-cluster-management.io,policysets.policy.open-cluster-management.io --verb=create,delete,get,list,patch,update,watch
    Copy to Clipboard Toggle word wrap
  • rhacm-policies namespace にポリシーを作成するには、以前に作成した ClusterRole を使用して、rhacm-policies namespace に rhacm-edit-policy などの namespace RoleBinding を作成します。以下のコマンドを実行します。

    oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>
    Copy to Clipboard Toggle word wrap
  • マネージドクラスターのポリシーステータスを表示するには、ハブクラスターのマネージドクラスターの namespace でポリシーを表示するパーミッションが必要です。OpenShift view ClusterRole などの view アクセス権がない場合は、次のコマンドを使用して、ポリシーへの表示アクセス権を持つ ClusterRole (rhacm-view-policy など) を作成します。

    oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watch
    Copy to Clipboard Toggle word wrap
  • 新しい ClusterRole をマネージドクラスターの namespace にバインドするには、次のコマンドを実行して namespace RoleBinding を作成します。

    oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>
    Copy to Clipboard Toggle word wrap

1.2.4. 可観測性ーのための RBAC の有効化

マネージドクラスターの可観測性メトリクスを表示するには、ハブクラスター上のそのマネージドクラスターに対する view 権限が必要です。以下の可観測性機能のリストを参照してください。

  • マネージドクラスターのメトリクスへのアクセス

    ユーザーがハブクラスター上のマネージドクラスターの view ロールに割り当てられていない場合、ユーザーによるマネージドクラスターメトリクスへのアクセスは拒否されます。次のコマンドを実行して、マネージドクラスターの namespace で managedClusterView ロールの作成権限がユーザーにあるかを確認します。

    oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>
    Copy to Clipboard Toggle word wrap

    クラスター管理者として、マネージドクラスターの namespace に managedClusterView ロールを作成します。以下のコマンドを実行します。

    oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>
    Copy to Clipboard Toggle word wrap

    次に、ロールバインドを作成してロールをユーザーに適用し、バインドします。以下のコマンドを実行します。

    oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user>  -n <managedClusterName>
    Copy to Clipboard Toggle word wrap
  • リソースの検索

    ユーザーがリソースタイプにアクセスできるか確認するには、次のコマンドを使用します。

    oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>
    Copy to Clipboard Toggle word wrap

    注記: <resource-type> は複数形にする必要があります。

  • Grafana で可観測性データを表示するには、マネージドクラスターの同じ namespace に RoleBinding リソースが必要です。

    以下は RoleBinding の例です。

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
     name: <replace-with-name-of-rolebinding>
     namespace: <replace-with-name-of-managedcluster-namespace>
    subjects:
     - kind: <replace with User|Group|ServiceAccount>
       apiGroup: rbac.authorization.k8s.io
       name: <replace with name of User|Group|ServiceAccount>
    roleRef:
     apiGroup: rbac.authorization.k8s.io
     kind: ClusterRole
     name: view
    Copy to Clipboard Toggle word wrap

詳細は、ロールバインディングポリシー を参照してください。可観測性を設定するには、可観測性の詳細設定 を参照してください。

テクノロジープレビュー: Red Hat Advanced Cluster Management for Kubernetes は、仮想マシンのシナリオに対してのみ、粒度の細かいロールベースアクセス制御(RBAC)をサポートします。マネージドクラスターの namespace レベルおよびクラスターレベルでパーミッションを管理および制御します。マネージドクラスター全体に権限を付与せずに、クラスター内の仮想マシン namespace に権限を付与します。

コンソールからきめ細かな RBAC を設定する方法を学習します。

必要なアクセス権: クラスター管理者

前提条件

きめ細かなロールベースのアクセス制御の使用を開始するには、次の要件を参照してください。

  • ハブクラスターに Red Hat OpenShift Virtualization の最新バージョンをインストールする必要があります。詳細は、仮想 化 - インストール を参照してください。
  • OpenShift Container Platform のデフォルトおよび仮想化のロールとパーミッションについては、OpenShift Container Platform ドキュメントの 認証 を参照してください。
  • ロールベースのアクセス制御を有効にする方法の詳細は、ロールベースのアクセス制御の実装を 参照してください。

1.3.1. コンソールでのきめ細かなロールベースのアクセス制御の割り当て

きめ細かなロールベースのアクセス制御を使用して、仮想マシンを管理するユーザーを割り当てることができます。ユーザーロールのアクセスが許可されていない場合、コンソールでのアクションは無効になります。YAML オプションをオンにすると、入力したデータが YAML エディターに表示されるようになります。

ユーザーに権限を割り当てるには、次の手順を実行します。

  1. MultiClusterHub カスタムリソースに移動してリソースを編集し、機能を有効にします。

    1. local-cluster ビューから、Operators > Installed Operators > Advanced Cluster Management for Kubernetes をクリックします。
    2. リソースを編集するには、MultiClusterHub タブをクリックします。
    3. YAML オプションをオンにすると、YAML エディターでデータが表示されます。
    4. MultiClusterHub カスタムリソースの spec.overrides.components フィールドで、fine-grained-rbac-previewtrue に設定して機能を有効にします。YAML エディターで configOverrides 仕様を enabled: true に変更し、変更を保存します。fine-grained-rbac-preview を有効にした次の例を参照してください。
        - configOverrides: {}
          enabled: true
          name: fine-grained-rbac-preview
    Copy to Clipboard Toggle word wrap
  2. Fleet Management パースペクティブから、Infrastructure > Clusters を選択します。
  3. クラスターリストから local-cluster を選択します。
  4. ラベルの詳細フィールドの 編集 アイコンをクリックします。
  5. environment=virtualization ラベルを追加します。
  6. Save ボタンを選択して、ラベルの変更を保存します。
  7. kubevirt.io-acm-hub:view ロールを追加するための ClusterRoleBinding リソースを作成するには、User Management > Roles をクリックします。ClusterRoleBinding リソースは以下の YAML ファイルのようになります。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: kubevirt.io-acm-hub:view
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: <cluster-role-name>
    subjects:
    - kind: User
      apiGroup: rbac.authorization.k8s.io
      name: <user-name>
    Copy to Clipboard Toggle word wrap
  8. オプション:可観測性 サービスが有効になっている場合は、ユーザーが Grafana で仮想マシンの詳細を表示できるように、ハブクラスターに追加の RoleBinding リソースを作成します。
  9. コンソールから [ユーザー管理] > アイデンティティー をクリックして アイデンティティー ページに移動します。
  10. ハブクラスター上の既存のユーザーまたはグループを表示するには、[ ユーザー] タブまたは [グループ] タブを選択します。
  11. 既存のロール割り当てを表示するには、[ロール割り当て] タブをクリックします。
  12. ロールの割り当てがない場合は、[ロールの割り当ての作成] ボタンをクリックしてロールの割り当てを作成します。
  13. ロールの割り当ての範囲を選択します。
  14. 特定の選択 オプションを選択すると、使用可能なクラスターと名前空間のリストが表示されます。
  15. ロールを割り当てる特定のクラスターセットを選択します。
  16. 選択したオプションを 選択したオプション セクションに移動します。
  17. クラスターセットを選択すると、共有名前空間の選択の リストが表示されます。
  18. ターゲットとする名前空間を選択します。
  19. ロールの割り当てを作成するには、[作成] ボタンを選択します。ロールの割り当ては、[ロールの割り当て] タブに表示されます。

テクノロジープレビュー: Red Hat Advanced Cluster Management for Kubernetes は、仮想マシンシナリオに対してのみ、粒度の細かいロールベースアクセス制御(RBAC)をサポートします。クラスター管理者は、管理対象クラスターの名前空間レベルとクラスターレベルで権限を管理および制御できます。マネージドクラスター全体に権限を付与せずに、クラスター内の仮想マシン namespace に権限を付与します。

ターミナルからきめ細かなロールベースのアクセス制御 (RBAC) を設定する方法を学習します。

必要なアクセス権: クラスター管理者

OpenShift Container Platform のデフォルトおよび仮想化のロールと権限の詳細は、OpenShift Container Platform ドキュメントの 認可 を参照してください。

Red Hat Advanced Cluster Management のロールベースアクセスの詳細は、ロールベースアクセス制御の実装 を参照してください。

前提条件

きめ細かなロールベースのアクセス制御の使用を開始するには、次の要件を参照してください。

  • ハブクラスターに Red Hat OpenShift Virtualization の最新バージョンをインストールする必要があります。詳細は、仮想化 - インストール を参照してください。
  • 仮想マシンが必要です。OpenShift Container Platform のデフォルトおよび仮想化のロールと権限の詳細は、OpenShift Container Platform ドキュメントの 認可 を参照してください。
  • ロールベースのアクセス制御を有効にする方法の詳細は、ロールベースのアクセス制御の実装を 参照してください。

1.4.1. ターミナルでのきめ細かなロールベースのアクセス制御の割り当て

詳細な RBAC を有効にすると、OpenShift Virtualization の以下のロールが自動的に追加されます。

  • kubevirt.io:view
  • kubevirt.io:edit
  • kubevirt.io:admin
  • kubevirt.io-acm-managed:admin
  • kubevirt.io-acm-managed:view
  • kubevirt.io-acm-hub:admin
  • kubevirt.io-acm-hub:view

注記: 仮想マシンのライブマイグレーションを完了するには、kubevirt.io:adminkubevirt.io-acm-hub:admin、および kubevirt.io-acm-managed:view の完全なロールが必要です。

以下の手順を実行します。

  1. MultiClusterHub リソースで fine-grained-rbac-preview を有効にします。

    1. 以下のコマンドを実行します。

      oc edit mch -n open-cluster-management multiclusterhub
      Copy to Clipboard Toggle word wrap
    2. configOverrides の仕様を enabled: false から enabled: true に変更します。この機能を有効にした次の例を参照してください。

          - configOverrides: {}
            enabled: true
            name: fine-grained-rbac-preview
      Copy to Clipboard Toggle word wrap

    注記: open-cluster-management namespace を使用しない場合は oc get mch -A を実行して、MultiClusterHub リソースの名前と namespace を取得します。

  2. local-clusterenvironment=virtualization ラベルを付けます。以下のコマンドを実行します。

    oc label managedclusters local-cluster environment=virtualization
    Copy to Clipboard Toggle word wrap
  3. ClusterRoleBinding リソースを作成し、kubevirt.io-acm-hub:view ロールを追加します。以下のコマンドを実行します。

    oc create clusterrolebinding <cluster-role-binding-name> --clusterrole=kubevirt.io-acm-hub:view --user=<user-name>
    Copy to Clipboard Toggle word wrap

    ClusterRolebinding リソースは以下の YAML ファイルのようになります。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: kubevirt.io-acm-hub:view
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: <cluster-role-name>
    subjects:
    - kind: User
      apiGroup: rbac.authorization.k8s.io
      name: <user-name>
    Copy to Clipboard Toggle word wrap

1.5. 証明書

Red Hat Advanced Cluster Management 上で実行されるサービスに必要な証明書は、すべて Red Hat Advanced Cluster Management をインストールするときに作成されます。以下の証明書のリストを確認してください。これらの証明書は、Red Hat OpenShift Container Platform の以下のコンポーネントによって作成および管理されます。

  • OpenShift Service Serving Certificates
  • Red Hat Advanced Cluster Management Webhook コントローラー
  • Kubernetes Certificates API
  • OpenShift デフォルト Ingress

必要なアクセス権限: クラスターの管理者

証明書の管理に関する詳細は、以下を参照してください。

注記: ユーザーは証明書のローテーションおよび更新を行います。

1.5.1. Red Hat Advanced Cluster Management ハブクラスター証明書

OpenShift Container Platform のデフォルトの Ingress 証明書は、ハブクラスター証明書の一種です。Red Hat Advanced Cluster Management をインストールすると、可観測性ー証明書が作成され、可観測性ーコンポーネントによって使用され、ハブと管理対象クラスター間のトラフィックに相互 TLS が提供されます。さまざまな可観測性ー証明書を取得して実装するには、可観測性ー名前空間にアクセスします。

  • 次の証明書は 、open-cluster-management- 可観測性ー 名前空間の一部です。

    • observability-server-ca-certs: サーバー側の証明書に署名する CA 証明書が含まれます。
    • observability-client-ca-certs: クライアント側の証明書に署名する CA 証明書が含まれます。
    • observability-server-certs: observability-observatorium-api デプロイメントで使用されるサーバー証明書が含まれます。
    • observability-grafana-certs: observability-rbac-query-proxy デプロイメントで使用されるクライアント証明書が含まれます。
  • マネージドクラスター上の open-cluster-management-addon-observability namespace には、次の証明書があります。

    • observability-managed-cluster-certs: ハブサーバーの observability-server-ca-certs と同じサーバー CA 証明書が含まれます。
    • observability-controller-open-cluster-management.io-observability-signer-client-cert: metrics-collector-deployment が使用するクライアント証明書が含まれます。

CA 証明書は 5 年間、他の証明書は 1 年間有効です。可観測性の証明書はすべて、期限が切れると自動的に更新されます。以下のリストを表示し、証明書が自動更新される場合の影響を確認します。

  • CA 以外の証明書は、有効期間の残りが 73 日以下になると自動的に更新されます。証明書が更新されると、更新された証明書を使用するように関連するデプロイメントの Pod は自動的に再起動されます。
  • CA 証明書は、有効期間の残りが 1 年間未満になると自動的に更新されます。証明書を更新したら、古い CA は削除されませんが、更新された CA と共存します。以前の証明書と更新された証明書はいずれも関連するデプロイメントで使用され、引き続き機能します。以前 CA 証明書は有効期限が切れると削除されます。
  • 証明書の更新時には、ハブクラスターとマネージドクラスターの間のトラフィックは中断されません。

次の Red Hat Advanced Cluster Management ハブクラスター証明書テーブルを表示します。

Expand
表1.8 Red Hat Advanced Cluster Management ハブクラスター証明書
namespaceシークレット名Pod ラベル

open-cluster-management

channels-apps-open-cluster-management-webhook-svc-ca

app=multicluster-operators-channel

open-cluster-management

channels-apps-open-cluster-management-webhook-svc-signed-ca

app=multicluster-operators-channel

open-cluster-management

multicluster-operators-application-svc-ca

app=multicluster-operators-application

open-cluster-management

multicluster-operators-application-svc-signed-ca

app=multicluster-operators-application

open-cluster-management-hub

registration-webhook-serving-cert signer-secret

不要

open-cluster-management-hub

work-webhook-serving-cert

不要

1.5.2. Red Hat Advanced Cluster Management マネージド証明書

これらの Red Hat Advanced Cluster Management マネージド証明書を使用して、ハブクラスター内のマネージドクラスターを認証します。次の管理対象クラスター証明書は自動的に管理および更新されます。

ハブクラスター API サーバー証明書をカスタマイズすると、マネージドクラスターは証明書を自動的に更新します。Red Hat Advanced Cluster Management で管理される証明書と関連するシークレットを含むコンポーネント Pod の要約リストは、次の表を参照してください。

Expand
表1.9 Red Hat Advanced Cluster Management で管理される証明書を含む Pod
namespaceシークレット名 (該当する場合)

open-cluster-management-agent-addon

cluster-proxy-open-cluster-management.io-proxy-agent-signer-client-cert

open-cluster-management-agent-addon

cluster-proxy-service-proxy-server-certificates

1.5.3. 関連情報

1.6. 証明書の管理

証明書を管理することで、クラスター管理環境のセキュリティーと信頼性を維持します。証明書を更新、置換、ローテーション、およびリスト表示する方法については、引き続きお読みください。

1.6.1. Red Hat Advanced Cluster Management Webhook 証明書の更新

Red Hat Advanced Cluster Management で管理される証明書を更新できます。これは、Red Hat Advanced Cluster Management サービスが作成および管理する証明書です。

Red Hat Advanced Cluster Management 管理する証明書を更新するには、以下の手順を実行します。

  1. Red Hat Advanced Cluster Management 管理対象証明書に関連付けられているシークレットを削除し、<namespace><secret> を 使用する値に置き換えます。以下のコマンドを実行します。

    oc delete secret -n <namespace> <secret>
    Copy to Clipboard Toggle word wrap
  2. Red Hat Advanced Cluster Management 管理対象証明書に関連付けられているサービスを再起動し、<namespace><pod-label> を Red Hat Advanced Cluster Management 管理対象クラスター証明書の値に置き換えます。以下のコマンドを実行します。

    oc delete pod -n <namespace> -l <pod-label>
    Copy to Clipboard Toggle word wrap

    注: pod-label が指定されていないと、再起動が必要なサービスはありません。シークレットは自動的に再作成され、使用されます。

1.6.2. alertmanager ルートの証明書の置き換え

OpenShift Container Platform のデフォルトの Ingress 証明書を使用しない場合は、Alertmanager ルートを更新して、alertmanager の可観測性証明書を置き換えます。以下の手順を実行します。

  1. 以下のコマンドで可観測性証明書を検査します。

    openssl x509  -noout -text -in ./observability.crt
    Copy to Clipboard Toggle word wrap
  2. 証明書のコモンネーム (CN) を alertmanager に変更します。
  3. csr.cnf 設定ファイル内の SAN を、alertmanager ルートのホスト名に変更します。
  4. 次のコマンドを実行して、open-cluster-management- 可観測性ー 名前空間に alertmanager-byo-ca Secret リソースを作成します。

    oc -n open-cluster-management-observability create secret tls alertmanager-byo-ca --cert ./ca.crt --key ./ca.key
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、open-cluster-management- 可観測性ー 名前空間に alertmanager-byo-cert Secret リソースを作成します。

    oc -n open-cluster-management-observability create secret tls alertmanager-byo-cert --cert ./ingress.crt --key ./ingress.key
    Copy to Clipboard Toggle word wrap

1.6.3. Gatekeeper Webhook 証明書のローテーション

gatekeeper Webhook 証明書をローテーションするには、次の手順を実行します。

  1. 次のコマンドを使用して、Gatekeeper Webhook 証明書を含む Secret リソースを編集します。

    oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-cert
    Copy to Clipboard Toggle word wrap
  2. data セクションの ca.crtca.keytls.crt、および tls.key の内容を削除します。
  3. 次のコマンドで gatekeeper-controller-manager Pod を削除して、gatekeeper Webhook サービスを再起動します。

    oc delete pod -n openshift-gatekeeper-system -l control-plane=controller-manager
    Copy to Clipboard Toggle word wrap

gatekeeper Webhook 証明書がローテーションされます。

1.6.4. 証明書のローテーションの確認

サービス通信に影響を与える可能性のあるシステム停止を防ぐために、証明書がローテーションされていることを確認します。以下の手順を実行します。

  1. 確認する Secret リソースを特定します。
  2. tls.crt キーをチェックして、証明書が使用可能であることを確認します。
  3. 証明書情報を表示します。<your-secret-name> は、検証するシークレットの名前に置き換えます。必要に応じて、namespace と JSON パスも更新します。以下のコマンドを実行します。

    oc get secret <your-secret-name> -n open-cluster-management -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -text -noout
    Copy to Clipboard Toggle word wrap
  4. 出力で Validity の詳細を確認します。次の Validity の例を参照してください。

    Validity
                Not Before: Jul 13 15:17:50 2023 GMT 
    1
    
                Not After : Jul 12 15:17:50 2024 GMT 
    2
    Copy to Clipboard Toggle word wrap
    1
    Not Before の値は、証明書をローテーションした日時です。
    2
    Not After 値は、証明書の有効期限を表します。

1.6.5. ハブクラスターで管理される証明書のリスト表示

OpenShift Service Serving Certificates サービスを内部で使用するハブクラスターの管理対象証明書の一覧を表示できます。以下のコマンドを実行して証明書一覧を表示します。

for ns in multicluster-engine open-cluster-management ; do echo "$ns:" ; oc get secret -n $ns -o custom-columns=Name:.metadata.name,Expiration:.metadata.annotations.service\\.beta\\.openshift\\.io/expiry | grep -v '<none>' ; echo ""; done
Copy to Clipboard Toggle word wrap

詳細は、Additional resources セクションの OpenShift Service Serving Certificates を参照してください。

注記: 可観測性が有効な場合は、証明書が作成される追加の namespace があります。

1.6.6. 関連情報

1.7. 可観測性ーのために独自の認証局 (CA) 証明書を導入する

Red Hat Advanced Cluster Management for Kubernetes をインストールすると、可観測性のための認証局 (CA) 証明書のみがデフォルトで提供されます。デフォルトの可観測性ー CA 証明書を使用しない場合は、可観測性ーを有効にする前に、独自の可観測性ー CA 証明書を用意することを選択できます。

前提条件

必要なアクセス権限: 管理者

1.7.1. 可観測性ーのための CA 証明書のカスタマイズ

独自の可観測性ー CA 証明書を使用する場合は、特定の開発ニーズに合わせてカスタマイズします。次の手順に従って、可観測性ー用の CA 証明書をカスタマイズします。

  1. OpenSSL コマンドを使用して、サーバー側とクライアント側の CA 証明書を生成します。

    1. サーバー側の CA RSA 秘密鍵を生成するには、次のコマンドを実行します。

      openssl genrsa -out serverCAKey.pem 2048
      Copy to Clipboard Toggle word wrap
    2. クライアント側の CA RSA 秘密鍵を生成するには、次のコマンドを実行します。
    openssl genrsa -out clientCAKey.pem 2048
    Copy to Clipboard Toggle word wrap
  2. 秘密鍵を使用して自己署名 CA 証明書を生成します。

    1. サーバー側の自己署名 CA 証明書を生成するには、次のコマンドを実行します。

      openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem
      Copy to Clipboard Toggle word wrap
    2. クライアント側用の自己署名 CA 証明書を生成するには、次のコマンドを実行します。
    openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pem
    Copy to Clipboard Toggle word wrap
  3. 可観測性ー用の CA 証明書を保存および管理するには、CA 証明書ごとに Secret リソースを作成します。

    1. 証明書および秘密鍵を使用して observability-server-ca-certs シークレットを作成します。以下のコマンドを実行します。

      oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pem
      Copy to Clipboard Toggle word wrap
    2. 証明書および秘密鍵を使用して observability-client-ca-certs シークレットを作成します。以下のコマンドを実行します。
    oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pem
    Copy to Clipboard Toggle word wrap

1.7.2. rbac-query-proxy ルートの証明書の置き換え

csr.cnf ファイルを使用して証明書署名要求 (CSR) を作成することにより 、rbac-query-proxy ルートの証明書を置き換えることができます。

前提条件

OpenSSL コマンドを使用して CA 証明書を生成します。証明書を作成するには、可観測性ー用の CA 証明書のカスタマイズを 参照してください。

subjectAltName セクションの DNS.1 フィールドを更新して、rbac-query-proxy ルートのホスト名と一致させます。以下の手順を実行します。

  1. 次のコマンドを実行してホスト名を取得します。

    oc get route rbac-query-proxy -n open-cluster-management-observability -o jsonpath="
    {.spec.host}"
    Copy to Clipboard Toggle word wrap
  2. 生成された証明書を使用して proxy-byo-ca シークレットを作成します。以下のコマンドを実行します。

    oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.key
    Copy to Clipboard Toggle word wrap
  3. 生成された証明書を使用して proxy-byo-cert シークレットを作成するには、次のコマンドを実行します。

    oc -n open-cluster-management-observability create secret tls proxy-byo-cert --cert ./ingress.crt --key ./ingress.key
    Copy to Clipboard Toggle word wrap

1.7.3. 関連情報

1.8. クラスター権限によるマネージドクラスターのロールベースのアクセス制御

クラスター権限機能を使用して、複数の管理対象クラスターにわたる RolesClusterRolesRoleBindingsClusterRoleBindings リソースなどの Kubernetes ネイティブリソースを管理します。ClusterPermssion リソースは、管理対象クラスターにロールベースのアクセス制御 (RBAC) リソースを自動的に配布し、リソースのライフサイクルを管理します。

クラスター権限 API (clusterpermissions.rbac.open-cluster-management.io) を使用すると、管理対象クラスターに適用する RBAC ポリシーを指定できます。

次のトピックでクラスター権限を作成および管理する方法について説明します。

1.8.1. クラスター権限の検証を有効にする

ClusterPermission リソース内の 検証 仕様を有効にして、Role リソースClusterRole リソースの存在を確認します。

必要なアクセス権: クラスター管理者

以下の手順を実行します。

  1. 検証 仕様を true に設定する ClusterPermission リソースを作成します。検証する roleBindingsclusterRoleBinding を 定義します。

    YAML ファイルは、sa-sample-existing ServiceAccount編集ClusterRoleGroup1ビューClusterRole を検証するように ClusteerRole を設定する次の例のようになります。

    apiVersion: rbac.open-cluster-management.io/v1alpha1
    kind: ClusterPermission
    metadata:
      name: clusterpermission-validate-sample
    spec:
      validate: true
      roleBindings:
        - name: default-existing
          namespace: default
          roleRef:
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
            name: edit
          subject:
            namespace: openshift-gitops
            kind: ServiceAccount
            name: sa-sample-existing
      clusterRoleBinding:
          name: crb-cluster1-argo-app-con-3-existing
          roleRef:
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
            name: view
          subject:
            apiGroup: rbac.authorization.k8s.io
            kind: Group
            name: group1
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、clusterpermission-validate-sample ClusterPermission を適用します。

    oc apply clusterpermission-validate-sample.yaml
    Copy to Clipboard Toggle word wrap

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat