Tutorial: Angeben vertraulicher Daten mithilfe von Secrets Manager-Secrets - Amazon ECS

Tutorial: Angeben vertraulicher Daten mithilfe von Secrets Manager-Secrets

Amazon ECS ermöglicht es Ihnen, sensible Daten in Ihre Container einzubringen, indem Sie Ihre sensiblen Daten in AWS Secrets Manager-Secrets speichern und dann in Ihrer Containerdefinition auf sie verweisen. Weitere Informationen finden Sie unter Angabe sensibler Daten.

Das folgende Tutorial zeigt, wie Sie ein Secrets Manager-Secret erstellen, in einer Amazon-ECS-Aufgabendefinition auf das Secret verweisen und es dann überprüfen, indem Sie die Umgebungsvariable in einem Container abfragen, der den Inhalt des Secrets anzeigt.

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass die folgenden Voraussetzungen erfüllt wurden:

Schritt 1: Erstellen eines Secrets Manager-Secrets

Sie können die Secrets Manager-Konsole verwenden, um ein Secret für Ihre sensiblen Daten zu erstellen. In diesem Tutorial erstellen wir ein grundlegendes Secret zum Speichern eines Benutzernamens und eines Passworts zum späteren Verweisen in einem Container. Weitere Informationen finden Sie unter Erstellen eines Basic Secrets im AWS Secrets Manager-Benutzerhandbuch.

So erstellen Sie ein Basis-Secret

Verwenden Sie Secrets Manager zum Erstellen eines Secrets für Ihre sensiblen Daten.

  1. Öffnen Sie die Secrets-Manager-Konsole unterhttps://console.aws.amazon.com/secretsmanager/.

  2. Wählen Sie Store a new secret (Ein neues Secret speichern).

  3. Wählen Sie für Select secret type (Secret-Typ auswählen) die Option Other type of secrets (Anderer Secret-Typ) aus.

  4. Wählen Sie Für Angabe der Schlüssel/Wert-Paare, die in diesem Geheimnis gespeichert werden sollen die Registerkarte Registerkarte Klartext und ersetzen Sie den vorhandenen Text durch den folgenden Text. Der hier angebene Textwert ist der Wert der Umgebungsvariable in Ihrem Container am Ende des Tutorials.

    password_value
  5. Wählen Sie Next (Weiter).

  6. Geben Sie für Secret name (Secret-Name) username_value ein und wählen Sie Next (Weiter). Der hier angegebene Secret-Namenswert ist der Name der Umgebungsvariable in Ihrem Container am Ende des Tutorials.

  7. Lassen Sie für Configure automatic rotation (Konfigurieren der automatischen Rotation) die Option Disable automatic rotation (Automatisches Rotieren deaktivieren) aktiviert und wählen Sie Next Weiter).

  8. Überprüfen Sie diese Einstellungen, und wählen Sie dann Store (Speichern) aus, um Ihre gesamte Eingabe als neues Secret in Secrets Manager zu speichern.

  9. Wählen Sie den Schlüssel aus, den Sie gerade erstellt haben, und speichern Sie den Secret ARN (Secret-ARN), um in der IAM-Richtlinie zur Ausgabenausführung und in der Aufgabendefinition in späteren Schritten darauf zu verweisen.

Schritt 2: Aktualisieren Ihrer IAM-Rolle zur Ausführung von Aufgaben

Damit Amazon ECS sensible Daten aus Ihrem Secrets Manager-Secret abrufen kann, benötigen Sie die Amazon-ECS-Aufgabenausführungsrolle und müssen in Ihrer Aufgabendefinition darauf verweisen. Dies ermöglicht dem Container-Agent das Abrufen der erforderlichen Secrets Manager-Ressourcen. Weitere Informationen zum Erstellen Ihrer IAM-Aufgabenausführungsrolle finden Sie unter IAM-Rolle für die Amazon-ECS-Aufgabenausführung.

