Ansichten:
Profilanwendbarkeit: Stufe 2
Kubernetes unterstützt das Einbinden von Geheimnissen als Datenvolumen oder als Umgebungsvariablen. Minimieren Sie die Verwendung von Geheimnissen als Umgebungsvariablen.
Es ist relativ üblich, dass Anwendungs-Code seine Umgebung protokolliert (insbesondere im Falle eines Fehlers). Dies schließt alle geheimen Werte ein, die als Umgebungsvariablen übergeben werden, sodass Geheimnisse leicht für jeden Benutzer oder jede Entität, die Zugriff auf die Protokolle hat, offengelegt werden können.
Hinweis
Hinweis
Standardmäßig sind Geheimnisse nicht definiert.

Auswirkung

Anwendungscode, der erwartet, Geheimnisse in Form von Umgebungsvariablen zu lesen, müsste geändert werden.

Prüfung

Führen Sie den folgenden Befehl aus, um Verweise auf Objekte zu finden, die Umgebungsvariablen verwenden, die aus Geheimnissen definiert sind.
echo -e "NAMESPACE\tPOD\tCONTAINER"
kubectl get pods -A -o jsonpath='{range .items[?(@.spec.containers[*].env[*].valueFrom.secretKeyRef)]}{.metadata.name space}{"\t"}{.metadata.name}{"\t"}{.spec.containers[*].name}{"\n"}{end}'
Beispielausgabe:
NAMESPACE POD CONTAINER default my-app-588f67fd8d-vqc6k my-app-container prod api-6d8b4f79cc-def34 api-container

Wiederherstellung

Wenn möglich, schreiben Sie den Anwendungscode so um, dass Geheimnisse aus eingebundenen Geheimdateien gelesen werden, anstatt aus Umgebungsvariablen.