TMA-KUBERNETES-1.2.4
Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate
高等級 1自動化kubernetes
說明
Enable certificate based kubelet authentication. Audited on control-plane nodes from the running process arguments (falls back to the kubeadm static pod manifest); SKIPs on nodes without that manifest.
檢查方式
稽核方法: Shell 指令
shell
set -f
a=$(ps -eo args 2>/dev/null | grep -E '^([^ ]*/)?kube-apiserver( |$)' | head -n 1)
[ -n "$a" ] || a=$(sed -n 's/^[[:space:]]*-[[:space:]]*"\{0,1\}\(--[^"]*\)"\{0,1\}[[:space:]]*$/\1/p' /etc/kubernetes/manifests/kube-apiserver.yaml | tr '\n' ' ')
[ -n "$a" ] || exit 1
g() { printf '%s\n' "$a" | awk -v k="--$1" '{for(i=1;i<=NF;i++){if($i==k&&i<NF)v=$(i+1); else if(index($i,k"=")==1)v=substr($i,length(k)+2)}} END{if(v!="")print v}'; }
has() { printf '%s\n' "$a" | awk -v k="--$1" '{for(i=1;i<=NF;i++) if($i==k||index($i,k"=")==1) f=1} END{exit !f}'; }
ok=1
v=$(g kubelet-client-certificate); [ -n "$v" ] || { echo "noncompliant: --kubelet-client-certificate not set"; ok=0; }
v=$(g kubelet-client-key); [ -n "$v" ] || { echo "noncompliant: --kubelet-client-key not set"; ok=0; }
if [ "$ok" -eq 1 ]; then echo compliant; fi- 預期輸出
compliant
修補方式
修補方法: 操作指南或基礎設施修補檔
Follow the Kubernetes documentation and set up the TLS connection between the apiserver and kubelets. Then, edit API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml on the Control Plane node and set the kubelet client certificate and key parameters as below. --kubelet-client-certificate=<path/to/client-certificate-file> --kubelet-client-key=<path/to/client-key-file>
屬性
- 作業系統
- 不限
- 標籤
- kubernetesapi-serverkubelet
- 參考資料
- CIS Kubernetes Benchmark v2.1.0 - 1.2.4 Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate
檢查此主機
請在您有權稽核的機器上執行此指令。掃描為唯讀操作。
shell
tmaegis scan --target kubernetes