In den folgenden Schritten wird angenommen, dass Sie die IAM-Aufgabenausführungsrolle bereits erstellt und korrekt konfiguriert haben.

Aktualisieren Ihrer IAM-Aufgabenausführungsrolle

Verwenden Sie die IAM-Konsole zum Aktualisieren Ihrer Aufgabenausführungsrolle mit den erforderlichen Berechtigungen.

  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) aus.

  3. Durchsuchen Sie die Liste der Rollen für ecsTaskExecutionRole und wählen Sie diese aus.

  4. Wählen Sie Permissions (Berechtigungen) und Add inline policy (Eingebundene Richtlinie hinzufügen) aus.

  5. Wählen Sie die Registerkarte JSON aus und geben Sie den folgenden JSON-Text an. Stellen Sie sicher, dass Sie den vollständigen ARN des Secrets Manager-Secrets angeben, das Sie in Schritt 1 erstellt haben.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:aws_account_id:secret:username_value-u9bH6K" ] } ] }
  6. Wählen Sie Review policy(Richtlinie prüfen). Geben Sie unter Name ECSSecretsTutorial an und wählen Sie dann Create policy (Richtlinie erstellen).

Schritt 3: Erstellen einer Amazon-ECS-Aufgabendefinition

Sie können die Amazon ECS-Konsole verwenden, um eine Aufgabendefinition zu erstellen, die auf ein Secrets Manager-Secret verweist.

So erstellen Sie eine Aufgabendefinition, die ein Secret angibt

