セキュアなクラスター


Red Hat Advanced Cluster Management for Kubernetes 2.16

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

概要

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

第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

read

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

namespaces

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>

    リソースは、指定された 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

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>

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

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

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
  • 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>

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

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

    oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>

    このロールには、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>
  • username という名前のユーザーで cluster-name という名前のマネージドクラスター上のアプリケーションを表示するには、open-cluster-management:view: クラスターロールへのクラスターロールバインディングを作成し、username にバインドします。以下のコマンドを実行します。

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>

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

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

    oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>

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

1.2.3. ガバナンス用に RBAC を有効化する

ガバナンスアクションの場合、ポリシーが作成される namespace へのアクセスと、ポリシーが適用されるマネージドクラスターへのアクセスが必要です。マネージドクラスターは、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
  • 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>
  • マネージドクラスターのポリシーステータスを表示するには、ハブクラスターのマネージドクラスターの 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
  • 新しい ClusterRole をマネージドクラスターの namespace にバインドするには、次のコマンドを実行して namespace RoleBinding を作成します。

    oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>

1.2.4. オブザーバビリティー用に RBAC を有効化する

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

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

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

    oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>

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

    oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>

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

    oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user>  -n <managedClusterName>
  • リソースの検索

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

    oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>

    注記: <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

詳細は、ロールバインディングポリシー を参照してください。オブザーバビリティーを設定するには、オブザーバビリティーの詳細設定 を参照してください。

1.3. 仮想マシン向けのきめ細かなロールベースのアクセス制御

Red Hat Advanced Cluster Management for Kubernetes は、仮想マシン環境におけるきめ細かなロールベースアクセス制御 (RBAC) をサポートします。仮想マシンに対するきめ細かな RBAC の詳細は、以下のトピックを参照してください。

1.4. きめ細かな RBAC のロールと詳細

Red Hat Advanced Cluster Management は、クラスター全体にわたる仮想マシンを管理するための専用ロールを提供し、標準の仮想化機能を拡張して、フリート仮想化インターフェイス内で特定のアクセスレベルを実現します。

次の表は、仮想化管理で利用可能な詳細なロールを説明しています。

Expand
表1.8 仮想化のロールと説明
ロール名説明

acm-vm-extended:view

kubevirt.io のデフォルトロールを継承します。フリート仮想化コンソールで仮想マシンの設定、ステータス、および詳細を表示するための権限を付与します。このロールにより、読み取り専用のトラブルシューティングも可能になります。

acm-vm-extended:admin

kubevirt.io のデフォルトロールを継承します。フリート仮想化コンソールで仮想マシンのトラブルシューティングや設定タスクを完了するための管理者権限を付与します。

acm-vm-fleet:view

フリート仮想化コンソールを表示するために必要な権限を提供する、ベースとなるロール。

acm-vm-fleet:admin

フリート仮想化コンソールを表示し、クラスター間ライブマイグレーションおよび関連する管理タスクを実行するために必要な権限を提供する、ベースとなるロール。

acm-vm-cluster-migration:view

移行元クラスターと移行先クラスター間のクロスクラスターライブマイグレーションの準備状況チェックに必要な権限を付与します。

Red Hat Advanced Cluster Management ロールに加えて、以下の標準 Red Hat OpenShift Virtualization ロールを使用して、コア仮想マシンの権限を付与します。これらのロールは、仮想化 Operator によって自動的にインストールされます。

  • kubevirt.io:view
  • kubevirt.io:edit
  • kubevirt.io:admin

各ロールによって付与される権限の完全な定義は、OpenShift Container Platform のドキュメントにある OpenShift Virtualization のデフォルトクラスターロール を参照してください。

以下のシナリオを参考に、管理要件に基づいて割り当てるべきロールを決定してください。

シナリオ 1

コンソール閲覧における最小権限

フリート仮想化コンソールで仮想マシンを表示するために必要な最小限の権限を、ユーザーまたはグループに付与します。

Expand
表1.9 シナリオ 1 のコンソール閲覧用ロール
ロール場所バインディングのタイプ目的

acm-vm-fleet:view

ハブクラスター

ClusterRoleBinding

フリート仮想化コンソールを表示するためのアクセス権を付与します。

