Angeben vertraulicher Daten mithilfe von Secrets Manager - AWS Batch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Angeben vertraulicher Daten mithilfe von Secrets Manager

AWS Batch ermöglicht es Ihnen, vertrauliche Daten in Ihre Aufträge einzubringen, indem Sie Ihre vertraulichen Daten in AWS Secrets Manager-Secrets speichern und dann in Ihrer Auftragsdefinition auf sie verweisen. Sensible Daten, die in Secrets-Manager-Geheimnissen gespeichert sind, können einem Auftrag als Umgebungsvariablen oder als Teil der Protokollkonfiguration zur Verfügung gestellt werden.

Wenn Sie ein Secret als Umgebungsvariable einfügen, können Sie einen JSON-Schlüssel oder eine Version eines einzufügenden Secrets angeben. Dieser Prozess hilft Ihnen, die sensiblen Daten zu kontrollieren, die Ihrem Auftrag ausgesetzt sind. Weitere Informationen zur geheimen Versionsverwaltung finden Sie unter Schlüsselbegriffe und -konzepte für AWS Secrets Manager im AWS Secrets Manager-Benutzerhandbuch.

Überlegungen zum Angeben sensibler Daten mit Secrets Manager

Folgendes sollte berücksichtigt werden, wenn Secrets Manager verwendet wird, um sensible Daten für Aufträge anzugeben.

  • Um ein Secret mit einem bestimmten JSON-Schlüssel oder einer Version eines Secrets einzufügen, muss auf der Container-Instance in Ihrer Computing-Umgebung Version 1.37.0 oder höher des Amazon-ECS-Container-Agenten installiert sein. Wir empfehlen jedoch, die neueste Container-Agent-Version zu verwenden. Informationen zum Überprüfen Ihrer Agentenversion und zum Aktualisieren auf die neueste Version finden Sie unter Aktualisieren des Amazon-ECS-Container-Agenten im Entwicklerhandbuch für Amazon Elastic Container Service.

    Um den vollständigen Inhalt eines Secrets als Umgebungsvariable einzufügen oder ein Secret in eine Protokollkonfiguration einzufügen, muss Ihre Container-Instance Version 1.22.0 oder höher des Container-Agenten haben.

  • Nur Secrets, die Textdaten speichern, bei denen es sich um Secrets handelt, die mit dem CreateSecret-SecretStringParameter der API erstellt wurden, werden unterstützt. Secrets, die Binärdaten speichern, bei denen es sich um Secrets handelt, die mit dem CreateSecret-SecretBinaryParameter der API erstellt wurden, werden nicht unterstützt.

  • Wenn Sie eine Auftragsdefinition verwenden, die auf Secrets-Manager-Secrets verweist, um sensible Daten für Ihre Aufträge abzurufen, müssen Sie bei Verwendung von Schnittstellen-VPC-Endpunkten die Schnittstellen-VPC-Endpunkte für Secrets Manager erstellen. Weitere Informationen finden Sie unter Verwenden von Secrets Manager mit VPC-Endpunkten im AWS Secrets Manager-Benutzerhandbuch.

  • Sensible Daten werden in Ihren Auftrag eingefügt, wenn der Auftrag zum ersten Mal gestartet wird. Wenn das Secret anschließend aktualisiert oder rotiert wird, erhält der Auftrag nicht automatisch den aktualisierten Wert. Sie müssen einen neuen Auftrag starten, um den Service zu zwingen, einen neuen Auftrag mit dem aktualisierten Secret-Wert zu starten.

Erforderliche IAM-Berechtigungen für AWS Batch Secrets

Um dieses Feature verwenden zu können, müssen Sie über die Ausführungsrolle verfügen und in Ihrer Auftragsdefinition darauf verweisen. Dies ermöglicht dem Container-Agent das Abrufen der erforderlichen Secrets Manager-Ressourcen. Weitere Informationen finden Sie unter AWS Batch Ausführungs-IAM-Rolle.

Um Zugriff auf die von Ihnen erstellten Secrets Manager-Secrets zu gewähren, fügen Sie der Ausführungsrolle manuell die folgenden Berechtigungen als Inline-Richtlinie hinzu. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien im IAM-Benutzerhandbuch.

  • secretsmanager:GetSecretValue: Erforderlich, wenn Sie auf ein Secrets Manager-Secret verweisen.

  • 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 sollte 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": [ "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "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

In Ihrer Auftragsdefinition können Sie die folgenden Elemente angeben:

  • Das secrets Objekt, das den Namen der Umgebungsvariablen enthält, die im Auftrag festgelegt werden soll

  • Der Amazon-Ressourcenname (ARN) des Secrets Manager-Secrets

  • Zusätzliche Parameter, die die sensiblen Daten enthalten, die dem Auftrag präsentiert werden sollen

