Immer wenn Sie eine Compose-Datei teilen, gibt es zwei Artefakte: das, das Sie geschrieben haben, und das, das ein Werkzeug nach dem Ersetzen von Variablen erzeugt. Das zweite ist oft sensibler als das erste, und genau das hängen Menschen in einen Problembericht, ohne es zu lesen. Wer nur die Quelldatei prüft, prüft das falsche Dokument.

Vergleichen Sie, was jede Kopie enthalten kann, bevor Sie entscheiden, was zu entfernen ist.

Das gerenderte Modell ist ein anderes Dokument

Compose löst Umgebungsvariablen auf, führt Überschreibungsdateien zusammen und erzeugt eine effektive Konfiguration, die ein Leser nicht mehr von handgeschriebenen Werten unterscheiden kann. Ein Verweis wie ein Variablenname in der Quelle wird in der Ausgabe zum Kontotoken selbst. Die Struktur, die die Datei für die Diagnose nützlich macht, übersteht diese Umwandlung; alles, was nie darin hätte sein sollen, übersteht sie ebenfalls.

Rendern Sie die Datei selbst, bevor Sie sie anhängen, und behandeln Sie diese Ausgabe als das zu prüfende Artefakt. Wenn Sie sie nicht rendern können, können Sie nicht wissen, was Sie veröffentlichen werden.

Geheimnisse stecken an mehr Stellen als im Schlüsselfeld

Beginnen Sie mit dem Offensichtlichen: private Schlüssel, vorab geteilte Schlüssel, Token, Passwörter und Verbindungs-URLs, die Anmeldedaten einbetten. Schauen Sie dann auf alles, worauf die Datei verweist, denn ein Verweis ist keine Schwärzung. Eine in den Dienst eingebundene Umgebungsdatei, eine vom Host eingebundene Konfigurationsdatei, ein Label mit einem Token und ein Kommandoargument mit einem Passwort reisen alle mit der Bereitstellung, selbst wenn das YAML sauber aussieht. Ein Schlüssel, der in eine Variable mit beruhigendem Namen eingefügt wurde, ist weiterhin ein Schlüssel.

Host-Pfade und Dienstnamen verraten eine zweite Art von Information. Ein Home-Verzeichnisname, ein interner Hostname oder ein Netzbereich können eine Person oder eine Organisation identifizieren, ohne eine einzige Anmeldedaten zu enthalten, und dieser Kontext ist aus demselben Grund entfernungswürdig.

Eine Geheimnisdeklaration ist nicht das Geheimnis

Compose-Geheimnisobjekte trennen die Deklaration vom Material: Der Dienst erhält einen Pfad oder ein Ziel, und der Inhalt lebt woanders. Die Deklaration zu behalten und das Material zu ersetzen ist meist der richtige Tausch, weil der Prüfer sehen muss, dass ein Geheimnis existiert und wie es eingebunden ist. Was nicht überleben darf, ist der Inhalt selbst.

Labels und Kommentare verdienen dieselbe Behandlung. Ein Kommentar, der sagt, welcher Tresorpfad den Produktionsschlüssel hält, sagt einem Angreifer, wo er nachsehen soll, auch wenn er keinen Schlüssel enthält.

Behalten Sie die Form, damit die Datei noch diagnostiziert

Eine Schwärzung, die den Netzwerkmodus, die Image-Version oder die Capability-Einstellungen entfernt, erzeugt eine Datei, mit der niemand debuggen kann. Ersetzen Sie die sensiblen Werte und behalten Sie die Beziehungen: welcher Dienst was einbindet, welchem Netzwerk er beitritt, welches Gerät er braucht. Das ist der Teil, den ein Leser nutzt, um eine fehlende Route oder ein nicht verfügbares Gerät zu erklären. Es ist auch die Version, die ein Kollege mit seiner eigenen funktionierenden Bereitstellung vergleichen kann.

docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml

Setzen Sie die geschwärzte Kopie nicht ein, als wäre sie das funktionierende Original. Sie ist eine Beschreibung, und eine Beschreibung, die bearbeitet wurde, um sicher auszusehen, wird auf Arten scheitern, die wie Konfigurationsfehler aussehen.

Wenn Material offengelegt wurde, ersetzen Sie es

Das Entfernen des Anhangs entfernt nicht die Kopien, die andere bereits gemacht haben, und Mirrors und Caches behalten ihre eigenen. Nutzen Sie den Widerrufs- und Ersetzungsprozess des Ausstellers für alles, was durchgesickert ist, und aktualisieren Sie dann die Bereitstellung. Die Reihenfolge zählt, denn erst ersetzen und später widerrufen lässt ein Fenster mit zwei gültigen Anmeldedaten.

In Support-Threads beginnen Sie mit dem genauen Fehler, der Image-Version, dem Netzwerkmodus und der einen nicht geheimen Einstellung, die zählt. Diese Kombination erklärt ein fehlendes Gerät oder eine kaputte Route viel häufiger als der Schlüssel.

Ähnliche Artikel