kubevirt.io:view

マネージドクラスター

RoleBinding

kubevirt リソースへの読み取り専用アクセス権限を付与します。

シナリオ 2

フリート仮想化コンソールにおける管理者特権

フリート仮想化コンソールで仮想マシンのリソースを表示、トラブルシューティング、管理するために必要な権限を、ユーザーまたはグループに付与します。フリート仮想化コンソールで管理用特権を提供するために必要なロールと、各ロールに関連付けられた権限については、次の表を参照してください。

Expand
表1.10 シナリオ 2 の管理特権フリート仮想化コンソールのロール
ロール場所バインディングのタイプ目的

acm-vm-fleet:view

ハブクラスター

ClusterRoleBinding

フリート仮想化コンソールを表示するためのアクセス権を付与します。

kubevirt.io:admin

マネージドクラスター

RoleBinding

kubevirt リソースへの管理者アクセス権を付与します。

acm-vm-extended:admin

マネージドクラスター

RoleBinding

拡張された仮想マシンリソースへの管理者アクセス権を付与します。

シナリオ 3

クラスター間ライブマイグレーション

クラスター間で仮想マシンのライブマイグレーションを実行するために必要な権限を、ユーザーまたはグループに付与します。クラスター間ライブマイグレーションを実行するために必要なロールと、各ロールに関連付けられた権限については、次の表を参照してください。

Expand
表1.11 クラスター間ライブマイグレーションのロール
ロール場所バインディングのタイプ目的

acm-vm-fleet:admin

ハブクラスター

ClusterRoleBinding

フリート仮想化コンソールへのアクセス権を付与し、ライブマイグレーションタスクを有効にします。

kubevirt.io:admin

移行元および移行先のマネージドクラスター

RoleBinding

kubevirt リソースへの管理者アクセス権を付与します。

acm-vm-extended:admin

移行元および移行先のマネージドクラスター

RoleBinding

拡張された仮想マシンリソースへの管理者アクセス権を付与します。

acm-vm-cluster-migration:view

移行元および移行先のマネージドクラスター

ClusterRoleBinding

ライブマイグレーション準備状況チェックのアクセス権限を付与します。

1.5. 仮想化におけるきめ細かなロールベースのアクセス制御の有効化

仮想化環境において、きめ細かなロールベースのアクセス制御を有効にすることで、マネージドクラスター上で、namespace レベルおよびクラスターレベルで他のユーザーに対する権限を管理および付与できます。仮想化における RBAC は、マネージドクラスター全体に権限を付与することなく、クラスター内の仮想マシン namespace に権限を付与する機能を提供します。

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

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

前提条件

環境内の仮想マシンに対して、きめ細かなロールベースのアクセス制御を有効にするために必要な前提条件を以下に示します。

  • 仮想マシンを管理する予定のマネージドクラスターおよびハブクラスターに、サポート対象の Red Hat OpenShift Virtualization をインストールしてください。詳細は、仮想化 - インストール を参照してください。
  • オプション: 仮想環境への移行を予定している場合は、migration toolkit for virtualization をインストールしてください。クラスター間での仮想マシンの移行 を参照してください。
  • 注: Red Hat Advanced Cluster Management で cnv-mtv-integrations 機能を有効にすると、製品が Red Hat OpenShift Virtualization と migration toolkit for virtualization の両方を自動的にインストールおよび設定します。
  • ハブクラスターが local-cluster として自己管理されていることを確認してください。つまり、disableHubSelfManagement パラメーターが false に設定されていることを確認します。これは、Red Hat Advanced Cluster Management をインストールしたときのデフォルト設定です。
  • Red Hat Advanced Cluster Management ハブクラスターと、同じアイデンティティーを持つすべてのマネージドクラスターを設定します。ハブクラスターで認証されたアイデンティティーが、マネージドクラスター上の同じアイデンティティーに正しくマッピングされるようにするには、ユーザー、グループ、およびグループメンバーシップが環境全体で同一である必要があります。

手順

MultiClusterHub リソースで fine-grained-rbac コンポーネントを有効にするには、以下の手順を参照してください。

  1. リソースにパッチを適用するには、以下のコマンドを実行してください。カスタムリソースのデフォルト名は multiclusterhub であり、デフォルトの namespace は open-cluster-management です。名前や namespace が異なる場合は、コマンドを更新してください。
