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.
HinweisStandardmäß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 ... -Ascannt 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: falsegesetzt, 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.
