安全なクラスター
ロールベースのアクセスと証明書を使用してクラスターを保護します。
概要
第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 でサポートされている以下のロール定義の表を参照してください。
| ロール | 定義 |
|
|
これは OpenShift Container Platform のデフォルトのロールです。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| admin、edit、view |
admin、edit、および view は OpenShift Container Platform のデフォルトロールです。これらのロールに対して namespace に限定されたバインディングが指定されているユーザーは、特定の namespace 内の |
|
|
|
重要:
- ユーザーは OpenShift Container Platform からプロジェクトを作成できます。これにより、namespace の管理者ロール権限が付与されます。
-
ユーザーがクラスターへのロールアクセスを持っていない場合、クラスター名は表示されません。クラスター名は、
-の記号で表示される場合があります。
詳細は、ロールベースのアクセス制御の実装 を参照してください。
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 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの作成時に、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>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールはスーパーユーザーであるため、すべてのリソースとアクションにアクセスできます。このロールを使用して、アプリケーションの namespace および namespace 内のすべてのアプリケーションリソースを作成できます。
複数の namespace にリソースをデプロイするアプリケーションを作成します。
open-cluster-management:subscription-adminクラスターロールにバインドするクラスターロールを作成し、usernameという名前のユーザーにバインドする必要があります。以下のコマンドを実行します。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールには、マネージドクラスター
cluster-nameのすべてのapplicationリソースに対する読み取りおよび書き込み権限があります。他のマネージドクラスターへのアクセスが必要な場合は、この操作を繰り返します。以下のコマンドを入力し、
adminロールを使用してapplicationnamespace にバインドする namespace ロールを作成し、それをusernameにバインドします。oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>
oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールには、
applicationnamespace のすべてのapplicationリソースに対する読み取りおよび書き込み権限があります。他のアプリケーションへのアクセスが必要な場合や、アプリケーションが複数の namespace にデプロイされる場合は、これを繰り返します。リソースを複数の namespace にデプロイするアプリケーションを作成できます。以下のコマンドを入力して、
open-cluster-management:subscription-adminクラスターロールへのバインドを作成し、usernameにバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow usernameという名前のユーザーでcluster-nameという名前のマネージドクラスター上のアプリケーションを表示するには、open-cluster-management:view:クラスターロールにバインドするクラスターロールを作成し、usernameにバインドします。以下のコマンドを実行します。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールは、マネージドクラスター
cluster-nameのすべてのapplicationリソースに対する読み取り権限があります。他のマネージドクラスターへのアクセスが必要な場合は、この操作を繰り返します。viewロールを使用してapplicationnamespace にバインドする namespace ロールを作成し、それをusernameにバインドします。以下のコマンドを実行します。oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>
oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールには、
applicationの namespace にあるすべてのapplicationリソースに対する読み取り権限があります。他のアプリケーションへのアクセスが必要な場合は、この操作を繰り返します。
1.2.1.1. アプリケーションライフサイクルのコンソールと API RBAC テーブル リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションライフサイクルの以下のコンソールおよび API 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 |
| API | 管理 | 編集 | 表示 |
|---|---|---|---|
|
| 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 |
|
| 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 |
|
| 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 |
|
| create, read, update, delete | create, read, update, delete | read |
1.2.2. ガバナンスライフサイクル RBAC リンクのコピーリンクがクリップボードにコピーされました!
ガバナンスライフサイクル操作を実行するには、ポリシーが作成される namespace、およびポリシーが適用されるマネージドクラスターへのアクセス権が必要です。マネージドクラスターは、namespace にバインドされる ManagedClusterSet の一部でもある必要があります。ManagedClusterSet の詳細は、ManagedClusterSets の概要 を参照してください。
1 つ以上の ManagedClusterSets がバインドされた rhacm-policies などの namespace を選択し、namespace 内に Placement オブジェクトを作成するためのアクセス権を取得したら、次の操作を表示します。
Policy、PlacementBinding、および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
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,watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhacm-policiesnamespace にポリシーを作成するには、以前に作成したClusterRoleを使用して、rhacm-policiesnamespace にrhacm-edit-policyなどの namespaceRoleBindingを作成します。以下のコマンドを実行します。oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>
oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターのポリシーステータスを表示するには、ハブクラスターのマネージドクラスターの namespace でポリシーを表示するパーミッションが必要です。OpenShift
viewClusterRoleなどのviewアクセス権がない場合は、次のコマンドを使用して、ポリシーへの表示アクセス権を持つClusterRole(rhacm-view-policyなど) を作成します。oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watch
oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい
ClusterRoleをマネージドクラスターの namespace にバインドするには、次のコマンドを実行して namespaceRoleBindingを作成します。oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>
oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.2.1. ガバナンスライフサイクルのコンソールと API RBAC テーブル リンクのコピーリンクがクリップボードにコピーされました!
以下は、ガバナンスライフサイクルのコンソールおよび API 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 |
| API | 管理 | 編集 | 表示 |
|---|---|---|---|
|
| create, read, update, delete | read, update | read |
|
| create, read, update, delete | read, update | read |
|
| create, read, update, delete | read, update | read |
1.2.3. 可観測性の RBAC リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターの可観測性メトリクスを表示するには、ハブクラスター上のそのマネージドクラスターに対する view 権限が必要です。以下の可観測性機能のリストを参照してください。
マネージドクラスターのメトリクスへのアクセス
ユーザーがハブクラスター上のマネージドクラスターの
viewロールに割り当てられていない場合、ユーザーによるマネージドクラスターメトリクスへのアクセスは拒否されます。次のコマンドを実行して、マネージドクラスターの namespace でmanagedClusterViewロールの作成権限がユーザーにあるかを確認します。oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>
oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター管理者として、マネージドクラスターの namespace に
managedClusterViewロールを作成します。以下のコマンドを実行します。oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>
oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、ロールバインドを作成してロールをユーザーに適用し、バインドします。以下のコマンドを実行します。
oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user> -n <managedClusterName>
oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user> -n <managedClusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースの検索
ユーザーがリソースタイプにアクセスできるか確認するには、次のコマンドを使用します。
oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>
oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
<resource-type>は複数形にする必要があります。Grafana で可観測性データを表示するには、マネージドクラスターの同じ namespace に
RoleBindingリソースが必要です。以下は
RoleBindingの例です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
詳細は、ロールバインディングポリシー を参照してください。可観測性を設定するには、可観測性の詳細設定 を参照してください。
1.2.3.1. 可観測性ライフサイクルのコンソールと API RBAC テーブル リンクのコピーリンクがクリップボードにコピーされました!
可観測性のコンポーネントを管理する場合は、以下の API RBAC の表を確認してください。
| API | 管理 | 編集 | 表示 |
|
| create, read, update, delete | read, update | read |
|
| create, get, list, watch, update, delete, patch | - | - |
|
| get, list, watch | get, list, watch | get, list, watch |
1.3. コンソールを使用したきめ細かなロールベースのアクセス制御の実装 (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Advanced Cluster Management for Kubernetes は、きめ細かなロールベースアクセス制御 (RBAC) をサポートします。クラスター管理者は、ClusterPermission リソースを使用して権限を管理および制御できます。このリソースは、マネージドクラスターの namespace レベルとクラスターレベルの権限を制御します。マネージドクラスター全体に権限を付与せずに、クラスター内の仮想マシン namespace に権限を付与します。
コンソールからきめ細かなロールベースのアクセス制御 (RBAC) と ClusterPermission リソースを設定する方法を学習します。
必要なアクセス権: クラスター管理者
OpenShift Container Platform のデフォルトおよび仮想化のロールと権限の詳細は、OpenShift Container Platform ドキュメントの 認可 を参照してください。
Red Hat Advanced Cluster Management のロールベースアクセスの詳細は、ロールベースアクセス制御の実装 を参照してください。
前提条件
きめ細かなロールベースのアクセス制御の使用を開始するには、次の要件を参照してください。
-
アクセス制御に使用される仮想マシンを表すことができるマネージドクラスター namespace のリストを取得するには、
検索用のMultiClusterHubカスタムリソースspec.overrides.componentsをenabledにする必要があります。 - 仮想マシンが必要です。
1.3.1. コンソールでのきめ細かなロールベースのアクセス制御の割り当て リンクのコピーリンクがクリップボードにコピーされました!
きめ細かなロールベースのアクセス制御を使用して、仮想マシンを管理するユーザーを割り当てることができます。ユーザーロールのアクセスが許可されていない場合、コンソールでのアクションは無効になります。YAML オプションをオンにすると、入力したデータが YAML エディターに表示されるようになります。
デフォルトのロールの拡張である、OpenShift Virtualization の次のロールへのアクセスを許可できます。
-
kubevirt.io:view: リソースのみを表示する -
kubevirt.io:edit: リソースを変更する -
kubevirt.io:admin: リソースを表示、変更、削除する、およびリソースの権限を付与する
重要: 管理者は、有効な ClusterPermission リソースに対して RoleBinding または ClusterRoleBinding リソースのいずれかを追加する必要があります。両方のリソースを追加することもできます。
MultiClusterHubカスタムリソースに移動してリソースを編集し、機能を有効にします。- local-cluster ビューから、Operators > Installed Operators > Advanced Cluster Management for Kubernetes をクリックします。
- リソースを編集するには、MultiClusterHub タブをクリックします。
- YAML オプションをオンにすると、YAML エディターでデータが表示されます。
-
MultiClusterHubカスタムリソースのspec.overrides.componentsフィールドで、fine-grained-rbac-previewをtrueに設定して機能を有効にします。YAML エディターでconfigOverrides仕様をenabled: trueに変更し、変更を保存します。fine-grained-rbac-previewを有効にした次の例を参照してください。
- configOverrides: {}
enabled: true
name: fine-grained-rbac-preview
- configOverrides: {}
enabled: true
name: fine-grained-rbac-preview
local-clusterにenvironment=virtualizationラベルを付けます。- From the All Clusters ビューから Infrastructure > Clusters > をクリックします。
-
local-clusterを見つけて、Actions をクリックして編集します。 -
environment=virtualizationラベルを追加し、変更を保存します。以下の例を参照してください。
environment=virtualization
environment=virtualizationCopy to Clipboard Copied! Toggle word wrap Toggle overflow remediationActionのpolicy-virt-clusterroles値をenforceに変更します。これにより、kubevirtclusterrolesがハブクラスターに追加されます。- Governance > Policies をクリックします。
policy-virt-clusterrolesポリシーを見つけて、Actions をクリックし、remediationActionの値をenforceに変更します。重要: ポリシーには 2 つのremediationAction指定がありますが、変更する必要があるのは後のremediationActionのみです。これは、YAML ファイルの最初のテンプレートには適用されません。以下のサンプルを参照してください。remediationAction: enforce
remediationAction: enforceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - YAML オプションをオンにして、YAML エディターでデータを表示し、変更を保存します。以下の YAML 例を参照してください。
ClusterRoleリソースを作成し、ファイルに名前を付けます。- local-cluster ビューから、User Management > Roles > Create Role をクリックします。
-
次の
ClusterRoleリソース情報を YAML エディターに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterRoleBindingリソースを作成します。- local-cluster ビューから、User Management > RoleBindings > Create bindings をクリックします。
-
Binding type として
Cluster-wide role bindingを選択します。 -
前に選択した
<cluster-role-name>であるClusterRoleの名前と一致するRoleBinding名を追加します。 - 一致するロール名を追加します。
- Subject で User または Group を選択し、User または Group の名前を入力して、変更を保存します。
namespace レベルで権限を付与するための
ClusterPermissionリソースを作成します。- Access control > Create permission をクリックします。
- Basic information ウィンドウで、クラスター名と権限が付与されるユーザーまたはグループを追加します。
- その権限のクラスターを選択します。
namespace レベルで権限を設定する
Role bindings情報を追加します。- クラスターに仮想マシンの namespace を追加します。
- ユーザーまたはグループを追加します。
-
ロールベースで詳細にわたりアクセスを制御できるように、
kubevirt.io:viewなどのロールを追加します。RoleBindingsの組み合わせを選択できます。
-
同じ情報を持つ
ClusterRoleBindingリソースを追加して、クラスターレベルで権限を設定します。 次の例に示すように、確認して Create permission をクリックし、
ClusterPermissionリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
コンソールで
Readyステータスを確認します。 -
Edit permission をクリックすると、
Role bindingsとCluster role bindingを編集できます。 - オプション: GitOps またはターミナルのリソースを使用するには、Export YAML をクリックします。
-
準備ができたら、
ClusterPermissionsリソースを削除できます。 オプション:
可観測性サービスが有効になっている場合は、ユーザーが Grafana で仮想マシンの詳細を表示できるように、ハブクラスターに追加のRoleBindingリソースを作成します。- local-cluster ビューから、User Management > RoleBindings > RoleBindings をクリックします。
-
Binding type として
Namespace role bindingを選択します。 -
ユーザーまたはグループにロールを割り当てる
RoleBindingsの名前を指定します。 - ハブクラスター上の namespace でもある クラスター 名を追加します。
-
Role name の
viewを選択します。 - Subject で User または Group を選択し、ユーザー名またはグループ名を入力して、変更を保存します。
1.4. ターミナルでのきめ細かなロールベースのアクセス制御の実装 (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Advanced Cluster Management for Kubernetes は、きめ細かなロールベースアクセス制御 (RBAC) をサポートします。クラスター管理者は、ClusterPermission リソースを使用して権限を管理および制御できます。このリソースは、マネージドクラスターの namespace レベルとクラスターレベルの権限を制御します。マネージドクラスター全体に権限を付与せずに、クラスター内の仮想マシン namespace に権限を付与します。
ターミナルからきめ細かなロールベースのアクセス制御 (RBAC) と ClusterPermission リソースを設定する方法を学習します。
必要なアクセス権: クラスター管理者
OpenShift Container Platform のデフォルトおよび仮想化のロールと権限の詳細は、OpenShift Container Platform ドキュメントの 認可 を参照してください。
Red Hat Advanced Cluster Management のロールベースアクセスの詳細は、ロールベースアクセス制御の実装 を参照してください。
前提条件
きめ細かなロールベースのアクセス制御の使用を開始するには、次の要件を参照してください。
-
アクセス制御に使用される仮想マシンを表すことができるマネージドクラスター namespace のリストを取得するには、
検索用のMultiClusterHubカスタムリソースspec.overrides.componentsをenabledにする必要があります。 - 仮想マシンが必要です。
1.4.1. ターミナルでのきめ細かなロールベースのアクセス制御の割り当て リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのロールの拡張である、OpenShift Virtualization の次のロールへのアクセスを許可できます。
-
kubevirt.io:view: リソースのみを表示する -
kubevirt.io:edit: リソースを変更する -
kubevirt.io:admin: リソースを表示、変更、削除する、およびリソースの権限を付与する
以下の手順を実行します。
MultiClusterHubリソースでfine-grained-rbac-previewを有効にします。以下のコマンドを実行します。
oc edit mch -n open-cluster-management multiclusterhub
oc edit mch -n open-cluster-management multiclusterhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow configOverridesの仕様をenabled: falseからenabled: trueに変更します。この機能を有効にした次の例を参照してください。- configOverrides: {} enabled: true name: fine-grained-rbac-preview- configOverrides: {} enabled: true name: fine-grained-rbac-previewCopy to Clipboard Copied! Toggle word wrap Toggle overflow
注記:
open-cluster-managementnamespace を使用しない場合はoc get mch -Aを実行して、MultiClusterHubリソースの名前と namespace を取得します。local-clusterにenvironment=virtualizationラベルを付けます。以下のコマンドを実行します。oc label managedclusters local-cluster environment=virtualization
oc label managedclusters local-cluster environment=virtualizationCopy to Clipboard Copied! Toggle word wrap Toggle overflow policy-virt-clusterrolesをenforceに変更します。これにより、kubevirtclusterrolesがハブクラスターに追加されます。ポリシーを編集するには、次のコマンドを実行します。
oc edit policy -n open-cluster-management-global-set policy-virt-clusterroles
oc edit policy -n open-cluster-management-global-set policy-virt-clusterrolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
remediationActionの値をinformからenforceに編集します。重要: ポリシーには 2 つのremediationAction指定がありますが、変更する必要があるのは後のremediationActionのみです。これは、YAML ファイルの最初のテンプレートには適用されません。以下のサンプルを参照してください。
remediationAction: enforce
remediationAction: enforceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の YAML ファイルを作成し、ファイルに名前を付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterRoleリソースを適用します。次のコマンドを実行し、プロセスの前の段階でファイル名を変更した場合にのみファイル名を変更します。oc apply -f <filename>.yml
oc apply -f <filename>.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
ClusterPermissionリソースの YAML ファイルを作成し、ファイルに名前を付けます。 クラスター名、マネージドクラスター namespace、およびユーザーまたはグループ名を指定して、
ClusterPermissionリソースからきめ細かなロールベースのアクセスを割り当てます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してファイルを適用し、以前に名前を変更した場合はファイルの名前を変更します。
oc apply -f <filename>.yml
oc apply -f <filename>.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
observabilityが有効になっている場合は、ユーザーが Grafana で仮想マシンの詳細を表示できるように、ハブクラスターに追加のRoleBindingを作成します。Grafana アクセス用の
RoleBindingリソースを作成します。次のサンプル YAML ファイルを参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
次のコマンドで
ClusterRoleBindingリソースを適用します。
oc apply -f <filename>.yml
oc apply -f <filename>.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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 を提供するために、可観測性コンポーネントによって使用されます。可観測性関連の namespace にアクセスして、ニーズに応じてそれぞれの可観測性証明書を取得および実装してください。
open-cluster-management-observabilitynamespace には次の証明書があります。-
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-observabilitynamespace には、次の証明書があります。-
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 ハブクラスター証明書テーブルを表示します。
| 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 |
1.5.2. Red Hat Advanced Cluster Management マネージド証明書 リンクのコピーリンクがクリップボードにコピーされました!
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 |
これらの Red Hat Advanced Cluster Management マネージド証明書を使用して、ハブクラスター内のマネージドクラスターを認証します。これらのマネージドクラスター証明書は自動的に管理および更新されます。ハブクラスター API サーバー証明書をカスタマイズすると、マネージドクラスターは証明書を自動的に更新します。
1.5.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 自動的に再接続されないマネージドハブクラスターを再接続する場合は、証明書の変更後にインポートされたクラスターがオフラインになる場合のトラブルシューティング を参照してください。
- 証明書ポリシーコントローラーを使用して、マネージドクラスターで証明書ポリシーを作成して管理します。詳細は、証明書ポリシーコントローラー を参照してください。
- SSL/TLS 証明書を使用してプライベートでホストされている Git サーバーにセキュアに接続する方法の詳細は、セキュアな HTTPS 接続でのカスタム CA 証明書の使用 を参照してください。
- 詳細は、OpenShift のサービス提供証明書 を参照してください。
- OpenShift Container Platform のデフォルトの Ingress はハブクラスター証明書です。詳細は、デフォルトの Ingress 証明書の置き換え を参照してください。
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 管理する証明書を更新するには、以下の手順を実行します。
が次のコマンドを実行して、Red Hat Advanced Cluster Management が管理する証明書に関連付けられたシークレットを削除します。
oc delete secret -n <namespace> <secret>
oc delete secret -n <namespace> <secret>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<namespace>と<secret>を使用する値に置き換えます。
次のコマンドを実行して、Red Hat Advanced Cluster Management のマネージド証明書に関連付けられたサービスを再起動します。
oc delete pod -n <namespace> -l <pod-label>
oc delete pod -n <namespace> -l <pod-label>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<namespace>と<pod-label>を Red Hat Advanced Cluster Management のマネージドクラスター証明書 テーブルの値に置き換えます。
注:
pod-labelが指定されていないと、再起動が必要なサービスはありません。シークレットは自動的に再作成され、使用されます。
1.6.2. alertmanager ルートの証明書の置き換え リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform のデフォルトの Ingress 証明書を使用しない場合は、Alertmanager ルートを更新して、alertmanager の可観測性証明書を置き換えます。以下の手順を実行します。
以下のコマンドで可観測性証明書を検査します。
openssl x509 -noout -text -in ./observability.crt
openssl x509 -noout -text -in ./observability.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
証明書のコモンネーム (
CN) をalertmanagerに変更します。 -
csr.cnf設定ファイル内の SAN を、alertmanagerルートのホスト名に変更します。 次に
open-cluster-management-observabilitynamespace で以下の 2 つのシークレットを作成します。以下のコマンドを実行します。oc -n open-cluster-management-observability create secret tls alertmanager-byo-ca --cert ./ca.crt --key ./ca.key oc -n open-cluster-management-observability create secret tls alertmanager-byo-cert --cert ./ingress.crt --key ./ingress.key
oc -n open-cluster-management-observability create secret tls alertmanager-byo-ca --cert ./ca.crt --key ./ca.key oc -n open-cluster-management-observability create secret tls alertmanager-byo-cert --cert ./ingress.crt --key ./ingress.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.3. gatekeeper Webhook 証明書のローテーション リンクのコピーリンクがクリップボードにコピーされました!
gatekeeper Webhook 証明書をローテーションするには、次の手順を実行します。
次のコマンドを使用して、証明書が含まれるシークレットを編集します。
oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-cert
oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-certCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
dataセクションのca.crt、ca.key、tls.crt、およびtls.keyの内容を削除します。 次のコマンドで
gatekeeper-controller-managerPod を削除して、gatekeeper Webhook サービスを再起動します。oc delete pod -n openshift-gatekeeper-system -l control-plane=controller-manager
oc delete pod -n openshift-gatekeeper-system -l control-plane=controller-managerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
gatekeeper Webhook 証明書がローテーションされます。
1.6.4. 証明書のローテーションの確認 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、証明書がローテーションされていることを確認します。
- 確認したいシークレットを特定します。
-
tls.crtキーをチェックして、証明書が使用可能であることを確認します。 次のコマンドを使用して証明書情報を表示します。
oc get secret <your-secret-name> -n open-cluster-management -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -text -nooutoc get secret <your-secret-name> -n open-cluster-management -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -text -nooutCopy to Clipboard Copied! Toggle word wrap Toggle overflow <your-secret-name>は、検証するシークレットの名前に置き換えます。必要に応じて、namespace と JSON パスも更新します。出力で
Validityの詳細を確認します。次のValidityの例を参照してください。Validity Not Before: Jul 13 15:17:50 2023 GMT Not After : Jul 12 15:17:50 2024 GMTValidity Not Before: Jul 13 15:17:50 2023 GMT1 Not After : Jul 12 15:17:50 2024 GMT2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
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.6.6. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- サービス提供証明書のシークレットによるサービストラフィックのセキュリティー保護 を参照してください。
1.7. 独自の可観測性認証局 (CA) 証明書の導入 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes をインストールすると、可観測性のための認証局 (CA) 証明書のみがデフォルトで提供されます。Red Hat Advanced Cluster Management によって生成されたデフォルトの可観測性 CA 証明書を使用しない場合は、可観測性を有効にする前に独自の可観測性 CA 証明書を使用することを選択できます。
1.7.1. OpenSSL コマンドを使用した CA 証明書の生成 リンクのコピーリンクがクリップボードにコピーされました!
可観測性には、サーバー側、クライアント側の 2 つの CA 証明書が必要です。
以下のコマンドを使用して、CA RSA 秘密鍵を生成します。
openssl genrsa -out serverCAKey.pem 2048 openssl genrsa -out clientCAKey.pem 2048
openssl genrsa -out serverCAKey.pem 2048 openssl genrsa -out clientCAKey.pem 2048Copy to Clipboard Copied! Toggle word wrap Toggle overflow 秘密鍵を使用して自己署名 CA 証明書を生成します。以下のコマンドを実行します。
openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pem
openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.2. 独自の可観測性 CA 証明書に関連付けられたシークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
シークレットを作成するには、以下の手順を実行します。
証明書および秘密鍵を使用して
observability-server-ca-certsシークレットを作成します。以下のコマンドを実行します。oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pem
oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書および秘密鍵を使用して
observability-client-ca-certsシークレットを作成します。以下のコマンドを実行します。oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pem
oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.3. rbac-query-proxy ルートの証明書の置き換え リンクのコピーリンクがクリップボードにコピーされました!
rbac-query-proxy ルートの証明書を置き換えることができます。証明書を作成するには、OpenSSL コマンドを使用した CA 証明書の生成 を参照してください。
csr.cnf ファイルを使用して Certificate Signing Request (CSR) を作成する場合は、subjectAltName セクションの DNS.1 フィールドを rbac-query-proxy ルートのホスト名と一致するように更新します。
以下の手順を実行します。
次のコマンドを実行してホスト名を取得します。
oc get route rbac-query-proxy -n open-cluster-management-observability -o jsonpath=" {.spec.host}"oc get route rbac-query-proxy -n open-cluster-management-observability -o jsonpath=" {.spec.host}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成された証明書を使用して
proxy-byo-caシークレットを作成します。以下のコマンドを実行します。oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.key
oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成された証明書を使用して
proxy-byo-certシークレットを作成するには、次のコマンドを実行します。oc -n open-cluster-management-observability create secret tls proxy-byo-cert --cert ./ingress.crt --key ./ingress.key
oc -n open-cluster-management-observability create secret tls proxy-byo-cert --cert ./ingress.crt --key ./ingress.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- ルート認証のカスタマイズ を参照してください。
- オブジェクトストアにアクセスするための証明書のカスタマイズ を参照してください。