oc patch mch multiclusterhub -n open-cluster-management --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-", "value": {"name": "fine-grained-rbac", "enabled": true}}]'

次に、コンソールを使用したきめ細かなロールベースのアクセス制御の有効化 を参照して、コンソールからユーザーやグループにロールを割り当てる方法を確認してください。

1.6. Fleet Management コンソールのロール割り当て

Red Hat Advanced Cluster Management では、ロール割り当てによって、ユーザーがフリートとどのようにやり取りするかが定義されます。セキュアなマルチテナント環境を確保するには、ロールの割り当て範囲を理解することが不可欠です。Fleet Management コンソールで利用可能なさまざまなロールの種類、粒度範囲、および方法の詳細は、以下のセクションを参照してください。

粒度 (Granularity)

クラスターとプロジェクトのロール割り当て

ロール割り当てを作成する前に、アイデンティティーに対して適切な範囲を定義します。この粒度レベルにより、クラスターのセキュリティーを損なうことなく、ユーザーに必要な権限が付与されます。

クラスターのロール割り当て
対象のクラスターまたはクラスターセット内のすべての namespace へのアイデンティティーアクセス権限を付与します。このスコープは、全体環境の可視化と制御を必要とするクラスター管理者やインフラストラクチャー運用担当者に適用します。
プロジェクトのロール割り当て
クラスターまたはクラスターセット内の namespace である特定のプロジェクトのみにアクセスを許可することで、厳格なセキュリティー境界を適用します。このスコープは、マルチテナント環境におけるアプリケーション開発チームまたは業務部門のユーザー向けに使用してください。
方法

ロール割り当てを利用する方法

コンソールでは、複数の方法でロールの割り当てを管理できます。選択する手順は、グローバルなインフラストラクチャーを管理しているのか、特定のアプリケーションリソースを管理しているのかによって異なります。

コンソールから Fleet Management に移動して、以下のいずれかの方法を選択してください。

Expand
表1.12 ロール割り当ての方法とユースケース
方法ユースケース

アイデンティティー

このパスを使用して、特定のユーザーまたはグループのロール割り当てを管理します。

ロール

このパスを使用して、特定のロールに対するロール割り当てを管理します。

クラスター

このパスを使用して、特定のマネージドクラスターのロール割り当てを管理します。

クラスターセット

このパスを使用して、論理的なクラスターグループのロール割り当てを管理します。

重要: ロールの割り当ては、累積的です。たとえば、ユーザーに クラスターセット レベルでロールが付与され、プロジェクトレベル で別のロールが付与された場合、ユーザーは両方の割り当ての権限を継承します。

コンソールで各メソッドを使用してロール割り当てを作成する手順は、以下のセクションを参照してください。

1.7. コンソールでアイデンティティーを使用してロール割り当てを作成する

Fleet Management コンソールから、特定のユーザーまたはグループのアクセス権限を管理できます。

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

前提条件

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

  • きめ細かなロールベースのアクセス制御を有効にする。手順は 仮想化におけるきめ細かなロールベースのアクセス制御を有効にする を参照してください。
  • クラスター管理者またはハブクラスター管理者の権限で OpenShift Container Platform コンソールにログインしておく。
  • 対象となるユーザーまたはグループがシステムにすでに存在している。アイデンティティーがリストにない場合は、先に進む前にアイデンティティープロバイダーを設定してください。

