CIS 1.9 セルフアセスメントガイド

概要

この文書は、RKE2 セキュリティハードニングガイドの補足資料です。ハードニングガイドは、RKE2の本番インストールをハードニングするための指針を提供し、このベンチマークガイドは、CIS Kubernetes ベンチマークの各コントロールに対するハードニングされたクラスターのセキュリティレベルを評価するのに役立つことを目的としています。これは、RKE2オペレーター、セキュリティチーム、監査人、意思決定者によって使用されることを想定しています。

このガイドは、RKE2の*v1.27-1.32*リリースラインおよびCIS Kubernetes ベンチマークの*v1.9*リリースに特化しています。

各コントロールに関する詳細な理由や説明を含む情報については、CIS Kubernetes ベンチマーク v1.8の該当セクションを参照してください。無料アカウントを作成した後、 インターネットセキュリティセンター (CIS)でベンチマークをダウンロードできます。

コントロールテストの方法論

CIS Kubernetes ベンチマークの各コントロールは、付随するハードニングガイドに従って構成されたRKE2クラスターに対して評価されました。

各コントロールの可能な結果は次のとおりです:

  • 合格 - コントロールは自動化されています(スコア: 真)。テスト対象のRKE2クラスターは、ベンチマークに記載された監査に合格しました。

  • 該当せず - コントロールは、RKE2の設計上の動作により該当しません(タイプ: スキップ)。理由セクションでは、なぜそうなるのかを説明します。

  • 警告 - コントロールは手動です(スコア: 偽)で、手動のオペレーターの介入に依存します。修正セクションでは、合格結果を達成するための指針を提供します。

1 コントロールプレーンセキュリティ設定

1.1 コントロールプレーンノードの設定ファイル

1.1.1 APIサーバーポッドの仕様ファイルの権限が600以上に設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

stat -c permissions=%a /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml

期待される結果: 権限が600であり、600またはそれよりも厳しい権限であることが期待されます。

戻り値:
permissions=600
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml

1.1.2 APIサーバーポッドの仕様ファイルの所有者がroot:rootに設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml; then stat -c %U:%G /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml; fi'

期待される結果: 'root:root' は 'root:root' と等しい

戻り値:
root:root
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml

1.1.3 コントローラーマネージャーポッドの仕様ファイルの権限が600以上に設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml; then stat -c permissions=%a /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml; fi'

期待される結果: 権限が600であり、600またはそれよりも厳しい権限であることが期待されます。

戻り値:
permissions=600
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml

1.1.4 コントローラーマネージャーポッドの仕様ファイルの所有者がroot:rootに設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml; then stat -c %U:%G /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml; fi'

期待される結果: 'root:root' は 'root:root' と等しい

戻り値:
root:root
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml

1.1.5 スケジューラーポッドの仕様ファイルの権限が600以上に設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml; then stat -c permissions=%a /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml; fi'

期待される結果: 権限が600であり、600またはそれよりも厳しい権限であることが期待されます。

戻り値:
permissions=600
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml

1.1.6 スケジューラーポッドの仕様ファイルの所有者がroot:rootに設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml; then stat -c %U:%G /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml; fi'

期待される結果: 'root:root' が存在します

戻り値:
root:root
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml

1.1.7 etcdポッドの仕様ファイルの権限が600以上に設定されていることを確認してください(手動)

*結果:*PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml; then stat -c permissions=%a /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml; fi'

期待される結果: 権限が600であり、600またはそれよりも厳しい権限であることが期待されます。

戻り値:
permissions=600
是正措置:

etcdロールなしでマスターのみを実行している場合、このチェックは該当しません。コントロールプレーンとetcdロールが同じノードに存在するが、このチェックが警告の場合は、コントロールプレーンノードで以下のコマンドを実行してください(システム上のファイルの場所に基づく)。例えば、chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml

1.1.8 etcdポッドの仕様ファイルの所有者がroot:rootに設定されていることを確認してください(手動)

*結果:*PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml; then stat -c %U:%G /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml; fi'

期待される結果: 'root:root' は 'root:root' と等しい

戻り値:
root:root
是正措置:

etcdロールなしでマスターのみを実行している場合、このチェックは該当しません。コントロールプレーンとetcdロールが同じノードに存在するが、このチェックが警告の場合は、コントロールプレーンノードで以下のコマンドを実行してください(システム上のファイルの場所に基づく)。例えば、chown root:root /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml

1.1.9 コンテナネットワークインタフェースファイルの権限が600以上に設定されていることを確認してください(手動)

*結果:*WARN

是正措置: 多くのCNIでは、パーミッション750のロックファイルが作成されることに注意してください。これは予想されることであり、無視しても構いません。 制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。 例えば、chmod 600 /var/lib/cni/networks/<filename> and chmod 600 /etc/cni/net.d/<filename>

1.1.10 コンテナネットワークインタフェースファイルの所有権がroot:rootに設定されていることを確認してください(手動)

*結果:*PASS

Audit(監査):

ps -fC ${kubeletbin:-kubelet} | grep -- --cni-conf-dir || echo "/etc/cni/net.d" | sed 's%.*cni-conf-dir[= ]\([^ ]*\).*%\1%' | xargs -I{} find {} -mindepth 1 | xargs --no-run-if-empty stat -c %U:%G
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 root:root root:root root:root
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root <path/to/cni/files>

1.1.11 etcdデータディレクトリの権限が700またはそれ以上に制限されていることを確認してください(手動)

*結果:*PASS

Audit(監査):

stat -c permissions=%a /var/lib/rancher/rke2/server/db/etcd

期待される結果: 権限が700に設定されており、700以上の制限である必要があります。

戻り値:
permissions=700
是正措置:

etcdロールなしでマスターのみを実行している場合、このチェックは該当しません。制御プレーンとetcdロールが同じノードに存在するが、このチェックが警告の場合、etcdサーバーノードで、コマンド 'ps -ef | grep etcd' から引数 --data-dir として渡されたetcdデータディレクトリを取得します。上記で見つかったetcdデータディレクトリに基づいて、以下のコマンドを実行してください。例えば、chmod 700 /var/lib/rancher/rke2/server/db/etcd

1.1.12 etcdデータディレクトリの所有権がetcd:etcdに設定されていることを確認してください(手動)

*結果:*PASS

Audit(監査):

stat -c %U:%G /var/lib/rancher/rke2/server/db/etcd

期待される結果: 'etcd:etcd’が存在します

戻り値:
etcd:etcd
是正措置:

etcdロールなしでマスターのみを実行している場合、このチェックは該当しません。制御プレーンとetcdロールが同じノードに存在するが、このチェックが警告の場合、etcdサーバーノードで、コマンド 'ps -ef | grep etcd' から引数 --data-dir として渡されたetcdデータディレクトリを取得します。上記で見つかったetcdデータディレクトリに基づいて、以下のコマンドを実行してください。例えば、chown etcd:etcd /var/lib/rancher/rke2/server/db/etcd

