Fast jede Anwendung benötigt eine Art von Geheimnis oder Geheimnissen, um ihre Arbeit zu erledigen. Es gibt alle möglichen Arten, diese den Containern zur Verfügung zu stellen, aber es läuft alles auf die folgenden fünf hinaus:
- Speichern Sie die Geheimnisse innerhalb des Bildes
- Liefern Sie die Geheimnisse über ENV-Variablen
- Geben Sie die Geheimnisse durch Volumenhalterungen an
- Verwenden Sie eine Datei zur Verschlüsselung von Geheimnissen
- Verwenden Sie einen Geheimnisspeicher
Eine vollständige Beschreibung und Erläuterung finden Sie im folgenden Beitrag . Je nach Kontext können alle fünf Optionen funktionieren oder als gut genug angesehen werden. Meiner Meinung nach können Sie sich nur für die Option 5 "Geheimnisse speichern" entscheiden, wenn Sie es richtig machen und sicher, flexibel und kontrolliert sein wollen. Wenn Sie sich für diese Methode entscheiden, haben Sie verschiedene Möglichkeiten, dies zu erreichen. Wie im obigen Beitrag erwähnt, läuft es auf Folgendes hinaus:
- Verwenden Sie eine Form von S3, mit oder ohne Verschlüsselung. Für mehr Informationen siehe
- HashiCorp Tresor
AWS hat einen Service namens Parameter Store veröffentlicht, der zwar nicht so ausgefeilt ist wie Vault, aber dennoch seinen Zweck erfüllt. Wenn Sie gerade erst anfangen oder die Dinge einfach halten wollen, sollten Sie den
Parameter speichern
Mit Parameter Store können Sie Schlüsselwertdaten in einem Schlüsselwertspeicher speichern, wobei die Werte mit KMS verschlüsselt werden. Da Parameter Store IAM verwendet, eignet er sich hervorragend für AWS ECS, da Sie den Zugriff auf die Secrets pro Container steuern können.
Dockerfy
Ohne das Rad neu erfinden zu wollen, haben wir die einfache, aber nützliche App "dockerfy" genommen und sie erweitert. Weitere Informationen zu Dockerfy finden Sie hier. Dockerfy verarbeitet bereits ENVs und geheime Dateien und verwendet Vorlagen für die einfache Verwendung von Geheimnissen.
Leider hatte es keine AWS Parameter Store Integration, aber wir haben uns darum gekümmert, wie Sie in diesem PR
sehen können. Sie können den Parameter Store verwenden und ihn mit den Funktionen von Dockerfy kombinieren, um Ihre Geheimnisse mit Hilfe einer Vorlage hinzuzufügen, aber wenn Sie ein einfaches Kommandozeilengeheimnis benötigen, finden Sie hier ein Beispiel.
Dockerfile:
FROM socialcode/nginx-with-dockerfy
ENTRYPOINT [ "dockerfy", "--aws-secret-prefix", "PROD_" -- ]
CMD [ "/bin/echo", "{{ AWS_Secret.db_password }}" ]
Um den obigen Docker-Container zu verwenden, speichern Sie ein Passwort im Parameter Store mit dem Namen "PROD_db_password". Stellen Sie dann die AWS-Schlüssel zur Verfügung oder führen Sie ihn auf einer EC2-Instanz oder einem ECS-Service mit den entsprechenden IAM-Rechten aus und sehen Sie, wie das Geheimnis ausgegeben wird.
Verfasst von
Armin Coralic
Contact