手順

  1. ナビゲーションメニューから User Management を展開し、Identities をクリックします。
  2. Users タブ、または Groups タブのいずれかを選択してください。
  3. 管理するユーザーまたはグループの名前をクリックしてください。
  4. Role Assignments タブをクリックします。
  5. Create role assignment をクリックします。設定ウィンドウが開くと、アイデンティティー情報がすでに入力された状態で表示されます。
  6. Scope セクションで、以下のいずれかのオプションを選択して、権限の適用範囲を定義します。

    グローバルアクセス
    ハブ内のすべてのクラスターと namespace に権限を適用します。
    クラスターセットの選択
    特定のクラスターグループに権限を適用します。
    クラスターの選択
    個々のマネージドクラスターに権限を適用します。
  7. Next をクリックします。
  8. Global access を選択しなかった場合は、リストから特定のクラスターセットまたはクラスターを選択し、Next をクリックしてください。
  9. 割り当ての粒度レベルを選択してください。以下のオプションを参照してください。

    クラスターロールの割り当てまたはクラスターセットロールの割り当て
    選択範囲内のすべての namespace へのアクセス権を付与します。
    プロジェクトのロール割り当て
    特定の共通プロジェクト (namespace) へのアクセスを制限します。
  10. Next をクリックします。
  11. Project role assignment を選択した場合は、対象プロジェクトを選択してください。

    注: 必要なプロジェクトが存在しない場合は、Create common project をクリックして新しいプロジェクトを定義してください。選択された各クラスター上に新しいプロジェクトが作成されます。

  12. Next をクリックします。
  13. アイデンティティーに適用する特定のロールを選択し、Next をクリックして、設定概要が正確であることを確認してください。
  14. Create をクリックして、ロールの割り当てを確定します。

新しいロールの割り当ては、選択したアイデンティティーの Role Assignments テーブルに表示されます。これらの権限は、ユーザーが次回ログインまたはセッションを更新したときに有効になります。

1.8. コンソールでロールを使用してロール割り当てを作成する

Fleet Management コンソールから、特定のロールにアクセス権限を割り当てることができます。

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

前提条件

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

手順

  1. ナビゲーションメニューから User Management を展開し、Roles をクリックします。
  2. アイデンティティーに割り当てるロールの名前をクリックしてください。
  3. Role Assignments タブをクリックします。
  4. Create role assignment をクリックします。設定ウィンドウが開くと、ロール情報がすでに入力された状態で表示されます。
  5. Identities > このロールを割り当てる Users または Groups を選択し、Next をクリックします。
  6. Scope セクションで、以下のいずれかのオプションを選択して、権限の適用範囲を定義します。

    グローバルアクセス
    ハブ内のすべてのクラスターと namespace に権限を適用します。
    クラスターセットの選択
    特定のクラスターグループに権限を適用します。
    クラスターの選択
    個々のマネージドクラスターに権限を適用します。
  7. Next をクリックします。
  8. Global access を選択しなかった場合は、リストから特定のクラスターセットまたはクラスターを選択し、Next をクリックしてください。
  9. 割り当ての粒度レベルを選択してください。

    クラスターロールの割り当てまたはクラスターセットロールの割り当て
    選択範囲内のすべての namespace へのアクセス権を付与します。
    プロジェクトのロール割り当て
    特定の共通プロジェクト (namespace) へのアクセスを制限します。
  10. Next をクリックします。
  11. Project role assignment を選択した場合は、対象プロジェクトを選択して Next をクリックし、設定概要が適切であることを確認します。
  12. Create をクリックして、ロールの割り当てを確定します。

新しいロール割り当てが作成されました。選択したロールまたは個々のアイデンティティーの Role Assignments タブを表示することで、割り当てを確認できます。

1.9. コンソールでクラスターを使用してロール割り当てを作成する

Fleet Management コンソールから、特定のマネージドクラスターへのアクセス権限を管理できます。

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

前提条件

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

手順

  1. ナビゲーションメニューから Clusters をクリックすると、クラスターインベントリーが表示されます。
  2. 管理する対象のクラスター名をクリックしてください。
  3. Role Assignments タブをクリックします。
  4. Create role assignment をクリックします。設定ウィンドウが開くと、クラスター情報があらかじめ入力された状態になっています。
  5. Identities > このクラスターへのアクセスを割り当てる Users または Groups を選択し、Next をクリックします。
  6. 割り当ての粒度レベルを選択してください。

    クラスターのロール割り当て
    このクラスター内のすべての namespace へのアクセス権を付与します。
    プロジェクトのロール割り当て
    特定の共通プロジェクト (namespace) へのアクセスを制限します。
  7. Next をクリックします。
  8. Project role assignment を選択した場合は、対象プロジェクトを選択して Next をクリックします。
  9. アイデンティティーを付与する特定のロールを選択し、Next をクリックして、設定概要が正確であることを確認してください。
  10. Create をクリックして、ロールの割り当てを確定します。

