|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
CIS 1.9 セルフアセスメントガイド
概要
この文書は、K3s セキュリティハードニングガイドの補足資料です。ハードニングガイドは、K3sの本番インストールをハードニングするための指針を提供し、このベンチマークガイドは、CIS Kubernetes ベンチマークの各コントロールに対してハードニングされたクラスターのセキュリティレベルを評価するのに役立つことを目的としています。これは、K3sオペレーター、セキュリティチーム、監査人、意思決定者によって使用されることを意図しています。
このガイドは、K3sの*v1.27-v1.29*リリースラインおよびCIS Kubernetes ベンチマークの*v1.9*リリースに特化しています。
各コントロールに関する詳細な説明や失敗したテストの修正方法を含む情報については、CIS Kubernetes ベンチマーク v1.9の該当セクションを参照してください。ベンチマークは、無料アカウントを作成した後にhttps://www.cisecurity.org/benchmark/kubernetes[インターネットセキュリティセンター (CIS)]からダウンロードできます。
コントロールテストの方法論
CIS Kubernetes ベンチマークの各コントロールは、付随するハードニングガイドに従って構成されたK3sクラスターに対して評価されました。
コントロール監査が元のCISベンチマークと異なる場合、K3sに特有の監査コマンドがテスト用に提供されます。
これらは各コントロールの可能な結果です:
-
合格 - テスト対象のK3sクラスターは、ベンチマークに示された監査に合格しました。
-
該当せず - このコントロールは、K3sの設計上の動作により該当しません。修正セクションでは、なぜそうなるのかを説明します。
-
警告 - このコントロールはCISベンチマークで手動であり、クラスターの使用ケースやクラスターオペレーターによって決定される他の要因に依存します。これらのコントロールは、K3sがその実装を妨げないことを確認するために評価されましたが、テスト対象のクラスターに対するさらなる構成や監査は行われていません。
このガイドは、K3sがSystemdユニットとして実行されているという前提を置いています。あなたのインストールは異なる場合があり、シナリオに合わせて「監査」コマンドを調整する必要があります。
1.1 コントロールプレーンノードの設定ファイル
1.1.1 APIサーバーポッド仕様ファイルのパーミッションが600以上に設定されていることを確認してください(自動化)
*結果:*該当なし
理由:
デフォルトでは、K3sはapiサーバーをk3sプロセス内に埋め込んでいます。APIサーバーポッド仕様ファイルは存在しません。
1.1.2 APIサーバーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認してください(自動化)
*結果:*該当なし
理由:
デフォルトでは、K3sはapiサーバーをk3sプロセス内に埋め込んでいます。APIサーバーポッド仕様ファイルは存在しません。
1.1.3 コントローラーマネージャーポッド仕様ファイルのパーミッションが600以上に設定されていることを確認してください(自動化)
*結果:*該当なし
理由:
デフォルトでは、K3sはコントローラーマネージャーをk3sプロセス内に埋め込んでいます。コントローラーマネージャーポッド仕様ファイルは存在しません。
1.1.4 コントローラーマネージャーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認してください(自動化)
*結果:*該当なし
理由:
デフォルトでは、K3sはコントローラーマネージャーをk3sプロセス内に埋め込んでいます。コントローラーマネージャーポッド仕様ファイルは存在しません。
1.1.5 スケジューラーポッド仕様ファイルのパーミッションが600以上に設定されていることを確認してください(自動化)
*結果:*該当なし
理由:
デフォルトでは、K3sはスケジューラーをk3sプロセス内に埋め込んでいます。スケジューラーポッド仕様ファイルは存在しません。
1.1.6 スケジューラーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認してください(自動化)
*結果:*該当なし
理由:
デフォルトでは、K3sはスケジューラーをk3sプロセス内に埋め込んでいます。スケジューラーポッド仕様ファイルは存在しません。
1.1.7 etcdポッド仕様ファイルのパーミッションが600以上に設定されていることを確認してください(自動化)
*結果:*該当なし
理由:
デフォルトでは、K3sはetcdをk3sプロセス内に埋め込んでいます。etcdポッド仕様ファイルは存在しません。
1.1.8 etcdポッド仕様ファイルの所有者がroot:rootに設定されていることを確認してください(自動化)
*結果:*該当なし
理由:
デフォルトでは、K3sはetcdをk3sプロセス内に埋め込んでいます。etcdポッド仕様ファイルは存在しません。
1.1.9 コンテナネットワークインタフェースファイルのパーミッションが600以上に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
find /var/lib/cni/networks -type f ! -name lock 2> /dev/null | xargs --no-run-if-empty stat -c permissions=%a
期待される結果: パーミッションは600であり、600以上であることが期待されます。
戻り値:
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
修正:
デフォルトでは、K3sはCNIファイルの権限を600に設定します。多くのCNIでは、権限750のロックファイルが作成されることに注意してください。これは予想されることであり、無視しても構いません。CNI設定を変更する場合は、権限が600に設定されていることを確認してください。例えば、chmod 600 /var/lib/cni/networks/<filename>
1.1.10 コンテナネットワークインタフェースファイルの所有権がroot:rootに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
find /var/lib/cni/networks -type f 2> /dev/null | xargs --no-run-if-empty stat -c %U:%G
期待される結果: 'root:root' が存在します
戻り値:
root:root
root:root
root:root
root:root
root:root
root:root
root:root
修正:
制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/cni/networks/<filename>
1.1.11 etcdデータディレクトリの権限が700またはそれ以上に制限されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
stat -c permissions=%a /var/lib/rancher/k3s/server/db/etcd
期待される結果: 権限は700であり、期待されるのは700またはそれ以上の制限です
戻り値:
permissions=700
修正:
非etcdクラスターには適用されません。etcdロールなしでマスターのみを実行している場合、このチェックは適用されません。制御プレーンとetcdロールが同じノードに存在するが、このチェックが警告の場合、etcdサーバーノードで、コマンド 'ps -ef | grep etcd' から引数 --data-dir として渡されたetcdデータディレクトリを取得します。上記で見つかったetcdデータディレクトリに基づいて、以下のコマンドを実行してください。例えば、chmod 700 /var/lib/rancher/k3s/server/db/etcd
1.1.12 etcdデータディレクトリの所有権がetcd:etcdに設定されていることを確認してください(自動化)
*結果:*該当なし
*理由:*K3sでは、etcdはk3sプロセス内に組み込まれています。別のetcdプロセスは存在しません。したがって、etcdデータディレクトリの所有権はk3sプロセスによって管理され、root:rootである必要があります。
1.1.13 admin.confファイルのパーミッションが600またはそれ以上に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/admin.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/admin.kubeconfig; fi'
期待される結果: パーミッションは600であり、600以上であることが期待されます。
戻り値:
permissions=600
Remediation: → 修正:
制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod 600 /var/lib/rancher/k3s/server/cred/admin.kubeconfig
1.1.14 admin.confファイルの所有者がroot:rootに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/admin.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/admin.kubeconfig; fi'
期待される結果: 'root:root' は 'root:root' と等しい
戻り値:
root:root
修正:
制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/rancher/k3s/server/cred/admin.kubeconfig
1.1.15 scheduler.confファイルのパーミッションが600またはそれ以上に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi'
期待される結果: パーミッションは600ですが、600またはそれよりも厳しい設定が期待されます。
戻り値:
permissions=600
修正:
制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod 600 /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig
1.1.16 scheduler.confファイルの所有者がroot:rootに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi'
期待される結果: 'root:root' が存在します
戻り値:
root:root
修正:
制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig
1.1.17 controller-manager.confファイルのパーミッションが600またはそれ以上に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/controller.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/controller.kubeconfig; fi'
期待される結果: パーミッションは600ですが、600またはそれよりも厳しい設定が期待されます。
戻り値:
permissions=600
修正:
制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod 600 /var/lib/rancher/k3s/server/cred/controller.kubeconfig
1.1.18 controller-manager.confファイルの所有者がroot:rootに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
stat -c %U:%G /var/lib/rancher/k3s/server/cred/controller.kubeconfig
期待される結果: 'root:root' は 'root:root' と等しい
戻り値:
root:root
補修:
制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/rancher/k3s/server/cred/controller.kubeconfig
1.1.19 Kubernetes PKIディレクトリとファイルの所有者がroot:rootに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
stat -c %U:%G /var/lib/rancher/k3s/server/tls
期待される結果: 'root:root' が存在します
戻り値:
root:root
補修:
制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown -R root:root /var/lib/rancher/k3s/server/tls
1.1.20 Kubernetes PKI証明書ファイルのパーミッションが600またはそれ以上に設定されていることを確認してください(手動)
*結果:*WARN
修正:*マスターノードで以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod -R 600 /var/lib/rancher/k3s/server/tls/.crt
1.1.21 Kubernetes PKIキーファイルのパーミッションが600に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'stat -c permissions=%a /var/lib/rancher/k3s/server/tls/*.key'
期待される結果: パーミッションは600であり、600またはそれよりも厳しいことが期待されます。
戻り値:
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
permissions=600
修正:
マスターノードで以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod -R 600 /var/lib/rancher/k3s/server/tls/*.key
1.2 APIサーバー
1.2.1 --anonymous-auth引数がfalseに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'anonymous-auth'
期待される結果: '--anonymous-auth' は 'false' と等しい
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3sは—anonymous-auth引数をfalseに設定します。このチェックが失敗した場合、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のようなものを削除してください。
kube-apiserver-arg: - "anonymous-auth=true"
1.2.2 --token-auth-fileパラメータが設定されていないことを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--token-auth-file' は存在しない
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
ドキュメントに従って、認証のための代替メカニズムを構成してください。このチェックが失敗した場合、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のようなものを削除してください。
kube-apiserver-arg: - "token-auth-file=<path>"
1.2.3 --DenyServiceExternalIPsが設定されていることを確認してください(手動)
*結果:*WARN
*修正:*デフォルトでは、K3sはDenyServiceExternalIPsを設定しません。このフラグを有効にするには、K3sの設定ファイル/etc/rancher/k3s/config.yamlを以下のように編集してください。
kube-apiserver-arg: - "enable-admission-plugins=DenyServiceExternalIPs"
1.2.4 --kubelet-client-certificateおよび—kubelet-client-key引数が適切に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--kubelet-client-certificate’が存在し、かつ'--kubelet-client-key’が存在する
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3sはkubeletクライアント証明書とキーを自動的に提供します。それらは生成され、/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crtおよび/var/lib/rancher/k3s/server/tls/client-kube-apiserver.keyにあります。何らかの理由で独自の証明書とキーを提供する必要がある場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlに以下のパラメータを設定できます。
kube-apiserver-arg: - "kubelet-client-certificate=<path/to/client-cert-file>" - "kubelet-client-key=<path/to/client-key-file>"
1.2.5 --kubelet-certificate-authority引数が適切に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'kubelet-certificate-authority'
期待される結果: '--kubelet-certificate-authority’が存在する
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3sはkubelet CA証明書ファイルを自動的に提供し、/var/lib/rancher/k3s/server/tls/server-ca.crtにあります。何らかの理由で独自のCA証明書を提供する必要がある場合は、k3s証明書コマンドラインツールの使用を検討してください。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のような行を削除してください。
kube-apiserver-arg: - "kubelet-certificate-authority=<path/to/ca-cert-file>"
1.2.6 --authorization-mode引数がAlwaysAllowに設定されていないことを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode'
期待される結果: '--authorization-mode’が’AlwaysAllow’を持たない
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3sは—authorization-modeをAlwaysAllowに設定しません。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のような行を削除してください。
kube-apiserver-arg: - "authorization-mode=AlwaysAllow"
1.2.7 --authorization-mode引数にNodeが含まれていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode'
期待される結果: '--authorization-mode’が’Node’を持つ
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3sは—authorization-modeをNodeおよびRBACに設定します。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、authorization-modeを上書きしていないことを確認してください。
1.2.8 --authorization-mode引数にRBACが含まれていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode'
期待される結果: '--authorization-mode' は 'RBAC' を持っています。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3sは—authorization-modeをNodeおよびRBACに設定します。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、authorization-modeを上書きしていないことを確認してください。
1.2.9 admission control プラグイン EventRateLimit が設定されていることを確認してください(手動)
*結果:*WARN
*修正:*Kubernetes のドキュメントに従い、設定ファイルに希望の制限を設定してください。次に、K3s の設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のパラメータを設定してください。
kube-apiserver-arg: - "enable-admission-plugins=\...,EventRateLimit,\..." - "admission-control-config-file=<path/to/configuration/file>"
1.2.10 Admission control プラグイン AlwaysAdmit が設定されていないことを確認してください(自動)。
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins'
期待される結果: '--enable-admission-plugins' は 'AlwaysAdmit' を持っていないか、'--enable-admission-plugins' が存在しません。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3s は --enable-admission-plugins を AlwaysAdmit に設定しません。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のような行を削除してください。
kube-apiserver-arg: - "enable-admission-plugins=AlwaysAdmit"
1.2.11 Admission control プラグイン AlwaysPullImages が設定されていることを確認してください(手動)。
*結果:*WARN
*修正:*CIS ガイドラインに従い、"この設定は、オフラインまたは孤立したクラスターに影響を与える可能性があります。これらのクラスターは、事前にイメージがロードされており、使用中のイメージをプルするためのレジストリにアクセスできません。"この設定は、この構成を使用するクラスターには適していません。K3s の設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のパラメータを設定してください。
kube-apiserver-arg: - "enable-admission-plugins=\...,AlwaysPullImages,\..."
1.2.12 Admission control プラグイン ServiceAccount が設定されていることを確認してください(自動)。
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--disable-admission-plugins' が存在するか、'--disable-admission-plugins' が存在しません。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3s は --disable-admission-plugins を何にも設定しません。ドキュメントに従い、環境に応じて ServiceAccount オブジェクトを作成してください。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のような行を削除してください。
kube-apiserver-arg: - "disable-admission-plugins=ServiceAccount"
1.2.13 Admission control プラグイン NamespaceLifecycle が設定されていることを確認してください(自動)。
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--disable-admission-plugins' が存在するか、'--disable-admission-plugins' が存在しません。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3s は --disable-admission-plugins を何にも設定しません。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のような行を削除してください。
kube-apiserver-arg: - "disable-admission-plugins=\...,NamespaceLifecycle,\..."
1.2.14 Admission control プラグイン NodeRestriction が設定されていることを確認してください(自動)。
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins'
期待される結果: '--enable-admission-plugins' は 'NodeRestriction' を持っています。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3s は --enable-admission-plugins を NodeRestriction に設定します。K3s の設定ファイル /etc/rancher/k3s/config.yaml を使用している場合、admission プラグインを上書きしていないことを確認してください。もしそうであれば、NodeRestrictionをリストに含めてください。
kube-apiserver-arg: - "enable-admission-plugins=\...,NodeRestriction,\..."
1.2.15 --profiling引数がfalseに設定されていることを確認してください(自動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'profiling'
期待される結果: '--profiling’は’false’と等しい
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正方法:
デフォルトでは、K3s は --profiling引数をfalseに設定します。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のような行を削除してください。
kube-apiserver-arg: - "profiling=true"
1.2.16 --audit-log-path引数が設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--audit-log-path’が存在する
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正方法:
K3s の設定ファイル /etc/rancher/k3s/config.yaml を編集し、audit-log-path パラメータを監査ログを書き込む適切なパスとファイルに設定してください。例えば、
kube-apiserver-arg: - "audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log"
1.2.17 --audit-log-maxage引数が30 または適切な値に設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--audit-log-maxage’は30以上である
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正方法:
K3s の設定ファイル /etc/rancher/k3s/config.yaml をコントロールプレーンノードで編集し、audit-log-maxage パラメータを30 または適切な日数に設定してください。例えば、
kube-apiserver-arg: - "audit-log-maxage=30"
1.2.18 --audit-log-maxbackup引数が10 または適切な値に設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--audit-log-maxbackup’は10以上である
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正方法:
K3s の設定ファイル /etc/rancher/k3s/config.yaml をコントロールプレーンノードで編集し、audit-log-maxbackup パラメータを10 または適切な値に設定してください。などです。別の例をあげれば、
kube-apiserver-arg: - "audit-log-maxbackup=10"
1.2.19 --audit-log-maxsize引数が100 または適切な値に設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--audit-log-maxsize’は100以上である
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
K3sの設定ファイル/etc/rancher/k3s/config.yamlをコントロールプレーンノードで編集し、audit-log-maxsizeパラメータを適切なサイズ(MB単位)に設定してください。などです。別の例をあげれば、
kube-apiserver-arg: - "audit-log-maxsize=100"
1.2.20 --request-timeout引数が適切に設定されていることを確認してください(手動)
*結果:*WARN
*修正:*CISガイドラインに従い、"この制限を適切に設定し、必要な場合にのみデフォルトの60秒の制限を変更することを推奨します"。必要に応じて、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のパラメータを設定してください。などです。別の例をあげれば、
kube-apiserver-arg: - "request-timeout=300s"
1.2.21 --service-account-lookup引数がtrueに設定されていることを確認してください(自動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--service-account-lookup' は存在しないか、または '--service-account-lookup' は存在します。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
デフォルトでは、K3s は --service-account-lookup 引数を設定しません。K3s の設定ファイル /etc/rancher/k3s/config.yaml を編集し、service-account-lookup を設定してください。などです。別の例をあげれば、
kube-apiserver-arg: - "service-account-lookup=true"
また、このファイルから service-account-lookup パラメータを削除することで、デフォルトが適用されるようにできます。
1.2.22 --service-account-key-file 引数が適切に設定されていることを確認してください(自動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1
期待される結果: '--service-account-key-file' は存在します。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
K3s は自動的にサービスアカウントキー ファイルを生成し、設定します。それは /var/lib/rancher/k3s/server/tls/service.key にあります。このチェックが失敗した場合は、K3s の設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-apiserver-arg: - "service-account-key-file=<path>"
1.2.23 --etcd-certfile と --etcd-keyfile 引数が適切に設定されていることを確認してください(自動)
*結果:*PASS
Audit(監査):
if [ "$(journalctl -m -u k3s | grep -m1 'Managed etcd cluster' | wc -l)" -gt 0 ]; then
journalctl -m -u k3s | grep -m1 'Running kube-apiserver' | tail -n1
else
echo "--etcd-certfile AND --etcd-keyfile"
fi
期待される結果: '--etcd-certfile' は存在し、かつ '--etcd-keyfile' は存在します。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正:
K3s は自動的にetcd証明書とキー ファイルを生成し、設定します。それらは /var/lib/rancher/k3s/server/tls/etcd/client.crt と /var/lib/rancher/k3s/server/tls/etcd/client.key にあります。このチェックが失敗した場合は、K3s の設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-apiserver-arg: - "etcd-certfile=<path>" - "etcd-keyfile=<path>"
1.2.24 --tls-cert-file と --tls-private-key-file 引数が適切に設定されていることを確認してください(自動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep -A1 'Running kube-apiserver' | tail -n2
期待される結果: '--tls-cert-file' は存在し、かつ '--tls-private-key-file' は存在します。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259"
修正:
デフォルトでは、K3s は自動的にTLS証明書とプライベートキーをapiserverに提供します。それらは生成され、/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt および /var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key に配置されます。このチェックが失敗した場合は、K3s の設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-apiserver-arg: - "tls-cert-file=<path>" - "tls-private-key-file=<path>"
1.2.25 --client-ca-file 引数が適切に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'client-ca-file'
期待される結果: '--client-ca-file' は存在します。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
Remediation: 修正方法:
デフォルトでは、K3sは自動的にクライアント証明書認証局ファイルを提供します。これは /var/lib/rancher/k3s/server/tls/client-ca.crt に生成され、配置されます。何らかの理由で独自のCA証明書を提供する必要がある場合は、k3s証明書コマンドラインツールの使用を検討してください。このチェックが失敗した場合は、K3s の設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-apiserver-arg: - "client-ca-file=<path>"
1.2.26 --etcd-cafile 引数が適切に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-cafile'
期待される結果: '--etcd-cafile' が存在します
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
Remediation: 修正方法:
デフォルトでは、K3s は etcd 証明書認証局ファイルを自動的に提供します。これは /var/lib/rancher/k3s/server/tls/etcd-ca.crt に生成され、配置されます。何らかの理由で独自のCA証明書を提供する必要がある場合は、k3s証明書コマンドラインツールの使用を検討してください。このチェックが失敗した場合は、K3s の設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-apiserver-arg: - "etcd-cafile=<path>"
1.2.27 --encryption-provider-config 引数が適切に設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'encryption-provider-config'
期待される結果: '--encryption-provider-config' が存在します
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
補修:
K3s は、秘密情報を静止状態で暗号化するために暗号化プロバイダーを使用するように構成できます。制御プレーンノードの K3s 設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のパラメータを設定します。 secrets-encryption: true その後、秘密の暗号化は k3s secrets-encrypt コマンドラインツールで管理できます。必要に応じて、生成された暗号化設定は /var/lib/rancher/k3s/server/cred/encryption-config.json にあります。
1.2.28 暗号化プロバイダーが適切に設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
ENCRYPTION_PROVIDER_CONFIG=$(journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -- --encryption-provider-config | sed 's%.*encryption-provider-config[= ]\([{caret} ]*\).*%\1%')
if test -e $ENCRYPTION_PROVIDER_CONFIG; then grep -o 'providers\"\:\[.*\]' $ENCRYPTION_PROVIDER_CONFIG | grep -o "[A-Za-z]*" | head -2 | tail -1 | sed 's/{caret}/provider=/'; fi
期待される結果: 'provider' に 'aescbc,kms,secretbox' の有効な要素が含まれています
戻り値:
provider=aescbc
Remediation: 修正方法:
K3s は、秘密情報を静止状態で暗号化するために暗号化プロバイダーを使用するように構成できます。K3s は aescbc プロバイダーを利用します。制御プレーンノードの K3s 設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のパラメータを設定します。 secrets-encryption: true その後、秘密の暗号化は k3s secrets-encrypt コマンドラインツールで管理できます。必要に応じて、生成された暗号化設定は /var/lib/rancher/k3s/server/cred/encryption-config.json にあります。
1.2.29 API サーバーが強力な暗号化暗号のみを使用することを確認してください(自動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'tls-cipher-suites'
期待される結果: '--tls-cipher-suites' に 'TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384' の有効な要素が含まれています。
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
Remediation: 修正方法:
デフォルトでは、K3s kube-apiserver はこのテストに準拠しています。これらの値の変更は後退を引き起こす可能性があるため、運用デプロイメントに適用する前にすべての apiserver クライアントが新しい TLS 設定をサポートしていることを確認してください。カスタム TLS 構成が必要な場合は、要件に合わせたこのルールのカスタムバージョンを作成することも検討してください。このチェックが失敗した場合は、tls-cipher-suites の周りのカスタム設定を削除するか、/etc/rancher/k3s/config.yaml ファイルをデフォルトに一致させるために以下を追加してください。
kube-apiserver-arg: - "tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"
1.3 コントローラーマネージャ
1.3.1 --terminated-pod-gc-threshold 引数が適切に設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'terminated-pod-gc-threshold'
期待される結果: '--terminated-pod-gc-threshold' が存在します
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true"
修正方法:
コントロールプレーンノードの K3s 設定ファイル /etc/rancher/k3s/config.yaml を編集し、--terminated-pod-gc-threshold を適切な閾値に設定してください。
kube-controller-manager-arg: - "terminated-pod-gc-threshold=10"
1.3.2 --profiling 引数がfalseに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'profiling'
期待される結果: '--profiling’は’false’と等しい
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true"
修正方法:
デフォルトでは、K3sは --profiling 引数をfalseに設定します。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のような行を削除してください。
kube-controller-manager-arg: - "profiling=true"
1.3.3 --use-service-account-credentials 引数がtrueに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'use-service-account-credentials'
期待される結果: '--use-service-account-credentials' は 'false' と等しくありません
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true"
修正方法:
デフォルトでは、K3sは—use-service-account-credentials引数をtrueに設定します。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のような行を削除してください。
kube-controller-manager-arg: - "use-service-account-credentials=false"
1.3.4 --service-account-private-key-file 引数が適切に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'service-account-private-key-file'
期待される結果: '--service-account-private-key-file' が存在します
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true"
修正方法:
デフォルトでは、K3sはサービスアカウントの秘密鍵ファイルを自動的に提供します。それは生成され、/var/lib/rancher/k3s/server/tls/service.current.key にあります。このチェックが失敗した場合は、K3sの設定ファイル/etc/rancher/k3s/config.yamlを編集し、以下のような行を削除してください。
kube-controller-manager-arg: - "service-account-private-key-file=<path>"
1.3.5 --root-ca-file 引数が適切に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'root-ca-file'
期待される結果: '--root-ca-file' が存在します
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true"
修正方法:
デフォルトでは、K3sはルートCAファイルを自動的に提供します。それは生成され、/var/lib/rancher/k3s/server/tls/server-ca.crt にあります。何らかの理由で独自のCA証明書を提供する必要がある場合は、k3sのcertificateコマンドラインツールの使用を検討してください。このチェックが失敗した場合は、K3sの設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-controller-manager-arg: - "root-ca-file=<path>"
1.3.6 RotateKubeletServerCertificate引数がtrueに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-controller-manager' | tail -n1
期待される結果: '--feature-gates' が存在するか、または '--feature-gates' が存在しない
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true"
是正措置:
デフォルトでは、K3sはRotateKubeletServerCertificate機能ゲートを設定しません。この機能ゲートを有効にしている場合は、削除する必要があります。このチェックが失敗した場合は、K3sの設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-controller-manager-arg: - "feature-gate=RotateKubeletServerCertificate"
1.3.7 --bind-address引数が127.0.0.1に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-controller-manager' | tail -n1
期待される結果: '--bind-address' は '127.0.0.1' と等しいか、または '--bind-address' が存在しない
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true"
是正措置:
デフォルトでは、K3sは—bind-address引数を127.0.0.1に設定します。このチェックが失敗した場合は、K3sの設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-controller-manager-arg: - "bind-address=<IP>"
1.4 スケジューラ
1.4.1 --profiling引数がfalseに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-scheduler' | tail -n1 | grep 'profiling'
期待される結果: '--profiling' は 'false' と等しい
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259"
是正措置:
デフォルトでは、K3sは—profiling引数をfalseに設定します。このチェックが失敗した場合は、K3sの設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-scheduler-arg: - "profiling=true"
1.4.2 --bind-address引数が127.0.0.1に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s | grep 'Running kube-scheduler' | tail -n1 | grep 'bind-address'
期待される結果: '--bind-address' は '127.0.0.1' と等しいか、または '--bind-address' が存在しない
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259"
是正措置:
デフォルトでは、K3sは—bind-address引数を127.0.0.1に設定します。このチェックが失敗した場合は、K3sの設定ファイル /etc/rancher/k3s/config.yaml を編集し、以下のような行を削除してください。
kube-scheduler-arg: - "bind-address=<IP>"
2 Etcdノードの設定
2.1 --cert-fileおよび—key-file引数が適切に設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
期待される結果: '.client-transport-security.cert-file' は '/var/lib/rancher/k3s/server/tls/etcd/server-client.crt' と等しく、かつ '.client-transport-security.key-file' は '/var/lib/rancher/k3s/server/tls/etcd/server-client.key' と等しい
戻り値:
advertise-client-urls: https://10.10.10.100:2379
client-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt
data-dir: /var/lib/rancher/k3s/server/db/etcd
election-timeout: 5000
experimental-initial-corrupt-check: true
experimental-watch-progress-notify-interval: 5000000000
heartbeat-interval: 500
initial-advertise-peer-urls: https://10.10.10.100:2380
initial-cluster: server-0-219cc4bf=https://10.10.10.100:2380
initial-cluster-state: new
listen-client-http-urls: https://127.0.0.1:2382
listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379
listen-metrics-urls: http://127.0.0.1:2381
listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380
log-outputs:
- stderr
logger: zap
name: server-0-219cc4bf
peer-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt
snapshot-count: 10000
是正措置:
SQLiteや外部DBで実行している場合、etcdのチェックは適用されません。埋め込みetcdで実行している場合、K3sはetcd用の証明書と鍵ファイルを生成します。/var/lib/rancher/k3s/server/tls/etcd/にあります。このチェックが失敗した場合、環境設定ファイル/var/lib/rancher/k3s/server/db/etcd/configがカスタムの証明書と鍵ファイルを使用するように変更されていないことを確認してください。
2.2 --client-cert-auth引数がtrueに設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
期待される結果: '.client-transport-security.client-cert-auth’が’true’と等しい
戻り値:
advertise-client-urls: https://10.10.10.100:2379
client-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt
data-dir: /var/lib/rancher/k3s/server/db/etcd
election-timeout: 5000
experimental-initial-corrupt-check: true
experimental-watch-progress-notify-interval: 5000000000
heartbeat-interval: 500
initial-advertise-peer-urls: https://10.10.10.100:2380
initial-cluster: server-0-219cc4bf=https://10.10.10.100:2380
initial-cluster-state: new
listen-client-http-urls: https://127.0.0.1:2382
listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379
listen-metrics-urls: http://127.0.0.1:2381
listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380
log-outputs:
- stderr
logger: zap
name: server-0-219cc4bf
peer-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt
snapshot-count: 10000
是正措置:
SQLiteや外部DBで実行している場合、etcdのチェックは適用されません。埋め込みetcdで実行している場合、K3sは—client-cert-authパラメータをtrueに設定します。このチェックが失敗した場合、環境設定ファイル/var/lib/rancher/k3s/server/db/etcd/configがクライアント証明書認証を無効にするように変更されていないことを確認してください。
2.3 --auto-tls引数がtrueに設定されていないことを確認してください(手動)
*結果:*PASS
Audit(監査):
期待される結果: '.client-transport-security.auto-tls' が存在するか、または '.client-transport-security.auto-tls' が存在しない
戻り値:
advertise-client-urls: https://10.10.10.100:2379
client-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt
data-dir: /var/lib/rancher/k3s/server/db/etcd
election-timeout: 5000
experimental-initial-corrupt-check: true
experimental-watch-progress-notify-interval: 5000000000
heartbeat-interval: 500
initial-advertise-peer-urls: https://10.10.10.100:2380
initial-cluster: server-0-219cc4bf=https://10.10.10.100:2380
initial-cluster-state: new
listen-client-http-urls: https://127.0.0.1:2382
listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379
listen-metrics-urls: http://127.0.0.1:2381
listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380
log-outputs:
- stderr
logger: zap
name: server-0-219cc4bf
peer-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt
snapshot-count: 10000
補修:
SQLiteや外部DBで実行している場合、etcdのチェックは適用されません。埋め込みetcdで実行している場合、K3sは—auto-tlsパラメータを設定しません。このチェックが失敗した場合、マスターノードのetcdポッド仕様ファイル/var/lib/rancher/k3s/server/db/etcd/configを編集し、--auto-tlsパラメータを削除するか、falseに設定してください。client-transport-security: auto-tls: false
2.4 --peer-cert-fileおよび—peer-key-file引数が適切に設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
期待される結果: '.peer-transport-security.cert-file' は '/var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt' と等しく、かつ '.peer-transport-security.key-file' は '/var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key' と等しい
戻り値:
advertise-client-urls: https://10.10.10.100:2379
client-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt
data-dir: /var/lib/rancher/k3s/server/db/etcd
election-timeout: 5000
experimental-initial-corrupt-check: true
experimental-watch-progress-notify-interval: 5000000000
heartbeat-interval: 500
initial-advertise-peer-urls: https://10.10.10.100:2380
initial-cluster: server-0-219cc4bf=https://10.10.10.100:2380
initial-cluster-state: new
listen-client-http-urls: https://127.0.0.1:2382
listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379
listen-metrics-urls: http://127.0.0.1:2381
listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380
log-outputs:
- stderr
logger: zap
name: server-0-219cc4bf
peer-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt
snapshot-count: 10000
是正措置:
SQLiteや外部DBで実行している場合、etcdのチェックは適用されません。埋め込みetcdで実行している場合、K3sはetcd用のピア証明書と鍵ファイルを生成します。/var/lib/rancher/k3s/server/tls/etcd/にあります。このチェックが失敗した場合、設定ファイル/var/lib/rancher/k3s/server/db/etcd/configがカスタムのピア証明書と鍵ファイルを使用するように変更されていないことを確認してください。
2.5 --peer-client-cert-auth引数がtrueに設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
期待される結果: '.peer-transport-security.client-cert-auth' は 'true' と等しい
戻り値:
advertise-client-urls: https://10.10.10.100:2379
client-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt
data-dir: /var/lib/rancher/k3s/server/db/etcd
election-timeout: 5000
experimental-initial-corrupt-check: true
experimental-watch-progress-notify-interval: 5000000000
heartbeat-interval: 500
initial-advertise-peer-urls: https://10.10.10.100:2380
initial-cluster: server-0-219cc4bf=https://10.10.10.100:2380
initial-cluster-state: new
listen-client-http-urls: https://127.0.0.1:2382
listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379
listen-metrics-urls: http://127.0.0.1:2381
listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380
log-outputs:
- stderr
logger: zap
name: server-0-219cc4bf
peer-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt
snapshot-count: 10000
是正措置:
SQLiteや外部DBで実行している場合、etcdのチェックは適用されません。埋め込みetcdで実行している場合、K3sは—peer-cert-authパラメータをtrueに設定します。このチェックが失敗した場合、設定ファイル/var/lib/rancher/k3s/server/db/etcd/configがピアクライアント証明書認証を無効にするように変更されていないことを確認してください。
2.6 --peer-auto-tls引数がtrueに設定されていないことを確認してください(手動)
*結果:*PASS
Audit(監査):
期待される結果: '.peer-transport-security.auto-tls' が存在するか、または '.peer-transport-security.auto-tls' が存在しない
戻り値:
advertise-client-urls: https://10.10.10.100:2379
client-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt
data-dir: /var/lib/rancher/k3s/server/db/etcd
election-timeout: 5000
experimental-initial-corrupt-check: true
experimental-watch-progress-notify-interval: 5000000000
heartbeat-interval: 500
initial-advertise-peer-urls: https://10.10.10.100:2380
initial-cluster: server-0-219cc4bf=https://10.10.10.100:2380
initial-cluster-state: new
listen-client-http-urls: https://127.0.0.1:2382
listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379
listen-metrics-urls: http://127.0.0.1:2381
listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380
log-outputs:
- stderr
logger: zap
name: server-0-219cc4bf
peer-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt
snapshot-count: 10000
是正措置:
SQLiteや外部DBで実行している場合、etcdのチェックは適用されません。埋め込みetcdで実行する場合、K3sは—peer-auto-tlsパラメータを設定しません。このチェックに失敗した場合、マスターノードのetcdポッド仕様ファイル /var/lib/rancher/k3s/server/db/etcd/config を編集し、--peer-auto-tlsパラメータを削除するか、falseに設定してください。 peer-transport-security: auto-tls: false
2.7 etcdに対して一意の認証局が使用されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
期待される結果: '.peer-transport-security.trusted-ca-file' は '/var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt' と等しい
戻り値:
advertise-client-urls: https://10.10.10.100:2379
client-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt
data-dir: /var/lib/rancher/k3s/server/db/etcd
election-timeout: 5000
experimental-initial-corrupt-check: true
experimental-watch-progress-notify-interval: 5000000000
heartbeat-interval: 500
initial-advertise-peer-urls: https://10.10.10.100:2380
initial-cluster: server-0-219cc4bf=https://10.10.10.100:2380
initial-cluster-state: new
listen-client-http-urls: https://127.0.0.1:2382
listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379
listen-metrics-urls: http://127.0.0.1:2381
listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380
log-outputs:
- stderr
logger: zap
name: server-0-219cc4bf
peer-transport-security:
cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt
client-cert-auth: true
key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key
trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt
snapshot-count: 10000
是正措置:
SQLiteや外部DBで実行している場合、etcdのチェックは適用されません。埋め込みetcdで実行する場合、K3sはetcd用の一意の認証局を生成します。これは /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt にあります。このチェックに失敗した場合、環境設定ファイル /var/lib/rancher/k3s/server/db/etcd/config が共有の認証局を使用するように変更されていないことを確認してください。
4.1 ワーカーノードの設定ファイル
4.1.1 kubeletサービスファイルの権限が600またはそれ以上の制限に設定されていることを確認してください(自動化)
*結果:*該当なし
*理由:*kubeletはk3sプロセスに埋め込まれています。kubeletサービスファイルは存在せず、すべての設定は実行時に引数として渡されます。
4.1.2 kubeletサービスファイルの所有権がroot:rootに設定されていることを確認してください(自動化)
*結果:*該当なし
*理由:*kubeletはk3sプロセスに埋め込まれています。kubeletサービスファイルは存在せず、すべての設定は実行時に引数として渡されます。すべての設定はコンテナの実行時に引数として渡されます。
4.1.3 プロキシkubeconfigファイルが存在する場合、権限が600またはそれ以上の制限に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test -e /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; fi'
期待される結果: 権限は600であり、期待されるのは600またはそれ以上の制限です
戻り値:
permissions=600
修正方法:
各ワーカーノードで(システム上のファイルの場所に基づいて)以下のコマンドを実行してください。例えば、chmod 600 /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig
4.1.4 プロキシkubeconfigファイルが存在する場合、所有権が root:root に設定されていることを確認してください (自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test -e /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; fi'
期待される結果: 'root:root' が存在します
戻り値:
root:root
修正方法:
各ワーカーノードで(システム上のファイルの場所に基づいて)以下のコマンドを実行してください。例えば、chown root:root /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig
4.1.5 --kubeconfig kubelet.conf ファイルの権限が 600 以上に設定されていることを確認してください (自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test -e /var/lib/rancher/k3s/agent/kubelet.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/agent/kubelet.kubeconfig; fi'
期待される結果: 権限は600であり、期待されるのは600またはそれ以上の制限です
戻り値:
permissions=600
補修:
各ワーカーノードで(システム上のファイルの場所に基づいて)以下のコマンドを実行してください。例えば、chmod 600 /var/lib/rancher/k3s/agent/kubelet.kubeconfig
4.1.6 --kubeconfig kubelet.conf ファイルの所有権が root:root に設定されていることを確認してください (自動化)
*結果:*PASS
Audit(監査):
stat -c %U:%G /var/lib/rancher/k3s/agent/kubelet.kubeconfig
期待される結果: 'root:root' が存在します
戻り値:
root:root
修正方法:
各ワーカーノードで(システム上のファイルの場所に基づいて)以下のコマンドを実行してください。例えば、chown root:root /var/lib/rancher/k3s/agent/kubelet.kubeconfig
4.1.7 証明書機関ファイルの権限が 600 以上に設定されていることを確認してください (自動化)
*結果:*PASS
Audit(監査):
stat -c permissions=%a /var/lib/rancher/k3s/agent/client-ca.crt
期待される結果: 権限は600であり、期待されるのは600またはそれ以上の制限です
戻り値:
permissions=600
修正方法:
次のコマンドを実行して --client-ca-file chmod 600 /var/lib/rancher/k3s/agent/client-ca.crt のファイル権限を変更してください
4.1.8 クライアント証明書機関ファイルの所有権が root:root に設定されていることを確認してください (自動化)
*結果:*PASS
Audit(監査):
stat -c %U:%G /var/lib/rancher/k3s/agent/client-ca.crt
期待される結果: 'root:root' は 'root:root' と等しいです
戻り値:
root:root
修正方法:
次のコマンドを実行して --client-ca-file の所有権を変更してください。 chown root:root /var/lib/rancher/k3s/agent/client-ca.crt
4.1.9 kubelet --config 設定ファイルの権限が 600 以上に設定されていることを確認してください (自動化)
*結果:*該当なし
*理由:*kubeletはk3sプロセスに埋め込まれています。kubelet 設定ファイルは存在せず、すべての設定は実行時に引数として渡されます。
4.1.10 kubelet --config 設定ファイルの所有権が root:root に設定されていることを確認してください (自動化)
*結果:*該当なし
*理由:*kubeletはk3sプロセスに埋め込まれています。kubelet 設定ファイルは存在せず、すべての設定は実行時に引数として渡されます。 ## 4.2 Kubelet
4.2.1 --anonymous-auth 引数が false に設定されていることを確認してください (自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test $(journalctl -m -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -m -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "anonymous-auth" | grep -v grep; else echo "--anonymous-auth=false"; fi'
期待される結果: '--anonymous-auth' は 'false' と等しいです
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正方法:
デフォルトでは、K3s は --anonymous-auth を false に設定します。これを別の値に設定した場合は、false に戻す必要があります。K3s 設定ファイル /etc/rancher/k3s/config.yaml を使用している場合は、以下のような行を削除してください。
kubelet-arg: - "anonymous-auth=true"
コマンドラインを使用している場合は、K3s サービスファイルを編集し、以下の引数を削除してください。 --kubelet-arg="anonymous-auth=true" システムに基づいて、k3s サービスを再起動してください。例えば、systemctl daemon-reload systemctl restart k3s.service
4.2.2 --authorization-mode引数がAlwaysAllowに設定されていないことを確認してください(自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test $(journalctl -m -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -m -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "authorization-mode"; else echo "--authorization-mode=Webhook"; fi'
期待される結果: '--authorization-mode’は’AlwaysAllow’を持っていません
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正方法:
デフォルトでは、K3sは—authorization-modeをAlwaysAllowに設定しません。K3s 設定ファイル /etc/rancher/k3s/config.yaml を使用している場合は、以下のような行を削除してください。
kubelet-arg: - "authorization-mode=AlwaysAllow"
コマンドラインを使用する場合は、K3sサービスファイルを編集し、以下の引数を削除してください。--kubelet-arg="authorization-mode=AlwaysAllow" システムに基づいて、k3sサービスを再起動してください。例えば、systemctl daemon-reload systemctl restart k3s.service
4.2.3 --client-ca-file引数が適切に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
/bin/sh -c 'if test $(journalctl -m -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -m -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "client-ca-file"; else echo "--client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt"; fi'
期待される結果: '--client-ca-file’が存在します
戻り値:
Jul 29 19:36:14 server-0 k3s[2235]: time="2025-07-29T19:36:14Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key"
修正方法:
デフォルトでは、K3sはKubelet用のクライアントCA証明書を自動的に提供します。それは生成され、/var/lib/rancher/k3s/agent/client-ca.crtにあります。
4.2.4 --read-only-port引数が0に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1
期待される結果: '--read-only-port’は'0’と等しいか、または'--read-only-port’は存在しません
戻り値:
Jul 29 19:36:16 server-0 k3s[2235]: time="2025-07-29T19:36:16Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key"
修正方法:
デフォルトでは、K3sは—read-only-portを0に設定します。これを別の値に設定した場合は、0に戻す必要があります。K3s 設定ファイル /etc/rancher/k3s/config.yaml を使用している場合は、以下のような行を削除してください。
kubelet-arg: - "read-only-port=XXXX"
コマンドラインを使用する場合は、K3sサービスファイルを編集し、以下の引数を削除してください。--kubelet-arg="read-only-port=XXXX" システムに基づいて、k3sサービスを再起動してください。例えば、systemctl daemon-reload systemctl restart k3s.service
4.2.5 --streaming-connection-idle-timeout引数が0に設定されていないことを確認してください(手動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1
期待される結果: '--streaming-connection-idle-timeout’は'0’と等しくないか、または'--streaming-connection-idle-timeout’は存在しません
戻り値:
Jul 29 19:36:16 server-0 k3s[2235]: time="2025-07-29T19:36:16Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key"
修正方法:
K3s 設定ファイル /etc/rancher/k3s/config.yaml を使用する場合は、以下のパラメータを適切な値に設定してください。
kubelet-arg: - "streaming-connection-idle-timeout=5m"
コマンドラインを使用する場合は、--kubelet-arg="streaming-connection-idle-timeout=5m"でK3sを実行してください。システムに基づいて、k3sサービスを再起動してください。例えば、systemctl restart k3s.service
4.2.6 --make-iptables-util-chains引数がtrueに設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1
期待される結果: '--make-iptables-util-chains' は 'true' と等しいか、'--make-iptables-util-chains' が存在しないこと。
戻り値:
Jul 29 19:36:16 server-0 k3s[2235]: time="2025-07-29T19:36:16Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key"
修正:
K3sの設定ファイル /etc/rancher/k3s/config.yaml を使用する場合、次のパラメータを設定してください。
kubelet-arg: - "make-iptables-util-chains=true"
コマンドラインを使用する場合、K3sを --kubelet-arg="make-iptables-util-chains=true" で実行してください。システムに基づいて、k3sサービスを再起動してください。例えば、systemctl restart k3s.service
4.2.7 --hostname-override 引数が設定されていないことを確認してください(自動化)
*結果:*該当なし
*理由:*デフォルトでは、K3sは --hostname-override 引数を設定します。CISガイドラインに従って、これはホスト名がノード名と一致することを求めるクラウドプロバイダーに対応するためです。
4.2.8 eventRecordQPS 引数が適切なイベントキャプチャを保証するレベルに設定されていることを確認してください(手動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1
期待される結果: '--event-qps' は 0 以上であるか、'--event-qps' が存在しないこと。
戻り値:
Jul 29 19:36:16 server-0 k3s[2235]: time="2025-07-29T19:36:16Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key"
修正:
デフォルトでは、K3sは event-qps を 0 に設定します。これを変更したい場合、K3sの設定ファイル /etc/rancher/k3s/config.yaml で次のパラメータを適切な値に設定してください。
kubelet-arg: - "event-qps=<value>"
コマンドラインを使用する場合、K3sを --kubelet-arg="event-qps=<value>" で実行してください。システムに基づいて、k3sサービスを再起動してください。例えば、systemctl restart k3s.service
4.2.9 --tls-cert-file と --tls-private-key-file 引数が適切に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1
期待される結果: '--tls-cert-file' が存在し、かつ '--tls-private-key-file' が存在すること。
戻り値:
Jul 29 19:36:16 server-0 k3s[2235]: time="2025-07-29T19:36:16Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key"
修正:
デフォルトでは、K3sはKubelet用のTLS証明書と秘密鍵を自動的に提供します。それらは生成され、/var/lib/rancher/k3s/agent/serving-kubelet.crt と /var/lib/rancher/k3s/agent/serving-kubelet.key に配置されます。何らかの理由で独自の証明書と鍵を提供する必要がある場合は、K3sの設定ファイル /etc/rancher/k3s/config.yaml に以下のパラメータを設定できます。
kubelet-arg: - "tls-cert-file=<path/to/tls-cert-file>" - "tls-private-key-file=<path/to/tls-private-key-file>"
4.2.10 --rotate-certificates 引数が false に設定されていないことを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1
期待される結果: '--rotate-certificates' が存在するか、'--rotate-certificates' が存在しないこと。
戻り値:
Jul 29 19:36:16 server-0 k3s[2235]: time="2025-07-29T19:36:16Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key"
修正:
デフォルトでは、K3sは --rotate-certificates 引数を設定しません。このフラグを false の値で設定した場合は、それを true に設定するか、フラグを完全に削除する必要があります。K3sの設定ファイル /etc/rancher/k3s/config.yaml を使用する場合、rotate-certificates パラメータを削除してください。コマンドラインを使用している場合は、K3s フラグ --kubelet-arg="rotate-certificates" を削除してください。システムに基づいて、k3sサービスを再起動してください。例えば、systemctl restart k3s.service
4.2.11 RotateKubeletServerCertificate 引数が true に設定されていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1
期待される結果:'RotateKubeletServerCertificate' が存在するか、または 'RotateKubeletServerCertificate' が存在しない
戻り値:
Jul 29 19:36:16 server-0 k3s[2235]: time="2025-07-29T19:36:16Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key"
修正:
デフォルトでは、K3sは RotateKubeletServerCertificate 機能ゲートを設定しません。この機能ゲートを有効にしている場合は、削除する必要があります。K3s 設定ファイル /etc/rancher/k3s/config.yaml を使用している場合は、feature-gate=RotateKubeletServerCertificate パラメータを削除してください。コマンドラインを使用している場合は、K3s フラグ --kubelet-arg="feature-gate=RotateKubeletServerCertificate" を削除してください。システムに基づいて、k3sサービスを再起動してください。例えば、systemctl restart k3s.service
4.2.12 Kubelet が強力な暗号のみを使用していることを確認してください(手動)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1
期待される結果: '--tls-cipher-suites' に 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256' の有効な要素が含まれている
戻り値:
Jul 29 19:36:16 server-0 k3s[2235]: time="2025-07-29T19:36:16Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key"
修正:
K3s 設定ファイル /etc/rancher/k3s/config.yaml を使用している場合は、ファイルを編集して TLSCipherSuites を設定してください。
kubelet-arg: - "tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"
または、これらの値のサブセットに設定してください。コマンドラインを使用している場合は、K3s フラグ --kubelet-arg="tls-cipher-suites=<same values as above>" を追加し、システムに基づいて k3s サービスを再起動してください。例えば、systemctl restart k3s.service
4.3 kube-proxy
4.3.1 kube-proxy メトリクスサービスが localhost にバインドされていることを確認してください(自動化)
*結果:*PASS
Audit(監査):
journalctl -m -u k3s -u k3s-agent | grep 'Running kube-proxy' | tail -n1
期待される結果: '--metrics-bind-address' が存在するか、または '--metrics-bind-address' が存在しない
戻り値:
Jul 29 19:36:16 server-0 k3s[2235]: time="2025-07-29T19:36:16Z" level=info msg="Running kube-proxy --cluster-cidr=10.42.0.0/16 --conntrack-max-per-core=0 --conntrack-tcp-timeout-close-wait=0s --conntrack-tcp-timeout-established=0s --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubeproxy.kubeconfig --proxy-mode=iptables"
修正:
メトリクスサービスを非ローカルホストアドレスにバインドする値を変更または削除してください。デフォルト値は 127.0.0.1:10249 です。
5.1 RBAC とサービスアカウント
5.1.1 クラスター管理者ロールが必要な場合にのみ使用されることを確認してください(自動化)
*結果:*PASS
Audit(監査):
kubectl get clusterrolebindings -o=custom-columns=ROLE:.roleRef.name,NAME:.metadata.name,SUBJECT:.subjects[*].name --no-headers | grep cluster-admin
期待される結果: 'cluster-admin' は 'cluster-admin, helm-kube-system-traefik, helm-kube-system-traefik-crd' の有効な要素を含みます。
戻り値:
cluster-admin cluster-admin system:masters cluster-admin helm-kube-system-traefik helm-traefik cluster-admin helm-kube-system-traefik-crd helm-traefik-crd
修正:
すべての clusterrolebinding を cluster-admin ロールに特定します。それらが使用されているか、またはこのロールが必要か、または権限の少ないロールを使用できるかを確認します。K3s は、通常の操作のために kube-system 名前空間に traefik をインストールするために必要な helm-kube-system-traefik および helm-kube-system-traefik-crd clusterrolebinding に例外を与えます。可能な場合は、最初にユーザーを権限の低いロールにバインドし、その後 cluster-admin ロールへの clusterrolebinding を削除します:
kubectl delete clusterrolebinding [name]
5.1.2 秘密へのアクセスを最小限に抑える(自動化)
*結果:*WARN
*修正:*可能な場合は、クラスター内の Secret オブジェクトへの get、list、および watch アクセスを削除します。
5.1.3 ロールおよびクラスター ロールでのワイルドカードの使用を最小限に抑える(自動化)
*結果:*PASS
Audit(監査):
# Check Roles
kubectl get roles --all-namespaces -o custom-columns=ROLE_NAMESPACE:.metadata.namespace,ROLE_NAME:.metadata.name --no-headers | while read -r role_namespace role_name
do
role_rules=$(kubectl get role -n "$\{role_namespace}" "$\{role_name}" -o=json | jq -c '.rules')
if echo "$\{role_rules}" | grep -q "\[\"\*\"\]"; then
printf "**role_name: %-50s role_namespace: %-25s role_rules: %s is_compliant: false\n" "$\{role_name}" "$\{role_namespace}" "$\{role_rules}"
else
printf "**role_name: %-50s role_namespace: %-25s is_compliant: true\n" "$\{role_name}" "$\{role_namespace}" fi;
done
cr_whitelist="cluster-admin k3s-cloud-controller-manager local-path-provisioner-role"
cr_whitelist="$cr_whitelist system:kube-controller-manager system:kubelet-api-admin system:controller:namespace-controller"
cr_whitelist="$cr_whitelist system:controller:disruption-controller system:controller:generic-garbage-collector"
cr_whitelist="$cr_whitelist system:controller:horizontal-pod-autoscaler system:controller:resourcequota-controller"
# Check ClusterRoles
kubectl get clusterroles -o custom-columns=CLUSTERROLE_NAME:.metadata.name --no-headers | while read -r clusterrole_name
do
clusterrole_rules=$(kubectl get clusterrole "$\{clusterrole_name}" -o=json | jq -c '.rules')
if echo "$\{cr_whitelist}" | grep -q "$\{clusterrole_name}"; then
printf "**clusterrole_name: %-50s is_whitelist: true is_compliant: true\n" "$\{clusterrole_name}"
elif echo "$\{clusterrole_rules}" | grep -q "\[\"\*\"\]"; then
echo "**clusterrole_name: $\{clusterrole_name} clusterrole_rules: $\{clusterrole_rules} is_compliant: false"
else
printf "**clusterrole_name: %-50s is_whitelist: false is_compliant: true\n" "$\{clusterrole_name}"
fi;
done
期待される結果: 'is_compliant' は 'true' と等しい
戻り値:
**role_name: system:controller:bootstrap-signer role_namespace: kube-public is_compliant: true
**role_name: extension-apiserver-authentication-reader role_namespace: kube-system is_compliant: true
**role_name: system::leader-locking-kube-controller-manager role_namespace: kube-system is_compliant: true
**role_name: system::leader-locking-kube-scheduler role_namespace: kube-system is_compliant: true
**role_name: system:controller:bootstrap-signer role_namespace: kube-system is_compliant: true
**role_name: system:controller:cloud-provider role_namespace: kube-system is_compliant: true
**role_name: system:controller:token-cleaner role_namespace: kube-system is_compliant: true
**clusterrole_name: admin is_whitelist: true is_compliant: true
**clusterrole_name: cluster-admin is_whitelist: true is_compliant: true
**clusterrole_name: clustercidrs-node is_whitelist: false is_compliant: true
**clusterrole_name: edit is_whitelist: false is_compliant: true
**clusterrole_name: k3s-cloud-controller-manager is_whitelist: true is_compliant: true
**clusterrole_name: local-path-provisioner-role is_whitelist: true is_compliant: true
**clusterrole_name: system:aggregate-to-admin is_whitelist: false is_compliant: true
**clusterrole_name: system:aggregate-to-edit is_whitelist: false is_compliant: true
**clusterrole_name: system:aggregate-to-view is_whitelist: false is_compliant: true
**clusterrole_name: system:aggregated-metrics-reader is_whitelist: false is_compliant: true
**clusterrole_name: system:auth-delegator is_whitelist: false is_compliant: true
**clusterrole_name: system:basic-user is_whitelist: false is_compliant: true
**clusterrole_name: system:certificates.k8s.io:certificatesigningrequests:nodeclient is_whitelist: false is_compliant: true
**clusterrole_name: system:certificates.k8s.io:certificatesigningrequests:selfnodeclient is_whitelist: false is_compliant: true
**clusterrole_name: system:certificates.k8s.io:kube-apiserver-client-approver is_whitelist: false is_compliant: true
**clusterrole_name: system:certificates.k8s.io:kube-apiserver-client-kubelet-approver is_whitelist: false is_compliant: true
**clusterrole_name: system:certificates.k8s.io:kubelet-serving-approver is_whitelist: false is_compliant: true
**clusterrole_name: system:certificates.k8s.io:legacy-unknown-approver is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:attachdetach-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:certificate-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:clusterrole-aggregation-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:cronjob-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:daemon-set-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:deployment-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:disruption-controller is_whitelist: true is_compliant: true
**clusterrole_name: system:controller:endpoint-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:endpointslice-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:endpointslicemirroring-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:ephemeral-volume-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:expand-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:generic-garbage-collector is_whitelist: true is_compliant: true
**clusterrole_name: system:controller:horizontal-pod-autoscaler is_whitelist: true is_compliant: true
**clusterrole_name: system:controller:job-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:legacy-service-account-token-cleaner is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:namespace-controller is_whitelist: true is_compliant: true
**clusterrole_name: system:controller:node-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:persistent-volume-binder is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:pod-garbage-collector is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:pv-protection-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:pvc-protection-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:replicaset-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:replication-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:resourcequota-controller is_whitelist: true is_compliant: true
**clusterrole_name: system:controller:root-ca-cert-publisher is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:route-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:service-account-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:service-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:statefulset-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:ttl-after-finished-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:controller:ttl-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:coredns is_whitelist: false is_compliant: true
**clusterrole_name: system:discovery is_whitelist: false is_compliant: true
**clusterrole_name: system:heapster is_whitelist: false is_compliant: true
**clusterrole_name: system:k3s-controller is_whitelist: false is_compliant: true
**clusterrole_name: system:kube-aggregator is_whitelist: false is_compliant: true
**clusterrole_name: system:kube-controller-manager is_whitelist: true is_compliant: true
**clusterrole_name: system:kube-dns is_whitelist: false is_compliant: true
**clusterrole_name: system:kube-scheduler is_whitelist: false is_compliant: true
**clusterrole_name: system:kubelet-api-admin is_whitelist: true is_compliant: true
**clusterrole_name: system:metrics-server is_whitelist: false is_compliant: true
**clusterrole_name: system:monitoring is_whitelist: false is_compliant: true
**clusterrole_name: system:node is_whitelist: false is_compliant: true
**clusterrole_name: system:node-bootstrapper is_whitelist: false is_compliant: true
**clusterrole_name: system:node-problem-detector is_whitelist: false is_compliant: true
**clusterrole_name: system:node-proxier is_whitelist: false is_compliant: true
**clusterrole_name: system:persistent-volume-provisioner is_whitelist: false is_compliant: true
**clusterrole_name: system:public-info-viewer is_whitelist: false is_compliant: true
**clusterrole_name: system:service-account-issuer-discovery is_whitelist: false is_compliant: true
**clusterrole_name: system:volume-scheduler is_whitelist: false is_compliant: true
**clusterrole_name: traefik-kube-system is_whitelist: false is_compliant: true
**clusterrole_name: view is_whitelist: false is_compliant: true
是正措置:
可能な場合は、clusterroles および roles でのワイルドカードの使用を特定のオブジェクトまたはアクションに置き換えます。K3s は、通常の操作に必要な次のクラスター ロールに例外を与えます: - k3s-cloud-controller-manager、local-path-provisioner-role、cluster-admin - system:kube-controller-manager、system:kubelet-api-admin、system:controller:namespace-controller、 - system:controller:disruption-controller、system:controller:generic-garbage-collector、 - system:controller:horizontal-pod-autoscaler、system:controller:resourcequota-controller
5.1.5 デフォルトのサービスアカウントが積極的に使用されていないことを確認します。(自動化)
*結果:*失敗
Audit(監査):
kubectl get serviceaccounts --all-namespaces --field-selector metadata.name=default \
-o custom-columns=N:.metadata.namespace,SA:.metadata.name,ASA:.automountServiceAccountToken --no-headers
\ | while read -r namespace serviceaccount automountserviceaccounttoken
do
if [ "$\{automountserviceaccounttoken}" = <none> ]; then
automountserviceaccounttoken="notset"
fi
if [ "$\{namespace}" != "kube-system" ] && [ "$\{automountserviceaccounttoken}" != "false" ]; then
printf "**namespace: %-20s service_account: %-10s automountServiceAccountToken: %-6s is_compliant: false\n" "$\{namespace}" "$\{serviceaccount}" "$\{automountserviceaccounttoken}"
else
printf "**namespace: %-20s service_account: %-10s automountServiceAccountToken: %-6s is_compliant: true\n" "$\{namespace}" "$\{serviceaccount}" "$\{automountserviceaccounttoken}"
fi
done
期待される結果: 'is_compliant' は 'true' と等しい
戻り値:
**namespace: default service_account: default automountServiceAccountToken: notset is_compliant: false
**namespace: kube-node-lease service_account: default automountServiceAccountToken: notset is_compliant: false
**namespace: kube-public service_account: default automountServiceAccountToken: notset is_compliant: false
**namespace: kube-system service_account: default automountServiceAccountToken: notset is_compliant: true
是正措置:
Kubernetes ワークロードが Kubernetes API サーバーへの特定のアクセスを必要とする場合は、明示的なサービスアカウントを作成してください。K3s は kube-system 名前空間内のデフォルトのサービスアカウントに例外を与えます。各デフォルトのサービスアカウントの設定を変更して、この値 automountServiceAccountToken: false を含めます。または、kubectl を使用します:
kubectl patch serviceaccount --namespace <NAMESPACE> default --patch '{"automountServiceAccountToken": false}'
5.1.6 サービスアカウントトークンが必要な場所にのみマウントされていることを確認します(自動化)
*結果:*PASS
Audit(監査):
kubectl get pods --all-namespaces -o custom-columns=POD_NAMESPACE:.metadata.namespace,POD_NAME:.metadata.name,POD_SERVICE_ACCOUNT:.spec.serviceAccount,POD_IS_AUTOMOUNTSERVICEACCOUNTTOKEN:.spec.automountServiceAccountToken --no-headers | while read -r pod_namespace pod_name pod_service_account pod_is_automountserviceaccounttoken
do
# Retrieve automountServiceAccountToken's value for ServiceAccount and Pod, set to notset if null or <none>
svacc_is_automountserviceaccounttoken=$(kubectl get serviceaccount -n "$\{pod_namespace}" "$\{pod_service_account}" -o json | jq -r '.automountServiceAccountToken' | sed -e 's/<none>/notset/g' -e 's/null/notset/g') pod_is_automountserviceaccounttoken=$(echo "$\{pod_is_automountserviceaccounttoken}" | sed -e 's/<none>/notset/g' -e 's/null/notset/g')
if [ "$\{svacc_is_automountserviceaccounttoken}" = "false" ] && ( [ "$\{pod_is_automountserviceaccounttoken}" = "false" ] || [ "$\{pod_is_automountserviceaccounttoken}" = "notset" ] ); then
is_compliant="true"
elif [ "$\{svacc_is_automountserviceaccounttoken}" = "true" ] && [ "$\{pod_is_automountserviceaccounttoken}" = "false" ]; then
is_compliant="true"
else
is_compliant="false"
fi
echo "**namespace: $\{pod_namespace} pod_name: $\{pod_name} service_account: $\{pod_service_account} pod_is_automountserviceaccounttoken: $\{pod_is_automountserviceaccounttoken} svacc_is_automountServiceAccountToken: $\{svacc_is_automountserviceaccounttoken} is_compliant: $\{is_compliant}"
done
期待される結果: 'is_compliant' は 'true' と等しい または 'service_account' は 'coredns, helm-traefik, helm-traefik-crd, traefik, metrics-server, svclb, local-path-provisioner-service-account' の有効な要素を含みます。
戻り値:
**namespace: kube-system pod_name: coredns-747df8996b-8j2jx service_account: coredns pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: false
**namespace: kube-system pod_name: helm-install-traefik-crd-n4mx7 service_account: helm-traefik-crd pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: false
**namespace: kube-system pod_name: helm-install-traefik-lfb28 service_account: helm-traefik pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: false
**namespace: kube-system pod_name: local-path-provisioner-84b6bbcd49-748dm service_account: local-path-provisioner-service-account pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: false
**namespace: kube-system pod_name: metrics-server-548c5694dd-qn4f9 service_account: metrics-server pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: false
**namespace: kube-system pod_name: svclb-traefik-369796bb-xpcgm service_account: svclb pod_is_automountserviceaccounttoken: false svacc_is_automountServiceAccountToken: notset is_compliant: false
**namespace: kube-system pod_name: traefik-5c7d844cd9-lb5nw service_account: traefik pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: false
修正:
サービスアカウントおよびサービスアカウントトークンをマウントする必要のないポッドの定義を修正し、`automountServiceAccountToken: false`を使ってマウントを無効にしてください。ServiceAccountとPodの.specの両方がautomountServiceAccountTokenの値を指定している場合、Podのspecが優先されます。条件:Podは、次の条件を満たすときに準拠しています - ServiceAccountがautomountServiceAccountToken: falseで、PodがautomountServiceAccountToken: falseまたはnotsetである場合 - ServiceAccountがautomountServiceAccountToken: true notsetで、PodがautomountServiceAccountToken: falseである場合。K3sは、通常の操作に必要な次のサービスアカウントに例外を与えます: - coredns、helm-traefik、helm-traefik-crd、traefik、metrics-server、svclb、local-path-provisioner-service-account
5.1.8 Kubernetesクラスター内でのBind、Impersonate、Escalate権限の使用を制限する(手動)
*結果:*WARN
*是正措置:*可能な限り、対象からimpersonate、bind、escalate権限を削除します。
5.1.9 永続ボリュームの作成へのアクセスを最小限に抑える(手動)
*結果:*WARN
*是正措置:*可能な限り、クラスター内のPersistentVolumeオブジェクトへの作成アクセスを削除します。
5.1.11 certificatesigningrequestsオブジェクトの承認サブリソースへのアクセスを最小限に抑える(手動)
*結果:*WARN
*是正措置:*可能な限り、certificatesigningrequestオブジェクトの承認サブリソースへのアクセスを削除します。
5.1.12 webhook設定オブジェクトへのアクセスを最小限に抑える(手動)
*結果:*WARN
*是正措置:*可能な限り、validatingwebhookconfigurationsまたはmutatingwebhookconfigurationsオブジェクトへのアクセスを削除します。
5.1.13 サービスアカウントトークンの作成へのアクセスを最小限に抑える(手動)
*結果:*WARN
*是正措置:*可能な限り、serviceaccountオブジェクトのトークンサブリソースへのアクセスを削除します。## 5.2 Podセキュリティ基準
5.2.1 クラスターに少なくとも1つのアクティブなポリシー制御メカニズムが存在することを確認する(手動)
*結果:*WARN
*是正措置:*ユーザーのワークロードを含むすべての名前空間に対して、Podセキュリティアドミッションまたは外部ポリシー制御システムが存在することを確認します。
5.2.2 特権コンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*是正措置:*ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加し、特権コンテナの受け入れを制限します。
5.2.3 ホストプロセスIDネームスペースを共有したいコンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*補修:*ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加し、hostPID コンテナの受け入れを制限します。
5.2.4 ホストIPCネームスペースを共有したいコンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*是正措置:*ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加し、hostIPC コンテナの受け入れを制限します。
5.2.5 ホストネットワークネームスペースを共有したいコンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*是正措置:*ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加し、hostNetwork コンテナの受け入れを制限します。
5.2.6 allowPrivilegeEscalationを持つコンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*是正措置:*ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加し、.spec.allowPrivilegeEscalation が true に設定されているコンテナの受け入れを制限します。
5.2.7 ルートコンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*是正措置:*クラスター内の各ネームスペースにポリシーを作成し、MustRunAsNonRoot または MustRunAs がUIDの範囲に0を含まないように設定されていることを確認します。
5.2.8 NET_RAW機能を持つコンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*是正措置:*ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加し、NET_RAW 機能を持つコンテナの受け入れを制限します。
5.2.9 追加された機能を持つコンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
是正措置:allowedCapabilities が空の配列に設定されていない限り、クラスターのポリシーに存在しないことを確認します。
5.2.10 割り当てられた機能を持つコンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*是正措置:*クラスター上で実行されているアプリケーションの機能の使用を確認します。ネームスペースにLinux機能を必要としないアプリケーションが含まれている場合、すべての機能をドロップしないコンテナの受け入れを禁止するPSPを追加することを検討してください。
5.2.11 Windows HostProcessコンテナの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*是正措置:*ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加し、.securityContext.windowsOptions.hostProcess が true に設定されているコンテナの受け入れを制限します。
5.2.12 HostPathボリュームの受け入れを最小限に抑える(マニュアル)
*結果:*WARN
*是正措置:*ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、hostPath ボリュームを持つコンテナの受け入れを制限します。
5.2.13 ホストポートを使用するコンテナの受け入れを最小限に抑えます(手動)
*結果:*WARN
*是正措置:*ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、hostPort セクションを使用するコンテナの受け入れを制限します。 ## 5.3 ネットワークポリシーとCNI
5.3.1 使用中のCNIがネットワークポリシーをサポートしていることを確認します(手動)
*結果:*WARN
*是正措置:*使用中のCNIプラグインがネットワークポリシーをサポートしていない場合は、別のプラグインの使用を検討するか、Kubernetesクラスター内のトラフィックを制限するための代替メカニズムを見つける必要があります。
5.3.2 すべてのネームスペースにネットワークポリシーが定義されていることを確認します(手動)
*結果:*WARN
*是正措置:*ドキュメントに従って、必要に応じてネットワークポリシーオブジェクトを作成します。 ## 5.4 シークレット管理
5.4.1 シークレットを環境変数としてではなく、ファイルとして使用することを優先してください(マニュアル)
*結果:*WARN
*修正:*可能であれば、アプリケーションコードを再記述して、環境変数ではなく、マウントされたシークレットファイルからシークレットを読み取るようにしてください。
5.4.2 外部シークレットストレージを検討してください(マニュアル)
*結果:*WARN
*修正:*クラウドプロバイダーまたはサードパーティのシークレット管理ソリューションが提供するシークレット管理オプションを参照してください。 ## 5.5 拡張可能なAdmission Control
5.5.1 ImagePolicyWebhookアドミッションコントローラーを使用してイメージの来歴を構成してください(マニュアル)
*結果:*WARN
*修正:*Kubernetesのドキュメントに従って、イメージの来歴を設定してください。 ## 5.7 一般的なポリシー
5.7.1 ネームスペースを使用してリソース間に管理境界を作成してください(マニュアル)
*結果:*WARN
*修正:*ドキュメントに従って、必要に応じてデプロイメント内のオブジェクトのためにネームスペースを作成してください。
5.7.2 Pod定義でseccompプロファイルがdocker/defaultに設定されていることを確認してください(マニュアル)
*結果:*WARN
*修正:*Pod定義でdocker/default seccompプロファイルを有効にするには、`securityContext`を使用してください。以下のような例があります: securityContext: seccompProfile: type:RuntimeDefault