Blog
Wie man Geheimnisse aus dem AWS Parameter Store in Container in ECS bekommt

Bei AWS verwenden wir oft den AWS Parameter Store, um Geheimnisse sicher zu speichern. Aber der Zugriff auf die Geheimnisse von einer Anwendung aus, die in ECS läuft, ist ziemlich umständlich. Sie müssen die AWS SSM API entweder in der Anwendung oder im Entrypoint-Skript des Containers aufrufen. In diesem Blog zeigen wir Ihnen, wie Sie mit einem einfachen Dienstprogramm die Verweise auf die Geheimnisse als Umgebungsvariablen angeben können. Dabei können Sie sogar sinnvolle Standardwerte festlegen.
Wie funktioniert das?
Um das Dienstprogramm zu verwenden, folgen Sie diesen beiden Schritten:
- binden Sie die ausführbare Datei in Ihren Container ein und machen Sie sie zu Ihrem Container-Einstiegspunkt
- Definieren Sie Umgebungsvariablen mit einem URI unter Verwendung des ssm: Protokolls
Einbinden der ausführbaren Datei
Um das Dienstprogramm in Ihren Container einzubinden und es zu Ihrem Einstiegspunkt zu machen, fügen Sie die folgenden Zeilen zu Ihrer Dockerdatei hinzu:
FROM docker.io/binxio/ssm-get-parameter:0.2.3 AS ssm
FROM alpine
COPY --from=ssm /ssm-get-parameter /usr/local/bin
ENTRYPOINT [ "/usr/local/bin/entrypoint" ]
Stellen Sie sicher, dass Sie den alten Einstiegspunkt in die CMD des Containers verschieben.
Definieren Sie die Umgebungsvariable
Um die Geheimnisse in Ihrem Container abzurufen, definieren Sie eine oder mehrere Umgebungsvariablen mit einem URI, der das ssm: Protokoll verwendet:
ENV PGPASSWORD=ssm:///postgres/root/password
Wenn die Parameter nicht abgerufen werden können, wird der Container mit einer Fehlermeldung beendet. Wenn Sie fortfahren möchten, geben Sie einen default Parameter an:
ENV PGPASSWORD=ssm:///postgres/root/password?default=postgres
Damit können Sie den Container außerhalb von AWS ausführen. Sie können den Inhalt des geheimen
auch in eine Datei schreiben, indem Sie den Parameter destination angeben.
ENV PRIVATE_KEY=ssm:///private-key?destination=/tmp/private-key
Der Wert der Umgebungsvariablen wird durch den Namen der Datei ersetzt, in diesem Fall /tmp/private-key.
Wenn der Parameter nicht abgerufen werden kann und die Zieldatei bereits existiert, wird der Inhalt dieser Datei
als Standardwert verwendet.
Wenn Sie schließlich das Geheimnis in einer Zeichenfolge benötigen, können Sie den Parameter template verwenden:
ENV PGPASSFILE=ssm:///postgres/root/password?
template=localhost:5432:kong:kong:{{.}}%0a&
destination=$HOME/.pgpass&
default=postgres
Fazit
Mit dem Dienstprogramm ssm-get-parameter haben Sie eine nicht-intrusive Möglichkeit, Geheimnisse aus dem Parameterspeicher abzurufen und sie als Umgebungsvariablenwerte oder in einer Datei in Ihrem Container zu speichern. Mit der Option default können Sie sinnvolle Vorgaben machen, die es Ihnen ermöglichen, Ihren Container unabhängig von AWS zu betreiben.
Wenn Sie dasselbe in Google Cloud Platform suchen, lesen Sie , wie Sie Geheimnisse aus dem Google Secret Manager in Ihren Container bekommen.
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Unsere Ideen
Weitere Blogs
Contact