新しいロール割り当てが作成されました。選択したロールまたは個々のアイデンティティーの Role Assignments タブを表示することで、割り当てを確認できます。

1.10. コンソールでクラスターセットを使用してロール割り当てを作成する

Fleet Management コンソールから、特定のクラスターセットのアクセス権限を管理できます。

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

前提条件

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

手順

  1. ナビゲーションメニューから、Clusters > Cluster Sets をクリックして、クラスターセットインベントリーを表示します。
  2. 管理する対象のクラスターセットの名前をクリックしてください。
  3. Role Assignments タブをクリックします。
  4. Create role assignment をクリックします。設定ウィンドウが開くと、クラスターセットの情報がすでに入力された状態で表示されます。
  5. Identities > このクラスターセットへのアクセスを割り当てる Users または Groups を選択し、Next をクリックします。
  6. 割り当ての粒度レベルを選択してください。

    クラスターセットのロール割り当て
    セット内のすべてのクラスター内のすべての namespace へのアクセス権を付与します。
    プロジェクトのロール割り当て
    特定の共通プロジェクト (namespace) へのアクセスを制限します。
  7. Next をクリックします。
  8. Project role assignment を選択した場合は、対象プロジェクトを選択して Next をクリックします。
  9. アイデンティティーに付与する特定のロールを選択し、Next をクリックします。
  10. 設定概要の内容が正確であることを確認してください。
  11. Create をクリックして、ロールの割り当てを確定します。

新しいロール割り当てが作成されました。選択したロールまたは個々のアイデンティティーの Role Assignments タブを表示することで、割り当てを確認できます。

1.11. きめ細かなロールベースのアクセス制御 MulticlusterRoleAssignment

MulticlusterRoleAssignment カスタムリソースは、マルチクラスター環境全体にわたるロールベースアクセス制御 (RBAC) を宣言的に定義する方法を提供します。このリソースを使用すると、一元化された定義をハブクラスター上に作成し、対象のマネージドクラスターに対してどのユーザーやグループに権限を付与するかを指定できます。

MulticlusterRoleAssignment リソースを適用すると、システムは選択したマネージドクラスター上に、対応する標準の Kubernetes RBAC バインディング (RoleBinding または ClusterRoleBinding) を作成します。

1.11.1. リソース仕様

リソース定義は、主に 2 つのセクションで構成されています。1 つは権限を受け取る Subject (サブジェクト)、もう 1 つは付与される権限とその適用範囲を示す Role Assignments (ロール割り当て) です。

spec.subject

権限を割り当てるアイデンティティーを定義します。サブジェクトの仕様に関する情報は、以下の表を参照してください。

Expand
表1.13 サブジェクトの仕様
フィールド説明

kind

アイデンティティーの種類を指定します。サポートされている値は、User または Group です。

name

ユーザーまたはグループの名前を指定します。たとえば、jane.doe@example.com または dev-team です。

spec.roleAssignments

付与されるロールと対象となるクラスターを定義するルールのリスト。ロール割り当て仕様に関する情報は、以下の表を参照してください。

Expand
表1.14 ロール割り当て仕様
フィールド説明

clusterRole

割り当てる ClusterRole の名前。注: このロールは、割り当て前にマネージドクラスター上に存在している必要があります。

clusterSelection

標準的な配置参照を使用して、この割り当てのターゲットクラスターを指定します。

targetNamespaces

オプション: マネージドクラスター上で、このロールが適用される namespace のリスト。このフィールドは、結果として生成されるバインディングの範囲を決定します。

1.11.2. バインディングスコープ

マネージドクラスター上の結果として生成される RBAC リソースは、targetNamespaces フィールドを含めるかどうかによって異なります。

