‫Alles
‫klar, also eine neue Funktion in 1. 13. 1 war volle Unterstützung für Geheimnisse.
‫Wenn ich eine Tag-Line erstellen müsste, ist dies im Grunde die einfachste und sicherste Lösung, um Geheimnisse in Swarm zu
‫speichern. „Ich sage,
‫es ist am einfachsten, weil es in Swarm integriert ist, sofort
‫einsatzbereit ist und Sie nichts tun müssen, um es zu verwenden. Solange Sie Ihren Schwarm und Ihre On-Version 1
‫initialisiert haben. 13
‫oder neuer, du hast Geheimnisse. Ich sage, es ist sicher, weil es von Grund auf so konzipiert wurde, dass
‫es auf der Festplatte verschlüsselt wird, um während der Übertragung verschlüsselt zu werden und nur an den Stellen verfügbar zu sein, an denen es sein muss.
‫Und genau das brauchen wir.
‫Was ist ein Geheimnis? In diesem Fall ist es ein Geheimnis, alles, was Sie nicht wollen, auf
‫der Titelseite einer Zeitung zu klassifizieren. Wenn es auf die Titelseite kam und Sie es ändern
‫mussten, ist das ein Geheimnis.
‫Es ist ein Benutzername oder
‫ein Passwort, es ist ein TLS-Zertifikat oder der
‫Schlüssel dazu, es
‫ist ein SSH-Schlüssel, es ist ein Twitter-API-Schlüssel, es ist ein Amazon-Schlüssel, alles, was Sie benötigen, um die Konnektivität zwischen Dingen zu ermöglichen,
‫ist wahrscheinlich ein Geheimnis, und Sie sollten es tun beschütze es.
‫Bis jetzt hatten wir nicht viele großartige Optionen für Swarm.
‫Es gibt auf jeden Fall viele Optionen, wie Vault und andere großartige Tools zum Speichern von Geheimnissen,
‫aber sie wurden nicht eingebaut und sie erforderten eine separate Infrastruktureinrichtung, damit Sie sie
‫überhaupt nutzen können.
‫Wir können hier also alles speichern, was ein String oder eine Binärdatei ist. 5 MB groß.
‫Das Coolste daran ist, dass Ihre App nicht neu geschrieben werden muss, um sie verwenden
‫zu können.
‫Sie müssen Ihre App nicht mit einem Webdienst an einer anderen Stelle sprechen lassen, um diese abzurufen.
‫Also mal sehen, wie es funktioniert.
‫Ab 1. 13. 0 Die Swarm Raft-Datenbank ist standardmäßig auf der Festplatte verschlüsselt. Wenn Sie Docker installieren und eine Schwarminitialisierung
‫durchführen, wie wir es zuvor getan haben, handelt es
‫sich um eine verschlüsselte Datenbank.
‫Und wenn der Dienst heruntergefahren wird, wird er mit den sicher gespeicherten Schlüsseln verschlüsselt.
‫Sie werden nur auf der Festplatte der Manager-Knoten gespeichert und sind die einzigen, die über die Schlüssel verfügen,
‫um sie zu entsperren oder zu entschlüsseln.
‫Dies ist in Swarm bereits vorhanden. Die Schlüssel werden jedoch grundsätzlich
‫über die Steuerebene oder die verschlüsselte TLS-Netzwerkkommunikation zwischen den Managern und
‫den Mitarbeitern an die Container weitergeleitet. Da diese Verbindung bereits sicher war und bereits TLS und die
‫gegenseitige PKI-Authentifizierung verwendet wurde, war dies eine hervorragende Möglichkeit, diesen vorhandenen Kanal zu nutzen, um diese Geheimnisse in unsere Container zu leiten.
‫Die Art und Weise, wie wir sie umgehen, ist, dass wir sie zuerst mithilfe der Docker-Geheimnisse-Befehle in die
‫Swarm-Datenbank einfügen.
‫Dann weisen wir sie den Diensten zu, unabhängig davon, ob wir die Dienstbefehle selbst oder eine Stapeldatei
‫verwenden, um Swarm mitzuteilen, wer dieses Geheimnis verwenden darf. Der Schlüssel dabei ist, dass, nur weil sich ein Container auf einem
‫Host oder auf einem Knoten befindet und Sie den Schlüssel diesem Service zugewiesen haben, andere Container nicht auf
‫ihn zugreifen können.
‫Da dies in die Docker Engine integriert ist, speichert der Docker Worker diesen Schlüssel nur im Arbeitsspeicher und gelangt nur
‫zu den Containern auf dem Knoten, der sie benötigt.
‫Wie sie nun im Dateisystem für den Container angezeigt werden, sieht es für Ihre Apps im Container wie eine
‫Datei auf der Festplatte aus.
‫Aber das ist es eigentlich nicht. Sie laufen nicht wirklich auf der Festplatte. Sie befinden sich nur mit
‫einem RAMFS-Dateisystem im Arbeitsspeicher und werden unter dem Verzeichnis / run / secrets abgerufen, in dem standardmäßig der Name angegeben wird,
‫den Sie dem Geheimnis als Datei gegeben haben.
‫Wenn Sie dann nur auf diese Datei zugreifen, sehen Sie das eine Geheimnis, das darin enthalten ist.
‫Wenn Sie sich das wie einen
‫Schlüsselwertspeicher vorstellen, ist der Schlüssel der Name der Datei und der Wert der Inhalt.
‫Wir können auch Aliase einrichten, so dass wir mehrere Namen für denselben Schlüssel haben können, und wir werden später sehen, wie das
‫ins Spiel kommt.
‫Wenn Sie für die lokale Entwicklung eine Stapeldatei verwenden, die geheime Zuweisungen enthält, funktioniert sie tatsächlich in
‫Docker Compose auf Ihrem lokalen Computer.
‫Jetzt sollte docker-compose, die Befehlszeile, niemals in der Produktion auf einem Produktionsserver verwendet werden.
‫Insbesondere in diesem Fall handelt es sich tatsächlich um gefälschte Sicherheit.
‫Wir möchten also, dass der Docker-Entwickler oder der Docker-Benutzer auf seinem Computer die Stack-Dateien so
‫oft wie möglich verwenden kann.
‫Die Container, die Sie auf Ihrem lokalen Computer ausführen, sehen die Geheimnisse also genau
‫wie in Swarm.
‫Wir haben jedoch keinen Swarm auf unserem lokalen Rechner, es sei denn, wir initialisieren ihn dort, was
‫die meisten Leute nicht tun werden.
‫Die Art und Weise, wie wir die Geheimnisse speichern, befindet sich in der Swarm-Datenbank.
‫Das mag für dich offensichtlich sein, aber Geheimnisse hängen von Swarm ab. Es ist nur ein Schwarm. Wenn du keinen Schwarm
‫hast, kannst du keine Geheimnisse benutzen.
‫Der Befehl docker-compose hat jedoch eine Problemumgehung, bei der die Geheimnisse in einer Klartextdatei tatsächlich in den
‫lokalen Container eingebunden werden.
‫Das ist zwar nicht sicher, aber es ermöglicht uns, Geheimnisse lokal auf unserem Computer zu verwenden.
‫Es ist einfach nicht etwas, das Sie in der Produktion verwenden möchten, weshalb wir den sicheren Speicher für Swarm
‫haben.