Das folgende Beispiel zeigt die vollständige Syntax, die für das Secrets Manager-Secret angegeben werden muss.

arn:aws:secretsmanager:region:aws_account_id:secret:secret-name:json-key:version-stage:version-id

Im folgenden Abschnitt werden die zusätzlichen Parameter beschrieben. Diese Parameter sind optional. Wenn Sie sie jedoch nicht verwenden, müssen Sie die Doppelpunkte einschließen, : um die Standardwerte zu verwenden. Beispiele finden Sie unten für weiteren Kontext.

json-key

Gibt den Namen des Schlüssels in einem Schlüssel-Wert-Paar mit dem Wert an, den Sie als Umgebungsvariablenwert festlegen möchten. Nur Werte im JSON-Format werden unterstützt. Wenn Sie keinen JSON-Schlüssel angeben, wird der vollständige Inhalt des Secrets verwendet.

version-stage

Gibt die Phasenbeschriftung der Version eines Secrets an, die Sie verwenden möchten. Wenn eine Versionsphasenbeschriftung angegeben ist, können Sie keine Versions-ID angeben. Wenn keine Versionsphase angegeben wird, besteht das Standardverhalten darin, das Secret Schlüssel mit der AWSCURRENT-Phasenbeschriftung abzurufen.

Phasenbeschriftungen werden verwendet, um verschiedene Versionen eines Secrets zu verfolgen, wenn sie aktualisiert oder rotiert werden. Jede Version eines Secrets hat eine oder mehrere Phasenbeschriftungen und eine ID. Weitere Informationen finden Sie unter Schlüsselbegriffe und Konzepte für AWS Secrets Manager im AWS Secrets Manager -Benutzerhandbuch.

version-id

Gibt die eindeutige ID der Version des Secrets an, die Sie verwenden möchten. Wenn eine Versions-ID angegeben wird, können Sie keine Versionsphasenbeschriftung angeben. Wenn keine Versions-ID angegeben wird, besteht das Standardverhalten darin, den geheimen Schlüssel mit der AWSCURRENT-Phasenbeschriftung abzurufen.

Versions-IDs werden verwendet, um verschiedene Versionen eines Secrets zu verfolgen, wenn sie aktualisiert oder rotiert werden. Jede Version eines Secrets hat eine ID. Weitere Informationen finden Sie unter Wichtige Begriffe und Konzepte für AWS Secrets Manager im AWS Secrets Manager -Benutzerhandbuch.

Beispiel-Containerdefinitionen

Die folgenden Beispiele zeigen, wie Sie auf Secrets Manager-Secrets in Ihren Containerdefinitionen verweisen können.

Beispiel Verweisen auf ein vollständiges Secret

Im Folgenden finden Sie einen Ausschnitt einer Aufgabendefinition mit dem Format beim Verweisen auf den vollständigen Text eines Secrets Manager-Secret.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf" }] }] }
Beispiel Verweisen auf einen bestimmten Schlüssel innerhalb eines Secrets

Das folgende Beispiel zeigt eine Ausgabe eines get-secret-value Befehls, der den Inhalt eines Secrets zusammen mit der Versions-Staging-Bezeichnung und der damit verknüpften Versions-ID anzeigt.

{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "VersionId": "871d9eca-18aa-46a9-8785-981dd39ab30c",
    "SecretString": "{\"username1\":\"password1\",\"username2\":\"password2\",\"username3\":\"password3\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": 1581968848.921
}

Verweisen Sie auf einen bestimmten Schlüssel aus der vorherigen Ausgabe in einer Containerdefinition, indem Sie den Schlüsselnamen am Ende des ARN angeben.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::" }] }] }
Beispiel Verweisen auf eine bestimmte Secret-Version

Im Folgenden wird eine Beispielausgabe eines describe-secret -Befehls gezeigt, der den unverschlüsselten Inhalt eines Secrets zusammen mit den Metadaten für alle Versionen des Secrets anzeigt.

{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "Description": "Example of a secret containing application authorization data.",
    "RotationEnabled": false,
    "LastChangedDate": 1581968848.926,
    "LastAccessedDate": 1581897600.0,
    "Tags": [],
    "VersionIdsToStages": {
        "871d9eca-18aa-46a9-8785-981dd39ab30c": [
            "AWSCURRENT"
        ],
        "9d4cb84b-ad69-40c0-a0ab-cead36b967e8": [
            "AWSPREVIOUS"
        ]
    }
}

Verweisen Sie auf eine bestimmte Versionsphasenbeschriftung aus der vorherigen Ausgabe in einer Containerdefinition, indem Sie den Schlüsselnamen am Ende des ARN angeben.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::AWSPREVIOUS:" }] }] }