Verwenden Sie die IAM-Konsole zum Aktualisieren Ihrer Aufgabenausführungsrolle mit den erforderlichen Berechtigungen.

  1. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/.

  2. Wählen Sie im linken Navigationsbereich Task Definitions (Aufgabendefinitionen) Create new Task Definition (Neue Aufgabendefinition erstellen).

  3. Wählen Sie auf der Seite Select launch type compatibility (Starttypkompatibilität auswählen) die Option EC2 und danach Next step (Nächster Schritt) aus.

  4. Wählen Sie Configure via JSON (Über JSON konfigurieren) und geben Sie folgende Aufgabendefinition in Form eines JSON-Texts ein. Dadurch wird sichergestellt, dass Sie den vollständigen ARN des Secrets Manager-Secrets angeben, den Sie in Schritt 1 erstellt haben, und die IAM-Aufgabenausführungsrolle, die Sie in Schritt 2 aktualisiert haben. Wählen Sie Save (Speichern) aus.

    { "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole", "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "cpu": 10, "secrets": [ { "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:username_value-u9bH6K", "name": "username_value" } ], "memory": 300, "image": "httpd:2.4", "essential": true, "name": "ecs-secrets-container" } ], "family": "ecs-secrets-tutorial" }
  5. Überprüfen Sie die Einstellungen und wählen Sie dann Create (Erstellen).

Schritt 4: Erstellen eines Amazon ECS-Clusters

Verwenden Sie die Amazon ECS-Konsole zum Erstellen eines Clusters, der eine Container-Instance zum Ausführen der Aufgabe enthält. Wenn Sie bereits über einen Cluster mit mindestens einer registrierten Container-Instance und den Ressourcen zum Ausführen einer Instance der für dieses Tutorial erstellten Aufgabendefinition verfügen, können Sie direkt zum nächsten Schritt gehen.

Für dieses Tutorial erstellen wir einen Cluster mit einer t2.micro-Container-Instance unter Verwendung des Amazon ECS-optimierten Amazon Linux 2-AMI.

So erstellen Sie einen Cluster

Verwenden Sie die Amazon ECS-Konsole zum Erstellen eines Clusters und registrieren Sie eine Container-Instance.

  1. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/.

  2. Wählen Sie auf der Navigationsleiste die Region aus, in der sich sowohl das Secrets Manager-Secret als auch die Amazon-ECS-Aufgabendefinition befindet, die Sie erstellt haben.

  3. Klicken Sie im Navigationsbereich auf Clusters (Cluster).

  4. Wählen Sie auf der Seite Clusters die Option Create Cluster aus.

  5. Wählen Sie unter Select cluster compatibility (Clusterkompatibilität auswählen) EC2 Linux + Networkingund dann Next Step (Nächster Schritt).

  6. Geben Sie auf der Seite Configure cluster (Cluster konfigurieren) für Cluster name (Clustername) ecs-secrets-tutorial ein.

  7. Wählen Sie unter EC2 instance type (EC2-Instance-Typ t2.micro.

  8. Wählen Sie unter Key pair (Schlüsselpaar) ein Schlüsselpaar, das der Container-Instance hinzugefügt werden soll.

    Wichtig

    Ein Schlüsselpaar ist erforderlich, um das Tutorial abzuschließen. Wenn Sie nicht bereits ein Schlüsselpaar erstellt haben, folgen Sie dem Link zur EC2-Konsole, um eines zu erstellen.

  9. Konfigurieren Sie im Abschnitt Networking die VPC für Ihren Cluster. Wählen Sie eine vorhandene VPC aus oder wählen Sie Create a new VPC (Neue VPC erstellen), um sie für das Tutorial zu verwenden.

    1. (Optional) Wenn Sie eine neue VPC erstellen, wählen Sie unter CIDR Block einen CIDR-Block für Ihre VPC aus. Weitere Informationen finden Sie unter Ihre VPC und Subnetze im Amazon VPC-Benutzerhandbuch.

    2. Wählen Sie unter Subnets die Subnetze zur Verwendung für Ihre VPC aus. Sie können diese Standardeinstellungen übernehmen und verwenden oder sie Ihren Anforderungen entsprechend ändern.

  10. Wählen Sie für Container instance IAM role (Container-Instance-IAM-Rolle) die vorhandene Container-Instance-IAM-Rolle oder wähleb Sie Create new role (Neue Rolle erstellen) aus, um eine erstellen zu lassen.

  11. Behalten Sie für alle anderen Felder die Standardwerte bei und klicken Sie auf Create (Erstellen).

Schritt 5: Ausführen einer Amazon ECS-Aufgabe

Sie können die Amazon ECS-Konsole verwenden, um eine Aufgabe mithilfe der Aufgabendefinition auszuführen, die Sie erstellt haben. In diesem Tutorial führen wir eine Aufgabe mit dem EC2-Starttyp aus und verwenden dazu den Cluster, den wir im vorherigen Schritt erstellt haben.

Ausführen einer Aufgabe

  1. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/.

  2. Wählen Sie im Navigationsbereich Task Definitions (Aufgabendefinitionen) und anschließend die ecs-secrets-tutorial-Aufgabendefinition aus, die wir erstellt haben.

  3. Wählen Sie die neueste Revision der Aufgabendefinition aus und wählen Sie dann Actions (Aktionen) und danach Run Task (Aufgabe ausführen) aus.

  4. Wählen Sie unter Launch Type EC2 aus.

  5. Wählen Sie für Cluster den ecs-secrets-tutorial-Cluster, den wir im vorherigen Schritt erstellt haben.

  6. Deaktivieren Sie für Task tagging configuration (Konfiguration der Aufgabenmarkierung) die Option Enable ECS managed tags (Aktivieren von ECS verwalteter Tags). Sie sind für die Zwecke dieses Tutorials nicht erforderlich.

  7. Überprüfen Sie Ihre Task-Informationen und wählen Sie Run Task aus.

    Anmerkung

    Wenn Ihre Aufgabe von PENDING zu STOPPED wechselt oder wenn sie einen Status PENDING anzeigt und dann von der Liste der Aufgaben verschwindet, wird Ihre Aufgabe möglicherweise aufgrund eines Fehlers gestoppt. Weitere Informationen finden Sie im Abschnitt zur Fehlerbehebung unter Überprüfen gestoppter Aufgaben nach Fehlern.

Schritt 6: Überprüfen

Anhand folgender Schritte können Sie überprüfen, ob alle Schritte erfolgreich abgeschlossen wurden und die Umgebungsvariable in Ihrem Container ordnungsgemäß erstellt wurde.

Überprüfen, ob die Umgebungsvariable erstellt wurde

  1. Suchen Sie nach der öffentlichen IP-Adresse oder DNS-Adresse für Ihre Container-Instance.

    1. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/.

    2. Wählen Sie den ecs-secrets-tutorial-Cluster aus, der Ihre Container-Instance hostet.

    3. Wählen Sie auf der Seite Cluster ECS Instances aus.

    4. Wählen Sie in der Spalte Container Instance die Container-Instance aus, mit der eine Verbindung hergestellt werden soll.

    5. Zeichnen Sie auf der Seite Container Instance die Einstellung von Public IP oder Public DNS für Ihre Instance auf.

  2. Stellen Sie auf einem macOS- oder Linux-Computer mit dem folgenden Befehl eine Verbindung mit Ihrer Instance her und ersetzen Sie den Pfad zu Ihrem privaten Schlüssel und die öffentliche Adresse für Ihre Instance:

    $ ssh -i /path/to/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

    Weitere Informationen zur Verwendung eines Windows-Computers finden Sie unter Herstellen einer Verbindung mit Ihrer Linux-Instance von Windows mit PuTTY im Amazon EC2-Benutzerhandbuch für Linux-Instances.

    Wichtig

    Weitere Informationen zu Problemen beim Herstellen der Verbindung mit Ihrer Instance finden Sie unter Beheben von Verbindungsproblemen mit Ihrer Instance im Amazon EC2-Benutzerhandbuch für Linux-Instances.

  3. Erstellen Sie eine Liste der Container, die auf der Instance ausgeführt werden. Notieren Sie die Container-ID für ecs-secrets-tutorial-Container.

    docker ps
  4. Stellen Sie mithilfe der Container-ID aus der Ausgabe des vorherigen Schritts eine Verbindung mit dem ecs-secrets-tutorial-Container her.

    docker exec -it container_ID /bin/bash
  5. Verwenden Sie den echo-Befehl, um den Wert der Umgebungsvariable zu drucken.

    echo $username_value

    Wenn das Tutorial erfolgreich war, sollten Sie die folgende Meldung sehen:

    password_value
    Anmerkung

    Alternativ können Sie alle Umgebungsvariablen in Ihrem Container mithilfe des Befehls env (oder printenv) auflisten.

Schritt 7: Bereinigen

Wenn Sie mit diesem Tutorial fertig sind, sollten Sie die zugehörigen Ressourcen bereinigen, um zu vermeiden, dass Gebühren für ungenutzte Ressourcen anfallen.

Bereinigen der Ressourcen

  1. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/.

  2. Wählen Sie den von Ihnen erstellten ecs-secrets-tutorial cluster (ecs-secrets-tutorial-Cluster) aus.

  3. Klicken Sie auf derCluster auf Delete Cluster (Cluster löschen).

  4. Geben Sie die Bestätigungsnachricht der Löschung des Clusters ein und wählen Sie Delete (Löschen). Dies kann einige Minuten dauern, bereinigt allerdings alle Amazon ECS-Cluster-Ressourcen.

  5. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  6. Wählen Sie im Navigationsbereich Roles (Rollen) aus.

  7. Durchsuchen Sie die Liste der Rollen für ecsTaskExecutionRole und wählen Sie diese aus.

  8. Wählen Sie Permissions (Berechtigungen), dann das X neben ECSSecretsTutorial. Wählen Sie Remove (Entfernen), um das Entfernen der eingebundenen Richtlinie zu bestätigen.

  9. Öffnen Sie die Secrets-Manager-Konsole unterhttps://console.aws.amazon.com/secretsmanager/.

  10. Wählen Sie das von Ihnen erstellte username_value-Secret und Actions (Aktionen), Delete secret (Secret löschen).