Angeben sensibler Daten mithilfe des Systems Manager-Parameter Stores - Amazon ECS

Angeben sensibler Daten mithilfe des Systems Manager-Parameter Stores

Sie können Amazon ECS verwenden, um sensible Daten in Ihre Container einzubringen, indem Sie Ihre sensiblen Daten in AWS Systems Manager-Parameter Store-Parametern speichern und dann in Ihrer Containerdefinition auf sie verweisen.

Überlegungen zum Angeben sensibler Daten mithilfe des Systems Manager-Parameter Stores

Bei der Angabe sensibler Daten für Container mit Systems Manager-Parameter Store-Parametern sollte Folgendes berücksichtigt werden.

  • Der Parameter-Store-Parameter von Systems Manager muss im selben Konto vorhanden sein, in dem die Aufgaben ausgeführt werden.

  • Für Aufgaben, die auf Fargate gehostet werden, erfordert diese Funktion, dass Ihre Aufgabe die Plattformversion 1.3.0 oder höher (für Linux) oder 1.0.0 oder höher (für Windows) verwendet. Weitere Informationen finden Sie unter AWS Fargate-Plattformversionen.

  • Sensible Daten werden beim ersten Start des Containers an diesen übergeben. Wenn der geheime oder der Parameter Store-Parameter aktualisiert oder rotiert wird, erhält der Container nicht automatisch den aktualisierten Wert. Sie müssen eine neue Aufgabe starten. Alternativ können Sie, wenn Ihre Aufgabe Teil eines Services ist, den Service aktualisieren und die Option Force new deployment (Neue Bereitstellung erzwingen) auswählen, um den Service zu zwingen, eine neue Aufgabe zu starten.

Erforderliche IAM-Berechtigungen für Amazon ECS-Secrets

Zum Verwenden dieser Funktion benötigen Sie die Amazon-ECS-Aufgabenausführungsrolle und müssen in Ihrer Aufgabendefinition auf sie verweisen. Dies ermöglicht dem Container-Agent das Abrufen der erforderlichen AWS Systems Manager-Ressourcen. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon-ECS-Aufgabenausführung.

Um Zugriff auf die von Ihnen erstellten AWS Systems Manager Parameter Store-Parameter zu erhalten, fügen Sie der Aufgabenausführungsrolle manuell die folgenden Berechtigungen als Inline Richtlinie hinzu. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien.

  • ssm:GetParameters: Erforderlich, wenn in einer Aufgabendefinition auf einen Parameter Store-Parameter von Systems Manager verwiesen wird.

  • secretsmanager:GetSecretValue: Erforderlich, wenn Sie direkt auf ein Secrets Manager-Secret verweisen oder wenn der Parameter Systems Manager Parameterspeicher in einer Aufgabendefinition auf ein Secrets Manager-Secret verweist.

  • kms:Decrypt: Nur erforderlich, wenn Ihr Secret einen benutzerdefinierten KMS-Schlüssel verwendet und nicht den Standardschlüssel. Der ARN für Ihren benutzerdefinierten Schlüssel muss als Ressource hinzugefügt werden.

Das folgende Beispiel einer Inline-Richtlinie fügt die erforderlichen Berechtigungen hinzu:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter_name>", "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>", "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>" ] } ] }

Injizieren sensibler Daten als Umgebungsvariable

Geben Sie in Ihrer Containerdefinition secrets mit dem Namen der im Container zu setzenden Umgebungsvariablen und dem vollständigen Amazon-Ressourcennamen (ARN) des Systems Manager-Parameter Store-Parameters an, der die sensiblen Daten enthält, die dem Container präsentiert werden sollen.

Im Folgenden finden Sie einen Ausschnitt einer Aufgabendefinition mit dem Format, das beim Verweisen auf einen Systems Manager Parameter Store-Parameter verwendet wird. Wenn sich der Systems Manager Parameter Store-Parameter in der gleichen Region wie die Aufgabe befindet, die Sie starten, können Sie entweder den vollständigen ARN oder den Namen des Parameters verwenden. Wenn der Parameter in einer anderen Region existiert, muss der volle ARN angegeben werden.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }

Injizieren sensibler Daten in einer Protokollkonfiguration