RoleBinding
namespace スコープのバインディング。targetNamespaces フィールドに 1 つ以上の namespace を指定すると、システムはそれらの namespace ごとに RoleBinding を生成します。サブジェクトは、それらの namespace 内でのみ権限を付与されます。
ClusterRoleBinding
クラスタースコープのバインディング: targetNamespaces の値を指定しないか、空のままにすると、システムは ClusterRoleBinding を生成します。サブジェクトは、マネージドクラスター全体に対する権限を取得します。
clusterSelection
マネージドクラスターのうち、割り当てを受けるクラスターを特定するには、Red Hat Advanced Cluster Management の配置リソースを参照してください。重要: MulticlusterRoleAssignment を作成する前に、配置リソースを作成する必要があります。このリソースは既存の配置を参照するものであり、配置ロジック自体を定義するものではありません。

1.11.3. 配置の例

以下の例では、さまざまな配置方法を使用してターゲットクラスターを選択することにより、アクセス制御の要件に基づいてさまざまな種類のロール割り当てを作成する方法を示します。

  • 例: ClusterSet の選択肢

    以下の配置では、cs01 ManagedClusterSet 仕様のメンバーであるすべてのクラスターが選択されます。

    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: Placement
    metadata:
      name: placement-cs01
      namespace: cs01-bound-namespace
    spec:
      clusterSets:
      - cs01
      tolerations:
      - key: cluster.open-cluster-management.io/unreachable
        operator: Equal
      - key: cluster.open-cluster-management.io/unavailable
        operator: Equal
  • 例: クラスター名の選択

以下の配置では、ラベルセレクターを使用して名前で特定のクラスターを選択します。

apiVersion: cluster.open-cluster-management.io/v1beta1
kind: Placement
metadata:
  name: placement-specific-clusters
  namespace: specific-clusters-namespace
spec:
  predicates:
  - requiredClusterSelector:
      labelSelector:
        matchExpressions:
        - key: name
          operator: In
          values:
          - cluster01
          - cluster02
  tolerations:
  - key: cluster.open-cluster-management.io/unreachable
    operator: Equal
  - key: cluster.open-cluster-management.io/unavailable
    operator: Equal

詳細な MCA の例 については、使用例を参照してください。

1.12. MulticlusterRoleAssignment による、きめ細かなロールベースのアクセス制御の例

マルチクラスター環境におけるカスタムリソースの使用例については、こちらを参照してください。MulticlusterRoleAssignment リソースを使用すると、さまざまなアクセスレベルとスコープを設定できます。以下に、namespace、クラスター全体、混合の 3 つの例を示します。

1.12.1. 使用例

以下の例は、アクセス制御の要件に基づいてさまざまな種類のロール割り当てを作成する方法を示しています。

  • 例 1: namespace スコープの表示アクセス

    以下の設定により、ユーザー名 jane.developerkubevirt.io:view ロールが付与されます。アクセスは、dev-clusters 配置によって選択されたクラスター上の default の namespace に限定されます。

    apiVersion: rbac.open-cluster-management.io/v1beta1
    kind: MulticlusterRoleAssignment
    metadata:
      name: virtualization-view-access
      namespace: dev-virt
    spec:
      subject:
        kind: User
        name: jane.developer
      roleAssignments:
      - name: view-default-namespace
        clusterRole: kubevirt.io:view
        targetNamespaces:
        - default
        clusterSelection:
          type: placements
          placements:
          - name: dev-clusters
            namespace: dev-virt
  • 例 2: クラスター全体の管理アクセス

    以下の設定により、グループ名 virt-adminskubevirt.io:admin ロールが付与されます。targetNamespaces の値が省略されているため、この例では production-clusters 配置によって選択されたクラスター上のすべての namespace に対して管理アクセスが提供されます。

    apiVersion: rbac.open-cluster-management.io/v1beta1
    kind: MulticlusterRoleAssignment
    metadata:
      name: virtualization-admin-global
      namespace: prod-virt
    spec:
      subject:
        kind: Group
        name: virt-admins
      roleAssignments:
      - name: full-admin-access
        clusterRole: kubevirt.io:admin
        clusterSelection:
          type: placements
          placements:
          - name: production-clusters
            namespace: prod-virt
  • 例 3: スコープが混合されている割り当て

    単一のリソース内で複数の割り当てを定義することで、複雑な権限プロファイルを作成できます。次の例では test-user であるサブジェクトにプライマリークラスターの Admin ロールとセカンダリークラスターの Edit ロールを付与します。

    apiVersion: rbac.open-cluster-management.io/v1beta1
    kind: MulticlusterRoleAssignment
    metadata:
      name: mixed-virt-profile
      namespace: virt-workload-01
    spec:
      subject:
        kind: User
        name: test-user
      roleAssignments:
      - name: admin-on-primary
        clusterRole: kubevirt.io:admin
        clusterSelection:
          type: placements
          placements:
          - name: placement-primary
            namespace: virt-primary-namespace
      - name: edit-on-secondary
        clusterRole: kubevirt.io:edit
        clusterSelection:
          type: placements
          placements:
          - name: placement-secondary
            namespace: virt-secondary-namespace

