Ansichten:
Profilanwendbarkeit: Stufe 1
Servicekontotoken sollten nicht in Pods eingebunden werden, es sei denn, die im Pod ausgeführte Arbeitslast muss explizit mit dem API-Server kommunizieren
Das Einbinden von Dienstkontotoken in Pods kann eine Möglichkeit für Rechteausweitung bieten, bei der ein Angreifer in der Lage ist, einen einzelnen Pod im Cluster zu kompromittieren. Das Vermeiden des Einbindens dieser Token beseitigt diese Angriffsmöglichkeit.
Hinweis
Hinweis
Standardmäßig wird in allen Pods ein Servicekonto-Token eingebunden.

Auswirkung

Pods, die ohne Servicekonto-Token bereitgestellt werden, können nicht mit dem API-Server kommunizieren, es sei denn, die Ressource ist für nicht authentifizierte Prinzipale verfügbar.

Prüfung

Überprüfen Sie Pod- und Service-Account-Objekte im Cluster und stellen Sie sicher, dass die folgende Option gesetzt ist, es sei denn, die Ressource erfordert ausdrücklich diesen Zugriff:
automountServiceAccountToken: false
echo "=== ServiceAccounts with automountServiceAccountToken=false ==="
kubectl get sa -A -o jsonpath='{range .items[?(@.automountServiceAccountToken==false)]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}' \
  | sort | awk -F'\t' '{printf "%-25s %-40s\n", $1, $2}'
echo "=== Pods with automountServiceAccountToken=false ==="
kubectl get pods -A -o jsonpath='{range .items[?(@.spec.automountServiceAccountToken==false)]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}' \
  | sort | awk -F'\t' '{printf "%-25s %-40s\n", $1, $2}'
  • kubectl get ... -A scannt alle Namespaces.
  • jsonpath-Filter für automountServiceAccountToken == false.
  • awk formatiert die Ausgabe in ausgerichtete Spalten.
  • Wenn ein Abschnitt leer ist, wurden keine Objekte explizit auf automountServiceAccountToken: false gesetzt, was bedeutet, dass sie standardmäßig weiterhin Tokens automatisch einbinden und möglicherweise eine Behebung erforderlich ist.
Beispielausgabe:
=== ServiceAccounts with automountServiceAccountToken=false ===
NAMESPACE                 SERVICEACCOUNT
-------------------------  ----------------------------------------
default                   default
kube-system               metrics-reader

=== Pods with automountServiceAccountToken=false ===
NAMESPACE                 POD
-------------------------  ----------------------------------------
dev                       api-service
prod                      nginx-test

Wiederherstellung

Ändern Sie die Definition von Pods und Dienstkonten, die keine Dienstkontotoken einbinden müssen, um sie zu deaktivieren.