Beim Angeben von logConfiguration können Sie secretOptions in Ihrer Containerdefinition mit dem Namen der im Container festzulegenden Protokolltreiberoption und dem vollständigen Amazon-Ressourcennamen (ARN) des Systems Manager-Parameter Store-Parameters angeben, in denen die sensiblen Daten enthalten sind, die dem Container präsentiert werden sollen.

Wichtig

Wenn sich der Systems Manager Parameter Store-Parameter in der gleichen AWS-Region wie die Aufgabe befindet, die Sie starten, können Sie entweder den vollständigen ARN oder den Namen des Parameters verwenden. Wenn der Parameter in einer anderen Region existiert, muss der volle ARN angegeben werden.

Im Folgenden finden Sie einen Ausschnitt einer Aufgabendefinition mit dem Format beim Verweisen auf einen Systems Manager Parameter Store-Parameter.

{ "containerDefinitions": [{ "logConfiguration": [{ "logDriver": "fluentd", "options": { "tag": "fluentd demo" }, "secretOptions": [{ "name": "fluentd-address", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }] }

Erstellen eines AWS Systems Manager Parameter Store-Parameters

Sie können die AWS Systems Manager-Konsole verwenden, um einen Systems Manager Parameter Store-Parameter für Ihre sensiblen Daten zu erstellen. Weitere Informationen finden Sie unter Walkthrough: Erstellen und Verwenden eines Parameter in einem Befehl (Konsole) im AWS Systems Manager-Benutzerhandbuch.

So erstellen Sie einen Parameter Store-Parameter

  1. Öffnen Sie die AWS Systems Manager-Konsole unter https://console.aws.amazon.com/systems-manager/.

  2. Wählen Sie im Navigationsbereich Parameter Store (Parameterspeicher) und dann Create parameter (Parameter erstellen).

  3. Geben Sie für Name eine Hierarchie und einen Parameternamen ein (z. B. /test/database_password).

  4. Geben Sie unter Description (Beschreibung) eine optionale Beschreibung ein.

  5. Wählen Sie unter Type die Option String, StringList oder SecureString.

    Anmerkung
    • Wenn Sie SecureString auswählen, wird das Feld KMS Key ID (KMS-Schlüssel-ID) angezeigt. Wenn Sie keine KMS Schlüssel-ID, keinen KMS Schlüssel-ARN, keinen Aliasnamen oder Alias-ARN angeben, verwendet das System alias/aws/ssm. Das ist der Standard-KMS-Schlüssel für Systems Manager. Wenn Sie diesen Schlüssel nicht verwenden möchten, können Sie einen benutzerdefinierten Schlüssel auswählen. Weitere Informationen finden Sie unter Verwenden von sicheren String-Parametern im AWS Systems Manager-Benutzerhandbuch.

    • Wenn Sie einen sicheren Stringparameter in der Konsole mit dem Parameter key-id entweder mit einem benutzerdefinierten KMS-Schlüssel-Aliasnamen oder einem Alias-ARN erstellen, müssen Sie das Präfix alias/ vor dem Alias angeben. Nachfolgend ein ARN-Beispiel:

      arn:aws:kms:us-east-2:123456789012:alias/MyAliasName

      Im Folgenden finden Sie ein Beispiel für einen Aliasnamen:

      alias/MyAliasName
  6. Geben Sie für Value (Wert) einen Wert ein. Beispiel, MyFirstParameter. Wenn Sie SecureString auswählen, wird der Wert bei der Eingabe maskiert.

  7. Wählen Sie Create parameter (Parameter erstellen) aus.

Erstellen einer Aufgabendefinition in der klassischen Konsole, die auf sensible Daten verweist

Sie können die Amazon ECS-Konsole verwenden, um eine Aufgabendefinition zu erstellen, die auf einen Systems Manager Parameter Store-Parameter verweist.

So erstellen Sie eine Aufgabendefinition, die ein Secret angibt

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

  2. Wählen Sie im 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) den Starttyp, den Ihre Aufgaben verwenden sollen, und wählen Sie dann Next step (Nächster Schritt).

  4. Geben Sie unter Task Definition Name (Aufgabendefinitionsname) einen Namen für Ihre Aufgabendefinition ein. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig.

  5. Wählen Sie für Task execution role (Aufgabenausführungsrolle) entweder Ihre vorhandene Aufgabenausführungsrolle aus oder wählen Sie Create new role (Neue Rolle erstellen). Diese Rolle, die erstellt wird, autorisiert Amazon ECS zum Abrufen von privaten Images für Ihre Aufgabe. Weitere Informationen finden Sie unter Erforderliche IAM-Berechtigungen für die private Registrierungsauthentifizierung.

    Wichtig

    Wenn das Feld Task execution role (Ausführungsrolle der Aufgabe) nicht angezeigt wird, wählen Sie Configure via JSON (Konfiguration über JSON) und fügen Sie executionRoleArn in das Feld hinzu, um Ihre Aufgabenausführungsrolle anzugeben. Der folgende Code zeigt die Syntax:

    "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole"
  6. Führen Sie für jeden Container, der in Ihrer Aufgabendefinition erstellt werden soll, die folgenden Schritte aus:

    1. Wählen Sie unter Container Definitions (Containerdefinitionen) Add container (Container hinzufügen).

    2. Geben Sie für Container name (Containername) den Namen für Ihren Container ein. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig.

    3. Geben Sie für Image den Image-Namen oder Pfad zu Ihrem privaten Image ein. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig.

    4. Erweitern Sie Advanced container configuration (Erweiterte Container-Konfiguration).

    5. Für sensitive Daten, die als Umgebungsvariablen eingefügt werden sollen, füllen Sie unter Environment (Umgebung) für Environment variables (Umgebungsvariablen) die folgenden Felder aus:

      1. Geben Sie unter Key (Schlüssel) den Namen der Umgebungsvariablen ein, die im Container gesetzt werden soll. Dies entspricht dem Feld name im Abschnitt secrets einer Containerdefinition.

      2. Wählen Sie für Value (Wert) ValueFrom. Geben Sie für Add value (Wert hinzufügen) den vollständigen Amazon-Ressourcenname (ARN) des AWS Systems Manager Parameter Store-Parameters, der die Daten enthält, die Ihrem Container als Umgebungsvariable präsentiert werden sollen.

        Anmerkung

        Wenn sich der Systems Manager Parameter Store-Parameter in der gleichen AWS-Region wie die Aufgabe befindet, die Sie starten, können Sie entweder den vollständigen ARN oder den Namen des Secrets verwenden. Wenn der Parameter in einer anderen Region existiert, muss der volle ARN angegeben werden.

    6. Für Secrets, auf die in der Protokollkonfiguration für einen Container verwiesen wird, füllen Sie unter Storage and Logging (Speicher und Protokollierung) für Log configuration (Protokollkonfiguration) die folgenden Felder aus:

      1. Löschen Sie die Option Auto-configure CloudWatch Logs (CWL automatisch konfigurieren).

      2. Geben Sie unter Log options (Protokolloptionen) für Key (Schlüssel) den Namen der festzulegenden Protokollkonfigurationsoption ein.

      3. Wählen Sie für Value (Wert) ValueFrom. Geben Sie für Add value (Wert hinzufügen) den vollständigen ARN des AWS Systems Manager-​Parameter Store-Parameters ein, in dem die Daten enthalten sind, die Ihrer Protokollkonfiguration als Protokolloption präsentiert werden sollen.

        Anmerkung

        Wenn sich der Systems Manager Parameter Store-Parameter in der gleichen AWS-Region wie die Aufgabe befindet, die Sie starten, können Sie entweder den vollständigen ARN oder den Namen des Secrets verwenden. Wenn der Parameter in einer anderen Region existiert, muss der volle ARN angegeben werden.

    7. Füllen Sie die verbleibenden Pflichtfelder und beliebige optionale Felder aus, die Sie in Ihren Containerdefinitionen verwenden möchten. Weitere Containerdefinitionsparameter sind im Menü Advanced container configuration (Erweiterte Containerkonfiguration) verfügbar. Weitere Informationen finden Sie unter Aufgabendefinitionsparameter.

    8. Wählen Sie Add (Hinzufügen) aus.

  7. Wenn Ihre Container hinzugefügt werden, wählen Sie Create (Erstellen) aus.