1.13. 証明書

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.13.1. Red Hat Advanced Cluster Management ハブクラスター証明書

OpenShift Container Platform のデフォルトの Ingress 証明書は、ハブクラスター証明書の一種です。Red Hat Advanced Cluster Management をインストールすると、オブザーバビリティー証明書が作成され、オブザーバビリティーコンポーネントによって使用され、ハブとマネージドクラスター間のトラフィックに相互 TLS が提供されます。さまざまなオブザーバビリティー証明書を取得して実装するには、オブザーバビリティー namespace にアクセスします。

  • 次の証明書は、open-cluster-management-observability namespace の一部です。

    • 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.15 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.13.2. Red Hat Advanced Cluster Management マネージド証明書

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

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

Expand
表1.16 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.13.3. 関連情報

1.14. 証明書の管理

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

1.14.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>
  2. Red Hat Advanced Cluster Management マネージド証明書に関連付けられているサービスを再起動し、<namespace><pod-label> は、Red Hat Advanced Cluster Management マネージドクラスター証明書の値に置き換えます。以下のコマンドを実行します。

    oc delete pod -n <namespace> -l <pod-label>

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

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

OpenShift Container Platform のデフォルトの Ingress 証明書を使用しない場合は、Alertmanager ルートを更新して、alertmanager のオブザーバビリティー証明書を置き換えます。以下の手順を実行します。

  1. 以下のコマンドでオブザーバビリティー証明書を検査します。

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

    oc -n open-cluster-management-observability create secret tls alertmanager-byo-ca --cert ./ca.crt --key ./ca.key
  5. 次のコマンドを実行して、open-cluster-management-observability namespace に alertmanager-byo-cert Secret リソースを作成します。

    oc -n open-cluster-management-observability create secret tls alertmanager-byo-cert --cert ./ingress.crt --key ./ingress.key

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

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

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

    oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-cert
  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

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

1.14.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
  4. 出力で Validity の詳細を確認します。次の Validity の例を参照してください。

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

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

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

注記: オブザーバビリティーが有効な場合は、証明書が作成される追加の namespace があります。

1.14.6. 関連情報

1.15. オブザーバビリティー用に独自の認証局 (CA) 証明書を用意する

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

前提条件

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

1.15.1. オブザーバビリティー用の CA 証明書のカスタマイズ

独自のオブザーバビリティー CA 証明書を独自に用意することを選択した場合、特定の開発ニーズに役立つようにカスタマイズします。次の手順に従って、オブザーバビリティー用の CA 証明書をカスタマイズします。

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

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

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

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

      openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem
    2. クライアント側の自己署名 CA 証明書を生成するには、次のコマンドを実行します。
    openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pem
  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
    2. 証明書および秘密鍵を使用して observability-client-ca-certs シークレットを作成します。以下のコマンドを実行します。
    oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pem

1.15.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}"
  2. 生成された証明書を使用して proxy-byo-ca シークレットを作成します。以下のコマンドを実行します。

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

    oc -n open-cluster-management-observability create secret tls proxy-byo-cert --cert ./ingress.crt --key ./ingress.key

1.15.3. 関連情報

1.16. クラスター権限を使用したマネージドクラスターのロールベースのアクセス制御

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

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

クラスター権限の作成および管理方法については、以下を参照してください。

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

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

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

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

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

    YAML ファイルは、sa-sample-existing ServiceAccountedit ClusterRoleGroup1view 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
  2. 次のコマンドを実行して、clusterpermission-validate-sample ClusterPermission を適用します。

    oc apply clusterpermission-validate-sample.yaml
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る