第6章 セキュリティーの概要
Red Hat Advanced Cluster Management for Kubernetes コンポーネントのセキュリティーを管理します。定義したポリシーおよびプロセスでクラスターを統制し、リスクを特定して最小限に抑えます。ポリシーを使用して、ルールの定義および制御の設定を行います。
前提条件: Red Hat Advanced Cluster Management for Kubernetes の認証サービス要件を設定する必要がある。詳細は、アクセス制御 を参照してください。
クラスターのセキュリティー保護に関する詳細は、以下のトピックを参照してください。
6.1. 証明書の概要 リンクのコピーリンクがクリップボードにコピーされました!
さまざまな証明書を使用して、Red Hat Advanced Cluster Management for Kubernetes クラスターの信頼性を検証できます。証明書の管理を学習するには、引き続き以下をお読みください。
6.1.1. 証明書 リンクのコピーリンクがクリップボードにコピーされました!
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
必要なアクセス権限: クラスターの管理者
証明書の管理に関する詳細は、以下を参照してください。
注記: ユーザーは証明書のローテーションおよび更新を行います。
6.1.1.1. Red Hat Advanced Cluster Management ハブクラスター証明書 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift のデフォルトの Ingress 証明書は、技術的にはハブクラスター証明書です。Red Hat Advanced Cluster Management をインストールすると、可観測性証明書が作成され、この証明書を可観測性コンポーネントが使用してハブクラスターとマネージドクラスターの間のトラフィックで相互 TLS を提供します。
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 |
6.1.1.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 |
6.1.1.2.1. マネージドクラスター証明書 リンクのコピーリンクがクリップボードにコピーされました!
証明書を使用して、ハブクラスターでマネージドクラスターを認証できます。したがって、このような証明書に関連するトラブルシューティングシナリオを認識しておくことが重要です。
マネージドクラスター証明書は自動的に更新されます。
6.1.1.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 証明書ポリシーコントローラーを使用して、マネージドクラスターで証明書ポリシーを作成して管理します。詳細は、証明書ポリシーコントローラー を参照してください。
- SSL/TLS 証明書を使用してプライベートでホストされている Git サーバーにセキュアに接続する方法の詳細は、セキュアな HTTPS 接続でのカスタム CA 証明書の使用 を参照してください。
- 詳細は、OpenShift のサービス提供証明書 を参照してください。
- OpenShift Container Platform のデフォルトの Ingress はハブクラスター証明書です。詳細は、デフォルトの Ingress 証明書の置き換え を参照してください。
- トピックは 証明書の概要 を参照してください。
6.1.2. 証明書の管理 リンクのコピーリンクがクリップボードにコピーされました!
証明書を更新、置換、ローテーション、およびリストする方法は、以下を参照してください。
6.1.2.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が指定されていないと、再起動が必要なサービスはありません。シークレットは自動的に再作成され、使用されます。
6.1.2.2. alertmanager ルートの証明書の置き換え リンクのコピーリンクがクリップボードにコピーされました!
OpenShift のデフォルトの 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
6.1.2.3. rbac-query-proxy ルートの証明書の置き換え リンクのコピーリンクがクリップボードにコピーされました!
rbac-query-proxy ルートの証明書を置き換えることができます。独自の可観測性認証局 (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-certシークレットを作成するには、次のコマンドを実行します。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
6.1.2.4. 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 証明書がローテーションされます。
6.1.2.5. 証明書のローテーションの確認 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、証明書がローテーションされていることを確認します。
- 確認したいシークレットを特定します。
-
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
6.1.2.6. ハブクラスターで管理される証明書のリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
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 があります。
6.1.2.7. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- サービス提供証明書のシークレットによるサービストラフィックのセキュリティー保護 を参照してください。
- 証明書の概要 を参照してください。