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

mitAWS Batchkönnen Sie vertrauliche Daten in Ihre Jobs einbringen, indem Sie Ihre vertraulichen Daten in speichernAWS Secrets ManagerGeheimnisse und referenzieren Sie sie dann in Ihrer Jobdefinition. Sensible Daten, die in Secret-Manager-Secrets gespeichert sind, können einem Auftrag als Umgebungsvariablen oder als Teil der Protokollkonfiguration ausgesetzt 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 steuern, die Ihrem Job zur Verfügung gestellt werden. Weitere Informationen über geheime Versionssteuerung finden Sie unter.Wichtige Begriffe und Konzepte fürAWS Secrets ManagerimAWS Secrets Manager-Benutzerhandbuchaus.

Überlegungen zum Angeben sensibler Daten mit Secrets Manager

Folgendes ist bei der Angabe sensibler Daten für Jobs mit Secrets Manager zu beachten:

  • Zum Einfügen eines Secrets mithilfe eines bestimmten JSON-Schlüssels oder einer Secret-Version muss auf der Container-Instance in Ihrer Compute-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 Agenten-Version und zum Aktualisieren auf die neueste Version finden Sie unter.Überprüfen des Amazon ECS-Container-AgentenimEntwicklerhandbuch für Amazon Elastic Containeraus.

    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, die Secrets sind, die mit dem SecretString-Parameter der CreateSecret-API erstellt wurden, werden unterstützt. Secrets, die Binärdaten speichern, bei denen es sich um Geheimnisse handelt, die mit demSecretBinaryParameterwert desCreateSecretAPI wird nicht unterstützt.

  • Wenn Sie eine Auftragsdefinition verwenden, die auf Secrets Manager-Secrets verweist, um vertrauliche Daten für Ihre Jobs 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 beim ersten Start des Auftrags in Ihren Job eingebracht. Wenn das Secret anschließend aktualisiert oder rotiert wird, erhält der Auftrag nicht automatisch den aktualisierten Wert. Sie müssen einen neuen Job starten, um den Dienst dazu zu zwingen, einen neuen Job mit dem aktualisierten geheimen Wert zu starten.

Erforderliche IAM-Berechtigungen fürAWS BatchGeheimnisse

Zum Verwenden dieser Funktion benötigen Sie die Ausführungsrolle und müssen in Ihrer Auftragsdefinition auf sie verweisen. Dies ermöglicht dem Container-Agent das Abrufen der erforderlichen Secrets Manager-Ressourcen. Weitere Informationen finden Sie unter AWS BatchIAM-Rolle zur Ausführung.

Um Zugriff auf Secrets Manager Manager-Secrets zu gewähren, die Sie erstellen, müssen Sie die folgenden Berechtigungen manuell als eingebungene Richtlinie zur Ausführungsrolle hinzufügen. Weitere Informationen finden Sie unterHinzufügen und Entfernen von IAM-RichtlinienimIAM User Guideaus.

  • secretsmanager:GetSecretValue: Erforderlich, wenn Sie auf ein Secrets Manager 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

Innerhalb Ihrer Auftragsdefinition können Sie folgende Elemente angeben:

  • DiesecretsDas -Objekt, das den Namen der Umgebungsvariablen enthält, die im Job festgelegt werden soll

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

  • Zusätzliche Parameter, die die sensiblen Daten enthalten, die dem Job angezeigt 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 wird, 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 unterWichtige Begriffe und Konzepte fürAWSSecrets ManagerimAWS Secrets Manager-Benutzerhandbuchaus.

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 unterWichtige Begriffe und Konzepte fürAWSSecrets ManagerimAWS Secrets Manager-Benutzerhandbuchaus.

Beispiel-Containerdefinitionen

Die folgenden Beispiele zeigen, wie Sie auf Secrets Manager 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

Im Folgenden wird eine Beispielausgabe eines get-secret-value-Befehls gezeigt, der den Inhalt eines Secrets zusammen mit der Versionsphasenbeschriftung und der zugehörigen 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

In Ihrer Auftragsdefinition, wenn Sie einelogConfigurationSie können angebensecretOptionsMit dem Namen der im Container festzulegenden Protokolltreiberoption und dem vollständigen ARN des Secrets Manager Manager-Secrets, in dem die sensiblen Daten enthalten sind, die dem Container zur Verfügung gestellt werden sollen.

Im Folgenden finden Sie einen Ausschnitt einer Auftragsdefinition mit dem Format beim Verweisen auf ein Secrets Manager Manager-Secret.

{ "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 außerdem 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 Next (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.