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.
HinweisStandardmäß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.