Verweisen Sie auf eine bestimmte Versions-ID der vorherigen Ausgabe in einer Containerdefinition, indem Sie den Schlüsselnamen am Ende des ARN angeben.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::9d4cb84b-ad69-40c0-a0ab-cead36b967e8" }] }] }
Beispiel Verweisen auf einen bestimmten Schlüssel und eine Versionsphasenbeschriftung eines Secrets

Im Folgenden wird gezeigt, wie Sie sowohl auf einen bestimmten Schlüssel innerhalb eines Secrets als auch auf eine bestimmte Versionsphasenbeschriftung verweisen.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1:AWSPREVIOUS:" }] }] }

Verwenden Sie die folgende Syntax, um einen bestimmten Schlüssel und eine Versions-ID anzugeben.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::9d4cb84b-ad69-40c0-a0ab-cead36b967e8" }] }] }

Injizieren sensibler Daten in einer Protokollkonfiguration

Wenn Sie in Ihrer Auftragsdefinition angeben, können logConfiguration Sie secretOptions mit dem Namen der im Container festzulegenden Protokolltreiberoption und dem vollständigen ARN des Secrets-Manager-Secrets angeben, das die sensiblen Daten enthält, die dem Container präsentiert werden sollen.

Im Folgenden finden Sie einen Ausschnitt einer Auftragsdefinition, der das Format zeigt, wenn auf ein Secrets-Manager-Secret verwiesen wird.

{ "containerProperties": [{ "logConfiguration": [{ "logDriver": "splunk", "options": { "splunk-url": "https://cloud.splunk.com:8080" }, "secretOptions": [{ "name": "splunk-token", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf" }] }] }] }

Erstellen eines AWS Secrets Manager-Secrets

Sie können die Secrets Manager-Konsole verwenden, um ein Secret für Ihre sensiblen Daten zu erstellen. 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. Geben Sie die Daten Ihres benutzerdefinierten Secrets in Form von Paaren aus Key (Schlüssel) und Value (Wert) an. Sie können z. B. einen Schlüssel von UserName festlegen und dann den entsprechenden Benutzernamen als Wert angeben. Fügen Sie einen zweiten Schlüssel mit dem Namen Password und dem Passworttext als Wert hinzu. Sie können auch Einträge für einen Datenbanknamen, eine Serveradresse oder einen TCP-Port hinzufügen. Sie können so viele Paare wie nötig zum Speichern der von Ihnen benötigten Informationen hinzufügen.

    Alternativ können Sie die Registerkarte Plaintext (Klartext) wählen und den Secret-Wert auf beliebige Weise eingeben.

  5. Wählen Sie den AWS KMS-Schlüssel aus, mit dem Sie den geschützten Text im Secret verschlüsseln möchten. Wenn Sie keinen Schlüssel wählen, prüft Secrets Manager, ob es einen Standardschlüssel für das Konto gibt. Fall dies der Fall ist, wird er verwendet. Wenn kein Standardschlüssel vorhanden ist, erstellt Secrets Manager automatisch einen Schlüssel. Sie können auch Add new key (Neuen Schlüssel hinzufügen) auswählen, um einen benutzerdefinierten KMS-Schlüssel speziell für dieses Secret zu erstellen. Um Ihren eigenen KMS-Schlüssel zu erstellen, müssen Sie in Ihrem Konto zum Erstellen von KMS-Schlüssel berechtigt sein.

  6. Wählen Sie Weiter aus.

  7. Geben Sie für Secret name (Secret-Name) einen optionalen Pfad und Namen ein, z. B. production/MyAwesomeAppSecret oder development/TestSecret, und wählen Sie Next (Weiter) aus. Optional können Sie eine Beschreibung hinzufügen. Mit dieser können Sie sich später besser an den Zweck dieses Secrets erinnern.

    Der Secret-Name darf nur ASCII-Zeichen, Ziffern oder eines der folgenden Zeichen enthalten: /_+=.@-

  8. (Optional) Jetzt können Sie die Rotation für Ihr Secret konfigurieren. Belassen Sie die Option für dieses Verfahren auf Disable automatic rotation (Automatisches Rotieren deaktivieren) und klicken Sie auf Next (Weiter).

    Informationen darüber, wie Sie die Rotation für neue oder bestehende Geheimnisse konfigurieren, finden Sie unter Rotieren Ihrer AWS Secrets Manager-Geheimnisse.

  9. Überprüfen Sie die Einstellungen, und wählen Sie dann Store secret (Secret speichern) aus, um Ihre gesamte Eingabe als neues Secret im Secrets Manager zu speichern.