1.1.13 admin.confファイルの権限が600またはそれ以上の制限に設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

stat -c permissions=%a /var/lib/rancher/rke2/server/cred/admin.kubeconfig

期待される結果: 権限が600であり、600またはそれよりも厳しい権限であることが期待されます。

戻り値:
permissions=600
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod 600 /var/lib/rancher/rke2/server/cred/admin.kubeconfig

1.1.14 admin.confファイルの所有権がroot:rootに設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

stat -c %U:%G /var/lib/rancher/rke2/server/cred/admin.kubeconfig

期待される結果: 'root:root' は 'root:root' と等しい

戻り値:
root:root
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/rancher/rke2/server/cred/admin.kubeconfig

1.1.15 scheduler.confファイルの権限が600またはそれ以上の制限に設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig; then stat -c permissions=%a /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig; fi'

期待される結果: 権限が600であり、600またはそれよりも厳しい権限であることが期待されます。

戻り値:
permissions=600
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod 600 /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig

1.1.16 scheduler.confファイルの所有者がroot:rootに設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

stat -c %U:%G /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig

期待される結果: 'root:root' は 'root:root' と等しい

戻り値:
root:root
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig

1.1.17 controller-manager.confファイルのパーミッションが600またはそれ以上に設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/server/cred/controller.kubeconfig; then stat -c permissions=%a /var/lib/rancher/rke2/server/cred/controller.kubeconfig; fi'

期待される結果: 権限が600であり、600またはそれよりも厳しい権限であることが期待されます。

戻り値:
permissions=600
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chmod 600 /var/lib/rancher/rke2/server/cred/controller.kubeconfig

1.1.18 controller-manager.confファイルの所有者がroot:rootに設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

stat -c %U:%G /var/lib/rancher/rke2/server/cred/controller.kubeconfig

期待される結果: 'root:root' は 'root:root' と等しい

戻り値:
root:root
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown root:root /var/lib/rancher/rke2/server/cred/controller.kubeconfig

1.1.19 Kubernetes PKIディレクトリとファイルの所有者がroot:rootに設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

stat -c %U:%G /var/lib/rancher/rke2/server/tls

期待される結果: 'root:root' は 'root:root' と等しい

戻り値:
root:root
是正措置:

制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。例えば、chown -R root:root /var/lib/rancher/rke2/server/tls

1.1.20 Kubernetes PKI証明書ファイルのパーミッションが600またはそれ以上に設定されていることを確認してください(手動)

*結果:*WARN

