ビュー:
プロファイル適用性: レベル1
kubeletサーバ証明書のローテーションを有効にする。
RotateKubeletServerCertificateは、クライアント認証情報のブートストラップ後にkubeletがサーバー証明書を要求し、既存の認証情報が期限切れになると証明書を更新します。この自動的な定期的な更新により、証明書の期限切れによるダウンタイムがなくなり、CIAセキュリティの三要素における可用性に対応します。
この推奨事項は、kubeletがAPIサーバから証明書を取得する場合にのみ適用されます。kubeletの証明書が外部の認証機関やツール (例: Vault) から取得される場合は、証明書の更新を自分で管理する必要があります。
注意
注意
AKSのドキュメントでデフォルト値を確認してください。

監査

Audit Method 1
Kubelet設定ファイルを使用している場合、RotateKubeletServerCertificatetrueに設定されているエントリがあることを確認してください。
  1. 関連ノードにSSH接続してください。
  2. 各ノードで次のコマンドを実行して、適切なKubelet設定ファイルを見つけてください。
    ps -ef | grep kubelet
    出力は、Kubeletの設定ファイルの場所である--config /etc/kubernetes/kubelet/kubelet-config.jsonに類似したものを返す必要があります。
  3. Kubelet設定ファイルを開く:
    cat /etc/kubernetes/kubelet/kubelet-config.json
  4. RotateKubeletServerCertificate引数が存在し、trueに設定されていることを確認してください。
Audit Method 2
api configzエンドポイントを使用する場合、kubeletを実行しているノードからライブ構成を抽出して、"RotateKubeletServerCertificate":trueのステータスを検索してください。
ローカルプロキシポートと以下の変数を設定し、プロキシポート番号とノード名を提供してください: HOSTNAME_PORT="localhost-and-port-number" NODE_NAME="The-Name-Of-Node-To-Extract-Configuration" from the output of "kubectl get nodes"
kubectl proxy --port=8001 &

export HOSTNAME_PORT=localhost:8001
export NODE_NAME=ip-192.168.31.226.aks.internal

curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"

修復

Remediation Method 1
Kubeletの設定ファイルを変更する場合、kubelet-config.jsonファイル/etc/kubernetes/kubelet/kubelet-config.jsonを編集し、以下のパラメータをtrueに設定してください。
"RotateKubeletServerCertificate":true
Remediation Method 2
Kubelet設定ファイルを使用している場合は、ファイルを編集してRotateKubeletServerCertificatetrueに設定してください。
実行可能な引数を使用する場合、各ワーカーノードの kubelet サービスファイル /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf を編集し、KUBELET_ARGS 変数文字列の末尾に以下のパラメータを追加してください。
--rotate-kubelet-server-certificate=true
Remediation Method 3
api configzエンドポイントを使用する場合、kubeletを実行しているノードからライブ構成を抽出して、"RotateKubeletServerCertificate":のステータスを検索してください。
詳細な手順ごとのconfigmap手順については、ライブクラスターでノードのKubeletを再構成するを参照し、監査プロセスからcurlステートメントを再実行してkubelet構成の変更を確認してください。
kubectl proxy --port=8001 &

export HOSTNAME_PORT=localhost:8001
export NODE_NAME=ip-192.168.31.226.aks.internal

curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
For all three remediations: システムに基づいて、kubeletサービスを再起動し、ステータスを確認してください。
systemctl daemon-reload
systemctl restart kubelet.service
systemctl status kubelet -l