プロファイル適用性: レベル2
kubeletクライアント証明書のローテーションを有効にする。
--rotate-certificates
設定は、既存の認証情報が期限切れになると、kubeletが新しいCSRを作成してクライアント証明書をローテーションするようにします。この自動的な定期ローテーションにより、証明書の期限切れによるダウンタイムが発生せず、CIA
(機密性、完全性、可用性) セキュリティの三要素における可用性に対処します。この推奨事項は、kubeletがAPIサーバから証明書を取得する場合にのみ適用されます。kubeletの証明書が外部の認証機関/ツール (例: Vault) から取得される場合は、自分でローテーションを実装する必要があります。この機能には、
RotateKubeletClientCertificate
機能ゲートを有効にする必要もあります。![]() |
注意Azure AKS のドキュメントでデフォルト値を確認してください。
|
影響
証明書のローテーションを無効にすると、有効期限が切れたKubelet証明書がAPIサーバとの通信を妨げ、ノードやポッドの問題を引き起こす可能性があります。これには手動での介入が必要となる場合があり、本番環境では持続可能ではありません。
監査
-
各ノードにSSHで接続し、次のコマンドを実行してKubeletプロセスを見つけてください。
ps -ef | grep kubelet
-
出力に
--RotateCertificate
実行可能な引数が含まれている場合、それがtrue
に設定されていることを確認してください。 -
上記のコマンドの出力に
--RotateCertificate
実行可能な引数が含まれていない場合は、Kubeletの設定ファイルを確認してください。上記のコマンドの出力は、--config /etc/kubernetes/kubelet/kubelet-config.json
のようなものを返すはずです。これはKubelet設定ファイルの場所です。 -
Kubeletの設定ファイルを開く:
cat /etc/kubernetes/kubelet/kubelet-config.json
-
RotateCertificate
引数が存在しないか、true
に設定されていることを確認してください。
修復
Remediation Method 1:
Kubeletの設定ファイルを変更する場合は、
/etc/kubernetes/kubelet/kubelet-config.json
を編集し、以下のパラメータをtrue
に設定してください。"rotateCertificates": true
kubeletサービスファイル
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
が--RotateCertificate
実行引数をfalse
に設定しないようにしてください。これはKubelet設定ファイルを上書きしてしまうためです。Remediation Method 2:
実行可能な引数を使用する場合、各ワーカーノードのkubeletサービスファイル
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
を編集し、KUBELET_ARGS
文字列の末尾に以下のパラメータを追加してください。--RotateCertificate=true