是正措置: 制御プレーンノードで、以下のコマンドを実行してください(システム上のファイルの場所に基づいて)。 例えば、chmod -R 600 /var/lib/rancher/rke2/server/tls/*.crt

1.1.21 Kubernetes PKIキーファイルの権限が600に設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

stat -c permissions=%a /var/lib/rancher/rke2/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/rke2/server/tls/*.key

1.2 APIサーバー

1.2.1 --anonymous-auth引数がfalseに設定されていることを確認してください(自動化)

*結果:*PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--anonymous-auth' は 'false' と等しい

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​anonymous-auth引数をfalseに設定します。このチェックが失敗した場合、RKE2設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のようなものを削除してください。

kube-apiserver-arg: - "anonymous-auth=true"

1.2.2 --token-auth-fileパラメータが設定されていないことを確認してください(自動化)

*結果:*PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--token-auth-file' は存在しません。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

ドキュメントに従って、代替の認証メカニズムを設定してください。このチェックが失敗した場合、RKE2設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のようなものを削除してください。

kube-apiserver-arg: - "token-auth-file=+++<path>+++"

1.2.3 --DenyServiceExternalIPs が設定されていることを確認してください(手動)

結果:WARN

是正措置:デフォルトでは、RKE2はDenyServiceExternalIPsを設定しません。このフラグを有効にするには、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを以下のように編集してください。

kube-apiserver-arg: - "enable-admission-plugins=DenyServiceExternalIPs"

1.2.4 --kubelet-client-certificate と --kubelet-client-key 引数が適切に設定されていることを確認してください(自動)

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--kubelet-client-certificate' が存在し、かつ '--kubelet-client-key' が存在します

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2はkubeletクライアント証明書とキーを自動的に提供します。それらは生成され、/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crtおよび/var/lib/rancher/rke2/server/tls/client-kube-apiserver.keyにあります。何らかの理由で独自の証明書とキーを提供する必要がある場合は、RKE2の設定ファイル/etc/rancher/rke2/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(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--kubelet-certificate-authority' が存在します

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2はkubelet CA証明書ファイルを自動的に提供し、/var/lib/rancher/rke2/server/tls/server-ca.crtにあります。何らかの理由で独自のCA証明書を提供する必要がある場合は、rke2証明書コマンドラインツールの使用を検討してください。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-apiserver-arg: - "kubelet-certificate-authority=<path/to/ca-cert-file>"

1.2.6 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認してください(自動)

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--authorization-mode’は’AlwaysAllow’を持っていません

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​authorization-modeをAlwaysAllowに設定しません。このチェックが失敗した場合は、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-apiserver-arg: - "authorization-mode=AlwaysAllow"

1.2.7 --authorization-mode 引数に Node が含まれていることを確認してください(自動)

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--authorization-mode' に 'Node' が含まれています

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​authorization-modeをNodeおよびRBACに設定します。このチェックが失敗した場合は、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、authorization-modeを上書きしていないことを確認してください。

1.2.8 --認可モード引数にRBACが含まれていることを確認してください(自動)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--認可モード’には’RBAC’があります。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​authorization-modeをNodeおよびRBACに設定します。このチェックが失敗した場合は、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、authorization-modeを上書きしていないことを確認してください。

1.2.9 admission controlプラグインEventRateLimitが設定されていることを確認してください(手動)。

結果:WARN

修正方法:Kubernetesのドキュメントに従い、設定ファイルに希望の制限を設定してください。次に、RKE2の設定ファイル/etc/rancher/rke2/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(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--enable-admission-plugins’には’AlwaysAdmit’が含まれていないか、'--enable-admission-plugins’が存在しません。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​enable-admission-pluginsをAlwaysAdmitに設定しません。このチェックが失敗した場合は、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-apiserver-arg: - "enable-admission-plugins=AlwaysAdmit"

1.2.11 admission control プラグイン AlwaysPullImages が設定されていることを確認してください(手動)。

結果:WARN

修正:CIS ガイドラインに従い、"この設定は、オフラインまたは孤立したクラスターに影響を与える可能性があります。これらのクラスターは、事前にイメージがロードされており、使用中のイメージをプルするためのレジストリにアクセスできません。"この設定は、この構成を使用するクラスターには適していません。制御プレーンノードのRKE2設定ファイル/etc/rancher/rke2/config.yamlを編集し、--enable-admission-pluginsパラメータにAlwaysPullImagesを含めるように設定してください。--enable-admission-plugins=...,AlwaysPullImages,...

1.2.12 admission control プラグイン ServiceAccount が設定されていることを確認してください(自動)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--disable-admission-plugins’が存在するか、'--disable-admission-plugins’が存在しません。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​disable-admission-pluginsを何にも設定しません。ドキュメントに従い、環境に応じてServiceAccountオブジェクトを作成してください。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-apiserver-arg: - "disable-admission-plugins=ServiceAccount"

1.2.13 admission control プラグイン NamespaceLifecycle が設定されていることを確認してください(自動)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--disable-admission-plugins’が存在するか、'--disable-admission-plugins’が存在しません。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​disable-admission-pluginsを何にも設定しません。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-apiserver-arg: - "disable-admission-plugins=\...,NamespaceLifecycle,\..."

1.2.14 admission control プラグイン NodeRestriction が設定されていることを確認してください(自動)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--enable-admission-plugins' は 'NodeRestriction' を持っています。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​enable-admission-pluginsをNodeRestrictionに設定します。RKE2の設定ファイル/etc/rancher/rke2/config.yamlを確認し、アドミッションプラグインを上書きしていないことを確認してください。もし上書きしている場合は、NodeRestriction をリストに含めてください。

kube-apiserver-arg: - "enable-admission-plugins=\...,NodeRestriction,\..."

1.2.15 --profiling 引数が false に設定されていることを確認してください(自動)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--profiling' は 'false' と等しい

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​profiling引数をfalseに設定します。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-apiserver-arg: - "profiling=true"

1.2.16 --audit-log-path引数が設定されていることを確認してください(自動化)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--audit-log-path' が存在します。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​audit-log-path引数を/var/lib/rancher/rke2/server/logs/audit.logに設定します。これを変更したい場合は、コントロールプレーンノードのRKE2設定ファイル/etc/rancher/rke2/config.yamlを編集し、--audit-log-pathパラメータを監査ログを書き込む適切なパスとファイルに設定してください。例えば、

kube-apiserver-arg: - "audit-log-path=/var/log/rke2/audit.log"

1.2.17 --audit-log-maxage引数が30または適切な値に設定されていることを確認してください(自動化)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--audit-log-maxage' は 30 以上です。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​audit-log-maxage引数を30日間に設定します。これを変更したい場合は、コントロールプレーンノードのRKE2設定ファイル /etc/rancher/rke2/config.yaml を編集し、--audit-log-maxageパラメータを適切な日数に設定してください。例えば、

kube-apiserver-arg: - "audit-log-maxage=40"

1.2.18 --audit-log-maxbackup引数が10または適切な値に設定されていることを確認してください(自動化)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--audit-log-maxbackup' は 10 以上です。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​audit-log-maxbackup引数を10に設定します。これを変更したい場合は、コントロールプレーンノードのRKE2設定ファイル /etc/rancher/rke2/config.yaml を編集し、--audit-log-maxbackupパラメータを適切な値に設定してください。などです。別の例をあげれば、

kube-apiserver-arg: - "audit-log-maxbackup=15"

1.2.19 --audit-log-maxsize引数が100または適切な値に設定されていることを確認してください(自動化)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--audit-log-maxsize' は 100 以上です。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​audit-log-maxsize引数を100 MBに設定します。これを変更したい場合は、コントロールプレーンノードのRKE2設定ファイル/etc/rancher/rke2/config.yamlを編集し、--audit-log-maxsizeパラメータを適切なサイズ(MB単位)に設定してください。などです。別の例をあげれば、

kube-apiserver-arg: - "audit-log-maxsize=150"

1.2.20 --request-timeout引数が適切に設定されていることを確認してください(自動化)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--request-timeout’が存在しないか、または'--request-timeout’が存在する。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

CISガイドラインに従い、"この制限を適切に設定し、必要な場合にのみデフォルトの60秒の制限を変更することを推奨します"。必要に応じて、RKE2の設定ファイル /etc/rancher/rke2/config.yaml を編集し、以下のパラメータを設定してください。などです。別の例をあげれば、

kube-apiserver-arg: - "request-timeout=300s"

1.2.21 --service-account-lookup 引数が true に設定されていることを確認してください(自動)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--service-account-lookup' が存在しないか、または '--service-account-lookup' が存在する

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は—​service-account-lookup引数を設定しません。RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、service-account-lookupを設定してください。などです。別の例をあげれば、

kube-apiserver-arg: - "service-account-lookup=true"

また、このファイルから service-account-lookup パラメータを削除することで、デフォルトが適用されるようにできます。

1.2.22 --service-account-key-file 引数が適切に設定されていることを確認してください(自動)

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--service-account-key-file' が存在する

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

RKE2は自動的にサービスアカウントキーファイルを生成して設定します。それは /var/lib/rancher/rke2/server/tls/service.key にあります。このチェックが失敗した場合は、RKE2の設定ファイル /etc/rancher/rke2/config.yaml を編集し、以下のような行を削除してください。

kube-apiserver-arg: - "service-account-key-file=+++<path>+++"

1.2.23 --etcd-certfile および --etcd-keyfile 引数が適切に設定されていることを確認してください(自動)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--etcd-certfile' が存在し、かつ '--etcd-keyfile' が存在する

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

RKE2は自動的にetcd証明書とキーファイルを生成して設定します。それらは /var/lib/rancher/rke2/server/tls/etcd/client.crt および /var/lib/rancher/rke2/server/tls/etcd/client.key にあります。このチェックが失敗した場合、RKE2の設定ファイル /etc/rancher/rke2/config.yaml を編集し、以下のような行を削除してください。

kube-apiserver-arg: - "etcd-certfile=+++<path>+++" - "etcd-keyfile=+++<path>+++"

1.2.24 --tls-cert-file および --tls-private-key-file 引数が適切に設定されていることを確認してください(自動)。

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--tls-cert-file' が存在し、かつ '--tls-private-key-file' が存在すること

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は自動的にTLS証明書とプライベートキーをapiserverに提供します。それらは生成され、/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt および /var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key に配置されます。このチェックが失敗した場合は、RKE2の設定ファイル /etc/rancher/rke2/config.yaml を編集し、以下のような行を削除してください。

kube-apiserver-arg: - "tls-cert-file=+++<path>+++" - "tls-private-key-file=+++<path>+++"

1.2.25 --クライアントCAファイル引数が適切に設定されていることを確認してください(自動)

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--client-ca-file’が存在します

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は自動的にクライアントCAファイルを提供します。それは生成され、/var/lib/rancher/rke2/server/tls/client-ca.crt にあります。何らかの理由で独自のCAファイルを提供する必要がある場合は、rke2証明書コマンドラインツールの使用を検討してください。このチェックが失敗した場合、RKE2の設定ファイル /etc/rancher/rke2/config.yaml を編集し、以下のような行を削除してください。

kube-apiserver-arg: - "client-ca-file=+++<path>+++"

1.2.26 --etcd-cafile引数が適切に設定されていることを確認してください(自動)

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--etcd-cafile' が存在します

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2は自動的にetcd CAファイルを提供します。それは生成され、/var/lib/rancher/rke2/server/tls/client-ca.crt にあります。何らかの理由で独自のCAファイルを提供する必要がある場合は、rke2証明書コマンドラインツールの使用を検討してください。このチェックが失敗した場合、RKE2の設定ファイル /etc/rancher/rke2/config.yaml を編集し、以下のような行を削除してください。

kube-apiserver-arg: - "etcd-cafile=+++<path>+++"

1.2.27 --暗号化プロバイダー設定引数が適切に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--暗号化プロバイダー設定' が存在します

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

RKE2は常にシークレットを暗号化するように設定されています。シークレットの暗号化は、rke2 secrets-encrypt コマンドラインツールで管理されます。必要に応じて、生成された暗号化設定は /var/lib/rancher/rke2/server/cred/encryption-config.json にあります。

1.2.28 暗号化プロバイダーが適切に構成されていることを確認してください(自動化)

結果:PASS

Audit(監査):

ENCRYPTION_PROVIDER_CONFIG=$(ps -ef | grep kube-apiserver | 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

期待される結果: 'プロバイダー' が 'aescbc,kms,secretbox' の有効な要素を含んでいます

戻り値:
provider=aescbc
是正措置:

RKE2は常にシークレットを暗号化するためにaescbc暗号化プロバイダーを使用するように設定されています。シークレットの暗号化は、rke2 secrets-encrypt コマンドラインツールで管理されます。必要に応じて、生成された暗号化設定は /var/lib/rancher/rke2/server/cred/encryption-config.json にあります。

1.2.29 APIサーバーが強力な暗号化シファーのみを使用することを確認してください(自動)

結果:PASS

Audit(監査):

/bin/ps -fC kube-apiserver

期待される結果: '--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' の有効な要素が含まれています。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key
是正措置:

デフォルトでは、RKE2 kube-apiserverはこのテストに準拠しています。これらの値の変更は回帰を引き起こす可能性があるため、運用展開に適用する前にすべてのapiserverクライアントが新しいTLS構成をサポートしていることを確認してください。カスタムTLS構成が必要な場合は、要件に合わせたこのルールのカスタムバージョンを作成することも検討してください。このチェックが失敗した場合は、`tls-cipher-suites`の周りのカスタム設定を削除するか、/etc/rancher/rke2/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(監査):

/bin/ps -fC kube-controller-manager

期待される結果: '--terminated-pod-gc-threshold’が存在する

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/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/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
是正措置:

デフォルトでは、RKE2はterminated-pod-gc-thresholdを1000に設定します。この値を変更する必要がある場合は、コントロールプレーンノードのRKE2設定ファイル /etc/rancher/rke2/config.yaml を編集し、--terminated-pod-gc-thresholdを適切な閾値に設定してください。

kube-controller-manager-arg: - "terminated-pod-gc-threshold=10"

1.3.2 --profiling引数がfalseに設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kube-controller-manager

期待される結果: '--profiling' は 'false' と等しい

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/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/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
是正措置:

デフォルトでは、RKE2は—​profiling引数をfalseに設定します。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-controller-manager-arg: - "profiling=true"

1.3.3 --use-service-account-credentials引数がtrueに設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kube-controller-manager

期待される結果: '--use-service-account-credentials’は’false’と等しくない

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/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/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
是正措置:

デフォルトでは、RKE2は—​use-service-account-credentials引数をtrueに設定します。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-controller-manager-arg: - "use-service-account-credentials=false"

1.3.4 --service-account-private-key-file引数が適切に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kube-controller-manager

期待される結果: '--service-account-private-key-file’が存在する

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/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/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
是正措置:

デフォルトでは、RKE2はサービスアカウントの秘密鍵ファイルを自動的に提供します。これは生成され、/var/lib/rancher/rke2/server/tls/service.current.keyにあります。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-controller-manager-arg: - "service-account-private-key-file=+++<path>+++"

1.3.5 --root-ca-file引数が適切に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kube-controller-manager

期待される結果: '--root-ca-file' が存在します

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/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/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
是正措置:

デフォルトでは、RKE2は自動的にルートCAファイルを提供します。これは生成され、/var/lib/rancher/rke2/server/tls/server-ca.crtにあります。何らかの理由で独自のCA証明書を提供する必要がある場合は、rke2証明書コマンドラインツールの使用を検討してください。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-controller-manager-arg: - "root-ca-file=+++<path>+++"

1.3.6 RotateKubeletServerCertificate引数がtrueに設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kube-controller-manager

期待される結果: '--feature-gates' が存在するか、または '--feature-gates' が存在しない

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/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/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
是正措置:

デフォルトでは、RKE2はRotateKubeletServerCertificate機能ゲートを設定しません。この機能ゲートを有効にしている場合は、削除する必要があります。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-controller-manager-arg: - "feature-gate=RotateKubeletServerCertificate"

1.3.7 --bind-address引数が127.0.0.1に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kube-controller-manager

期待される結果: '--bind-address' は '127.0.0.1' と等しいか、または '--bind-address' が存在しない

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/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/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
是正措置:

デフォルトでは、RKE2は—​bind-address引数を127.0.0.1に設定します。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-controller-manager-arg: - "bind-address=+++<IP>+++"

1.4 スケジューラ

1.4.1 --profiling引数がfalseに設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kube-scheduler

期待される結果: '--profiling' は 'false' と等しい

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2992 2874 0 18:32 ? 00:00:05 kube-scheduler --permit-port-sharing=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259
是正措置:

デフォルトでは、RKE2は—​profiling引数をfalseに設定します。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-scheduler-arg: - "profiling=true"

1.4.2 --bind-address引数が127.0.0.1に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kube-scheduler

期待される結果: '--bind-address' は '127.0.0.1' と等しいか、または '--bind-address' が存在しない

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2992 2874 0 18:32 ? 00:00:05 kube-scheduler --permit-port-sharing=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259
是正措置:

デフォルトでは、RKE2は—​bind-address引数を127.0.0.1に設定します。このチェックが失敗した場合、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kube-scheduler-arg: - "bind-address=+++<IP>+++"

2 Etcdノードの設定

2 Etcdノードの設定

2.1 --cert-file および --key-file 引数が適切に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

cat /var/lib/rancher/rke2/server/db/etcd/config

期待される結果: '.client-transport-security.cert-file’は'/var/lib/rancher/rke2/server/tls/etcd/server-client.crt’と等しく、'.client-transport-security.key-file’は'/var/lib/rancher/rke2/server/tls/etcd/server-client.key’と等しい。

戻り値:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/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-eb0b952d=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-eb0b952d peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
是正措置:

デフォルトでは、RKE2はetcd用の証明書と鍵ファイルを生成します。/var/lib/rancher/rke2/server/tls/etcd/にあります。このチェックが失敗した場合、設定ファイル /var/lib/rancher/rke2/server/db/etcd/config がカスタム証明書および鍵ファイルを使用するように変更されていないことを確認してください。

2.2 --client-cert-auth 引数が true に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

cat /var/lib/rancher/rke2/server/db/etcd/config

期待される結果:'ETCD_CLIENT_CERT_AUTH’が存在するか、または'.client-transport-security.client-cert-auth’が’true’と等しい。

戻り値:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/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-a6fd4758=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-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
是正措置:

デフォルトでは、RKE2は—​client-cert-authパラメータをtrueに設定します。このチェックが失敗した場合、設定ファイル /var/lib/rancher/rke2/server/db/etcd/config がクライアント証明書認証を無効にするように変更されていないことを確認してください。

2.3 --auto-tls 引数が true に設定されていないことを確認してください(自動化)

結果:PASS

Audit(監査):

cat /var/lib/rancher/rke2/server/db/etcd/config

期待される結果:'ETCD_AUTO_TLS’が存在しないか、または’ETCD_AUTO_TLS’が存在するか、または'.client-transport-security.auto-tls’が存在する。

戻り値:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/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-a6fd4758=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-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
是正措置:

デフォルトでは、RKE2は—​auto-tlsパラメータを設定しません。このチェックが失敗した場合、マスターノードのetcdポッド仕様ファイル /var/lib/rancher/rke2/server/db/etcd/config を編集し、--auto-tlsパラメータを削除するか、falseに設定してください。client-transport-security: auto-tls: false

2.4 --peer-cert-file および --peer-key-file 引数が適切に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

cat /var/lib/rancher/rke2/server/db/etcd/config

期待される結果: '.peer-transport-security.cert-file’は'/var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt’と等しく、'.peer-transport-security.key-file’は'/var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key’と等しい

戻り値:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/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-eb0b952d=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-eb0b952d peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
是正措置:

デフォルトでは、RKE2はetcd用のピア証明書と鍵ファイルを生成します。/var/lib/rancher/rke2/server/tls/etcd/にあります。このチェックが失敗した場合、設定ファイル /var/lib/rancher/rke2/server/db/etcd/config がカスタムピア証明書と鍵ファイルを使用するように変更されていないことを確認してください。

2.5 --peer-client-cert-auth 引数が true に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

cat /var/lib/rancher/rke2/server/db/etcd/config

期待される結果:'ETCD_PEER_CLIENT_CERT_AUTH’が存在するか、または'.peer-transport-security.client-cert-auth’が’true’と等しい

戻り値:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/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-a6fd4758=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-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
是正措置:

デフォルトでは、RKE2は—​peer-cert-authパラメータをtrueに設定します。このチェックが失敗した場合、設定ファイル /var/lib/rancher/rke2/server/db/etcd/config がピアクライアント証明書認証を無効にするように変更されていないことを確認してください。

2.6 --peer-auto-tls 引数が true に設定されていないことを確認してください(自動化)

結果:PASS

Audit(監査):

cat /var/lib/rancher/rke2/server/db/etcd/config

期待される結果:'ETCD_PEER_AUTO_TLS’が存在しないか、または’ETCD_PEER_AUTO_TLS’が存在するか、または'.peer-transport-security.auto-tls’が存在する

戻り値:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/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-a6fd4758=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-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
是正措置:

デフォルトでは、RKE2は—​peer-auto-tlsパラメータを設定しません。このチェックが失敗した場合、マスターノードのetcdポッド仕様ファイル /var/lib/rancher/rke2/server/db/etcd/config を編集し、--peer-auto-tlsパラメータを削除するか、falseに設定してください。peer-transport-security: auto-tls: false

2.7 etcdに対して一意の認証局が使用されていることを確認してください(自動化)

結果:PASS

Audit(監査):

cat /var/lib/rancher/rke2/server/db/etcd/config

期待される結果:'ETCD_TRUSTED_CA_FILE’が存在するか、または'.peer-transport-security.trusted-ca-file’が'/var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt’と等しい

戻り値:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/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-a6fd4758=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-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
是正措置:

デフォルトでは、RKE2はetcd用のユニークな認証局を生成します。これは/var/lib/rancher/rke2/server/tls/etcd/peer-ca.crtにあります。このチェックが失敗した場合、設定ファイル /var/lib/rancher/rke2/server/db/etcd/config が共有の認証局を使用するように変更されていないことを確認してください。

3 コントロールプレーン設定

3.1 認証と権限付与

3.1.1 ユーザーに対してクライアント証明書認証を使用してはいけません(手動)

結果:WARN

是正措置:クライアント証明書の代わりにOIDCの使用など、Kubernetesが提供する代替メカニズムを実装する必要があります。

3.1.2 ユーザーに対してサービスアカウントトークン認証を使用してはいけません(手動)

結果:WARN

是正措置:サービスアカウントトークンの代わりにOIDCの使用など、Kubernetesが提供する代替メカニズムを実装する必要があります。

3.1.3 ブートストラップトークン認証はユーザーには使用されるべきではありません(手動)

結果:WARN

是正措置:ブートストラップトークンの代わりにOIDCの使用など、Kubernetesが提供する代替メカニズムを実装する必要があります。

3.2 ロギング

3.2.1 最小限の監査ポリシーが作成されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -ef | grep kube-apiserver | grep -v grep

期待される結果: '--audit-policy-file' が存在します

戻り値:
root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/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/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/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=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/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/rke2/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/rke2/server/tls/serving-kube-apiserver.key root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/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/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
是正措置:

クラスター用の監査ポリシーファイルを作成してください。

3.2.2 監査ポリシーが重要なセキュリティ上の懸念をカバーしていることを確認してください(手動)

結果:WARN

是正措置:クラスターに提供された監査ポリシーをレビューし、少なくとも以下の領域をカバーしていることを確認してください。 - クラスターによって管理されるシークレットへのアクセス。シークレット、ConfigMaps、およびTokenReviewsへのリクエストのメタデータのみをログに記録するように注意し、機密データのログ記録のリスクを避ける必要があります。 - PodおよびDeploymentオブジェクトの変更。 - pods/execpods/portforwardpods/proxy、および`services/proxy`の使用。ほとんどのリクエストに対して、メタデータレベルでの最小限のログ記録が推奨されます(最も基本的なログ記録レベル)。

4 ワーカーノードのセキュリティ構成

4.1 ワーカーノードの設定ファイル

4.1.1 kubelet サービスファイルの権限が 600 以上に設定されていることを確認してください (自動化)

結果:該当なし

理由:kubeletはRKE2プロセスによって管理されています。kubelet サービスファイルは存在せず、すべての設定は実行時に引数として渡されます。

4.1.2 kubelet サービスファイルの所有権が root:root に設定されていることを確認してください (自動化)

結果:該当なし

理由:kubeletはRKE2プロセスによって管理されています。kubelet サービスファイルは存在せず、すべての設定は実行時に引数として渡されます。

4.1.3 プロキシ kubeconfig ファイルが存在する場合、権限が 600 以上に設定されていることを確認してください (自動化)

結果:PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig; then stat -c permissions=%a /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig; fi'

期待される結果: 権限が600に設定されていますが、600またはそれよりも厳しい権限であることが求められます。

戻り値:
permissions=600
是正措置:

各ワーカーノードで、システム上のファイルの場所に基づいて以下のコマンドを実行してください。例えば、chmod 600 /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig

4.1.4 プロキシkubeconfigファイルが存在する場合、所有権が root:root に設定されていることを確認してください (自動化)

結果:PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig; then stat -c %U:%G /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig; fi'

期待される結果: 'root:root' が存在します

戻り値:
root:root
是正措置:

各ワーカーノードで、システム上のファイルの場所に基づいて以下のコマンドを実行してください。例えば、chown root:root /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig

4.1.5 --kubeconfig kubelet.conf ファイルの権限が 600 以上に設定されていることを確認してください (自動化)

結果:PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/kubelet.kubeconfig; then stat -c permissions=%a /var/lib/rancher/rke2/agent/kubelet.kubeconfig; fi'

期待される結果: 権限が600に設定されていますが、600またはそれよりも厳しい権限であることが求められます。

戻り値:
permissions=600
是正措置:

各ワーカーノードで、システム上のファイルの場所に基づいて以下のコマンドを実行してください。例えば、chmod 600 /var/lib/rancher/rke2/agent/kubelet.kubeconfig

4.1.6 --kubeconfig kubelet.conf ファイルの所有権が root:root に設定されていることを確認してください (自動化)

結果:PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/kubelet.kubeconfig; then stat -c %U:%G /var/lib/rancher/rke2/agent/kubelet.kubeconfig; fi'

期待される結果: 'root:root' は 'root:root' と等しい

戻り値:
root:root
是正措置:

各ワーカーノードで、システム上のファイルの場所に基づいて以下のコマンドを実行してください。例えば、chown root:root /var/lib/rancher/rke2/agent/kubelet.kubeconfig

4.1.7 証明書機関ファイルの権限が 600 以上に設定されていることを確認してください (自動化)

結果:PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/client-ca.crt; then stat -c permissions=%a /var/lib/rancher/rke2/agent/client-ca.crt; fi'

期待される結果: 権限が600に設定されていますが、600またはそれよりも厳しい権限であることが求められます。

戻り値:
permissions=600
是正措置:

各ワーカーノードで、システム上のファイルの場所に基づいて以下のコマンドを実行してください。例えば、chmod 600 /var/lib/rancher/rke2/agent/client-ca.crt

4.1.8 クライアント証明書機関ファイルの所有者が root:root に設定されていることを確認してください (自動化)

結果:PASS

Audit(監査):

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/client-ca.crt; then stat -c %U:%G /var/lib/rancher/rke2/agent/client-ca.crt; fi'

期待される結果: 'root:root' は 'root:root' と等しい

戻り値:
root:root
是正措置:

次のコマンドを実行して --client-ca-file の所有権を変更してください。 chown root:root /var/lib/rancher/rke2/agent/client-ca.crt

4.1.9 kubelet config.yaml設定ファイルが使用されている場合、600またはそれよりも厳しい権限が設定されていることを検証してください(自動化)

結果:該当なし

理由:kubeletはRKE2プロセスによって管理されています。kubelet 構成ファイルは存在せず、すべての設定は実行時に引数として渡されます。

4.1.10 kubelet config.yaml設定ファイルが使用されている場合、ファイルの所有権がroot:rootに設定されていることを検証してください(自動化)

結果:該当なし

理由:kubeletはRKE2プロセスによって管理されています。kubelet 構成ファイルは存在せず、すべての設定は実行時に引数として渡されます。

4.2 Kubelet

4.2.1 --anonymous-auth 引数が false に設定されていることを確認してください (自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kubelet

期待される結果: '--anonymous-auth' は 'false' と等しい

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

デフォルトでは、RKE2は—​anonymous-authをfalseに設定します。このチェックが失敗した場合、RKE2設定ファイル /etc/rancher/rke2/config.yaml を編集し、以下のような行を削除してください。

kubelet-arg: - "anonymous-auth=true"

システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.2.2 --authorization-mode引数がAlwaysAllowに設定されていないことを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kubelet

期待される結果: '--authorization-mode’は’AlwaysAllow’を持っていません

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

デフォルトでは、RKE2は—​authorization-modeをAlwaysAllowに設定しません。このチェックが失敗した場合、RKE2設定ファイル /etc/rancher/rke2/config.yaml を編集し、以下のような行を削除してください。

kubelet-arg: - "authorization-mode=AlwaysAllow"

システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.2.3 --client-ca-file引数が適切に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kubelet

期待される結果: '--client-ca-file’が存在します

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

デフォルトでは、RKE2はKubelet用のクライアントCA証明書を自動的に提供します。それは生成され、/var/lib/rancher/rke2/agent/client-ca.crtにあります。

4.2.4 --read-only-port引数が0に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kubelet

期待される結果: '--read-only-port’は'0’に等しいか、または'--read-only-port’は存在しません

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

デフォルトでは、RKE2は—​read-only-portを0に設定します。これを別の値に設定した場合は、0に戻す必要があります。RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、以下のような行を削除してください。

kubelet-arg: - "read-only-port=XXXX"

システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.2.5 --streaming-connection-idle-timeout引数が0に設定されていないことを確認してください(手動)

結果:PASS

Audit(監査):

/bin/ps -fC kubelet

期待される結果: '--streaming-connection-idle-timeout’が存在するか、または'--streaming-connection-idle-timeout’が存在しないこと。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、次のパラメータを適切な値に設定してください。

kubelet-arg: - "streaming-connection-idle-timeout=5m"

システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.2.6 --make-iptables-util-chains 引数が true に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kubelet

期待される結果: '--make-iptables-util-chains’が存在するか、または'--make-iptables-util-chains’が存在しないこと。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、次のパラメータを設定してください。

kubelet-arg: - "make-iptables-util-chains=true"

または、--make-iptables-util-chains引数を削除して、RKE2がデフォルト値を使用できるようにします。システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.2.7 --hostname-override 引数が設定されていないことを確認してください(自動化)

結果:該当なし

理由:デフォルトでは、RKE2は—​hostname-override引数を設定します。CISガイドラインに従って、これはホスト名がノード名と一致することを求めるクラウドプロバイダーに対応するためです。

4.2.8 eventRecordQPS 引数が適切なイベントキャプチャを保証するレベルに設定されていることを確認してください(手動)

結果:PASS

Audit(監査):

/bin/ps -fC kubelet

期待される結果: '--event-qps’が存在するか、または'--event-qps’が存在しないこと。

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、次のパラメータを適切な値に設定してください。

kubelet-arg: - "event-qps=+++<value>+++"

システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.2.9 --tls-cert-file および --tls-private-key-file 引数が適切に設定されていることを確認してください(自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kubelet

期待される結果: '--tls-cert-file' が存在し、かつ '--tls-private-key-file' が存在すること

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

デフォルトでは、RKE2はKubelet用のTLS証明書と秘密鍵を自動的に提供します。それらは生成され、/var/lib/rancher/rke2/agent/serving-kubelet.crtおよび/var/lib/rancher/rke2/agent/serving-kubelet.keyにあります。このチェックが失敗した場合は、RKE2の設定ファイル/etc/rancher/rke2/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(監査):

/bin/ps -fC kubelet

期待される結果: '--rotate-certificates' が存在するか、または '--rotate-certificates' が存在しない

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

デフォルトでは、RKE2は—​rotate-certificates引数を設定しません。このチェックが失敗した場合は、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、rotate-certificatesパラメータを削除してください。システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.2.11 RotateKubeletServerCertificate 引数が true に設定されていることを確認してください (自動化)

結果:PASS

Audit(監査):

/bin/ps -fC kubelet

期待される結果:'RotateKubeletServerCertificate' が存在するか、または 'RotateKubeletServerCertificate' が存在しない

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/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 --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/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
是正措置:

デフォルトでは、RKE2はRotateKubeletServerCertificate機能ゲートを設定しません。このチェックが失敗した場合は、RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、RotateKubeletServerCertificateパラメータを削除してください。システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.2.12 Kubelet が強力な暗号スイートのみを利用していることを確認してください (手動)

結果:WARN

是正措置:RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集してください。

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"

または、これらの値のサブセットに設定してください。システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.2.13 ポッドの PID に制限が設定されていることを確認してください (手動)

結果:WARN

是正措置:RKE2の設定ファイル/etc/rancher/rke2/config.yamlを編集し、次のパラメータを適切な値に設定してください。

kubelet-arg: - "pod-max-pids=+++<value>+++"

システムに基づいて、RKE2サービスを再起動してください。例えば、systemctl restart rke2-server.service

4.3 kube-proxy

4.3.1 kube-proxyメトリクスサービスがlocalhostにバインドされていることを確認してください(自動)

結果:PASS

Audit(監査):

/bin/ps -fC kube-proxy

期待される結果: '--metrics-bind-address' が存在するか、または '--metrics-bind-address' が存在しない

戻り値:
UID PID PPID C STIME TTY TIME CMD root 2730 2644 0 18:32 ? 00:00:01 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/rke2/agent/kubeproxy.kubeconfig --proxy-mode=iptables
是正措置:

メトリクスサービスを非localhostアドレスにバインドする値を修正または削除してください。デフォルト値は127.0.0.1:10249です。

5つのKubernetesポリシー

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-rke2-.*'に一致します。

戻り値:
cluster-admin cluster-admin system:masters cluster-admin helm-kube-system-rke2-canal helm-rke2-canal cluster-admin helm-kube-system-rke2-coredns helm-rke2-coredns cluster-admin helm-kube-system-rke2-ingress-nginx helm-rke2-ingress-nginx cluster-admin helm-kube-system-rke2-metrics-server helm-rke2-metrics-server cluster-admin helm-kube-system-rke2-snapshot-controller helm-rke2-snapshot-controller cluster-admin helm-kube-system-rke2-snapshot-controller-crd helm-rke2-snapshot-controller-crd cluster-admin helm-kube-system-rke2-snapshot-validation-webhook helm-rke2-snapshot-validation-webhook
是正措置:

cluster-adminロールへのすべてのclusterrolebindingを特定してください。それらが使用されているか、またはこのロールが必要か、または権限の少ないロールを使用できるかを確認します。RKE2は、すべてのRKE2管理コンポーネントのインストールを処理するhelm-kube-system-rke2-*クラスター ロールバインディングに例外を与えます。可能な場合は、最初にユーザーを権限の低いロールにバインドし、その後 cluster-admin ロールへの clusterrolebinding を削除します:

kubectl delete clusterrolebinding [name]

5.1.2 秘密へのアクセスを最小限に抑える(自動化)

結果:WARN

修正:可能な場合は、クラスター内の Secret オブジェクトへの get、list、および watch アクセスを削除してください。

5.1.3 ロールおよび ClusterRoles におけるワイルドカードの使用を最小限に抑える (自動化)

結果: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 rke2-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: rke2-ingress-nginx role_namespace: kube-system is_compliant: true **role_name: rke2-snapshot-controller 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: calico-node is_whitelist: false is_compliant: true **clusterrole_name: cluster-admin is_whitelist: true is_compliant: true **clusterrole_name: edit is_whitelist: false is_compliant: true **clusterrole_name: flannel is_whitelist: false is_compliant: true **clusterrole_name: rke2-cloud-controller-manager is_whitelist: true is_compliant: true **clusterrole_name: rke2-coredns-rke2-coredns is_whitelist: false is_compliant: true **clusterrole_name: rke2-coredns-rke2-coredns-autoscaler is_whitelist: false is_compliant: true **clusterrole_name: rke2-ingress-nginx is_whitelist: false is_compliant: true **clusterrole_name: rke2-snapshot-controller is_whitelist: false is_compliant: true **clusterrole_name: rke2-snapshot-validation-webhook is_whitelist: false 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: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: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:discovery is_whitelist: false is_compliant: true **clusterrole_name: system:heapster 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-proxy 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: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:rke2-controller is_whitelist: false is_compliant: true **clusterrole_name: system:rke2-metrics-server is_whitelist: false is_compliant: true **clusterrole_name: system:rke2-metrics-server-aggregated-reader 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: view is_whitelist: false is_compliant: true
是正措置:

可能な場合は、clusterrolesおよびroles内のワイルドカードの使用を特定のオブジェクトまたはアクションに置き換えてください。RKE2は、通常の操作に必要な次のクラスター ロールに例外を与えます: - rke2-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.4 ポッドの作成へのアクセスを最小限に抑える (自動化)

結果:WARN

修正:可能な限り、クラスター内のポッドオブジェクトへの作成アクセスを削除してください。

5.1.5 デフォルトのサービスアカウントが積極的に使用されていないことを確認してください。(自動化)

結果:PASS

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: false is_compliant: true **namespace: kube-node-lease service_account: default automountServiceAccountToken: false is_compliant: true **namespace: kube-public service_account: default automountServiceAccountToken: false is_compliant: true **namespace: kube-system service_account: default automountServiceAccountToken: false is_compliant: true
是正措置:

Kubernetes ワークロードが Kubernetes API サーバーへの特定のアクセスを必要とする場合は、明示的なサービスアカウントを作成してください。各デフォルトのサービスアカウントの設定を変更して、この値 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 # Skip pods with no service account if [ "$\{pod_service_account}" = "+++<none>+++" ]; then continue fi # 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 # Whitelist kube-system namespace as these pods are expected to contact the apiserver if [ "$\{pod_namespace}" = "kube-system" ]; then is_compliant="true" 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’に等しい

戻り値:
**namespace: kube-system pod_name: helm-install-rke2-canal-sf57z service_account: helm-rke2-canal pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-coredns-sc5xz service_account: helm-rke2-coredns pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-ingress-nginx-khgxr service_account: helm-rke2-ingress-nginx pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-metrics-server-s7drs service_account: helm-rke2-metrics-server pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-snapshot-controller-crd-vdm6s service_account: helm-rke2-snapshot-controller-crd pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-snapshot-controller-f9mkz service_account: helm-rke2-snapshot-controller pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-snapshot-validation-webhook-66gdl service_account: helm-rke2-snapshot-validation-webhook pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: rke2-canal-cv8xl service_account: canal pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-coredns-rke2-coredns-864fbd7785-tlfwz service_account: coredns pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-coredns-rke2-coredns-autoscaler-6c87968579-k2kf8 service_account: rke2-coredns-rke2-coredns-autoscaler pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-ingress-nginx-controller-4mq9l service_account: rke2-ingress-nginx pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: rke2-metrics-server-7f745dbddf-96zw8 service_account: rke2-metrics-server pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-snapshot-controller-7d6476d7cb-trhbn service_account: rke2-snapshot-controller pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-snapshot-validation-webhook-5649fbd66c-zrkf5 service_account: rke2-snapshot-validation-webhook pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true
是正措置:

サービスアカウントおよびサービスアカウントトークンをマウントする必要のないポッドの定義を修正し、`automountServiceAccountToken: false`を使ってマウントを無効にしてください。RKE2は、これらがapiserverに接続することが期待されるため、kube-systemネームスペースのServiceAccountに例外を与えます。CISモードのとき、RKE2は次のネームスペースのautomountServiceAccountTokenを無効にします: - kube-public、default、kube-node-lease ServiceAccountとPodの.specの両方がautomountServiceAccountTokenの値を指定している場合、Podのspecが優先されます。条件:Podは、次の条件を満たすときに準拠しています: - ServiceAccountがautomountServiceAccountToken: falseであり、PodがautomountServiceAccountToken: falseまたは未設定である - ServiceAccountがautomountServiceAccountToken: true/未設定であり、PodがautomountServiceAccountToken: falseである

5.1.7 system:masters グループの使用を避けてください(手動)

結果:WARN

補修:クラスター内のすべてのユーザーから system:masters グループを削除してください。

5.1.8 Kubernetes クラスター内での Bind、Impersonate、Escalate 権限の使用を制限してください(手動)

結果:WARN

補修:可能な限り、対象から impersonate、bind、escalate 権限を削除してください。

5.1.9 永続ボリュームの作成アクセスを最小限に抑えてください(手動)

結果:WARN

補修:可能な限り、クラスター内の PersistentVolume オブジェクトへの作成アクセスを削除してください。

5.1.10 ノードのプロキシサブリソースへのアクセスを最小限に抑えてください(手動)

結果:WARN

補修:可能な限り、ノードオブジェクトのプロキシサブリソースへのアクセスを削除してください。

5.1.11 証明書署名リクエストオブジェクトの承認サブリソースへのアクセスを最小限に抑えてください(手動)

結果:WARN

修正:可能な限り、証明書署名リクエストオブジェクトの承認サブリソースへのアクセスを削除してください。

5.1.12 Webhook設定オブジェクトへのアクセスを最小限に抑える(手動)

結果:WARN

是正措置:可能な限り、バリデーションウェブフック設定またはミューテーションウェブフック設定オブジェクトへのアクセスを削除してください。

5.1.13 サービスアカウントトークンの作成へのアクセスを最小限に抑えてください(手動)

結果:WARN

是正措置:可能な限り、サービスアカウントオブジェクトのトークンサブリソースへのアクセスを削除してください。

5.2 ポッドセキュリティ標準

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.allowPrivilegeEscalationtrue に設定されているコンテナの受け入れを制限します。

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.hostProcesstrue に設定されているコンテナの受け入れを制限します。

5.2.12 HostPathボリュームの受け入れを最小限に抑える(マニュアル)

結果:WARN

是正措置:ユーザーのワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、hostPath ボリュームを持つコンテナの受け入れを制限します。

5.2.13 ホストポートを使用するコンテナの受け入れを最小限に抑えます(手動)

結果:WARN

是正措置:ユーザーのワークロードがあるクラスター内の各ネームスペースにポリシーを追加し、`hostPort`セクションを使用するコンテナの受け入れを制限します。

5.3 ネットワークポリシーとCNI

5.3.1 使用中のCNIがNetworkPoliciesをサポートしていることを確認してください(手動)

結果:WARN

是正措置:使用中のCNIプラグインがネットワークポリシーをサポートしていない場合は、別のプラグインの使用を検討するか、Kubernetesクラスター内のトラフィックを制限するための代替メカニズムを見つける必要があります。

5.3.2 すべてのネームスペースにネットワークポリシーが定義されていることを確認します(手動)

結果:WARN

是正措置:ドキュメントに従い、必要に応じてNetworkPolicyオブジェクトを作成します。

5.4 シークレット管理

5.4.1 環境変数としてのシークレットよりもファイルとしてのシークレットを使用することを優先してください(手動)

結果:WARN

修正:可能であれば、アプリケーションコードを再記述して、環境変数ではなく、マウントされたシークレットファイルからシークレットを読み取るようにしてください。

5.4.2 外部シークレットストレージを検討してください(マニュアル)

結果:WARN

是正措置:クラウドプロバイダーまたはサードパーティのシークレット管理ソリューションが提供するシークレット管理オプションを参照してください。

5.5 拡張可能な受け入れ制御

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

5.7.3 PodおよびコンテナにSecurityContextを適用します(手動)

結果:WARN

是正措置:Kubernetesのドキュメントに従って、PodにSecurityContextを適用してください。推奨されるSecurityContextのリストについては、DockerコンテナのCISセキュリティベンチマークを参照してください。

5.7.4 デフォルトのネームスペースは使用しないでください(マニュアル)

結果:WARN

是正措置:Kubernetesリソースの適切な分離を可能にするためにネームスペースが作成されていることを確認し、すべての新しいリソースが特定のネームスペース内で作成されるようにしてください。