Specifica di dati sensibili tramite Secrets Manager - AWS Batch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Specifica di dati sensibili tramite Secrets Manager

Con AWS Batch, puoi inserire dati sensibili nei tuoi lavori archiviandoli in modo AWS Secrets Manager segreto e quindi facendone riferimento nella definizione del lavoro. I dati sensibili archiviati nei segreti di Secrets Manager possono essere esposti a un job come variabili di ambiente o come parte della configurazione del registro.

Quando si inserisce un segreto come variabile di ambiente, è possibile specificare una chiave JSON o una versione di un segreto da inserire. Questo processo consente di controllare i dati sensibili esposti al lavoro. Per ulteriori informazioni sul controllo delle versioni dei segreti, consulta i termini e concetti chiave per AWS Secrets Manager nella Guida per l'utente di AWS Secrets Manager .

Considerazioni sulla specifica di dati sensibili con Secrets Manager

Quando si utilizza Secrets Manager per specificare dati sensibili per i lavori, è necessario considerare quanto segue.

  • Per inserire un segreto utilizzando una chiave JSON specifica o una versione di un segreto, nell'istanza del contenitore nel tuo ambiente di calcolo deve essere installata la versione 1.37.0 o successiva dell'agente contenitore Amazon ECS. Tuttavia, ti consigliamo di utilizzare la versione più recente dell'agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta Updating the Amazon ECS Container Agent nella Amazon Elastic Container Service Developer Guide.

    Per inserire l'intero contenuto di un segreto come variabile di ambiente o per inserire un segreto in una configurazione di registro, l'istanza del contenitore deve avere la versione 1.23.0 o successiva dell'agente contenitore.

  • Sono supportati solo i segreti che memorizzano dati di testo, ovvero segreti creati con il SecretString parametro dell'CreateSecretAPI. I segreti che memorizzano dati binari, ovvero segreti creati con il SecretBinary parametro dell'CreateSecretAPI, non sono supportati.

  • Quando utilizzi una definizione di lavoro che fa riferimento ai segreti di Secrets Manager per recuperare dati sensibili per i tuoi lavori, se utilizzi anche endpoint VPC di interfaccia, devi creare gli endpoint VPC di interfaccia per Secrets Manager. Per ulteriori informazioni, consulta Utilizzo di Secrets Manager con endpoint VPC nella Guida per l'utente di AWS Secrets Manager .

  • I dati sensibili vengono inseriti nel lavoro all'avvio iniziale del lavoro. Se il segreto viene successivamente aggiornato o ruotato, il lavoro non riceve automaticamente il valore aggiornato. È necessario avviare un nuovo lavoro per forzare il servizio a lanciare un nuovo lavoro con il valore segreto aggiornato.

Autorizzazioni IAM richieste per i segreti AWS Batch

Per utilizzare questa funzionalità, è necessario disporre del ruolo di esecuzione e farvi riferimento nella definizione del processo. Ciò consente all'agente del container di recuperare le risorse di Secrets Manager necessarie. Per ulteriori informazioni, consulta AWS Batch ruolo di esecuzione IAM.

Per fornire l'accesso ai segreti di Secrets Manager che crei, aggiungi manualmente le seguenti autorizzazioni come policy in linea al ruolo di esecuzione. Per ulteriori informazioni, consulta Aggiungere e rimuovere le politiche IAM nella Guida per l'utente IAM.

  • secretsmanager:GetSecretValue: obbligatorio se si fa riferimento a un segreto di Secrets Manager.

  • kms:Decrypt: obbligatorio solo se il segreto utilizza una chiave KMS personalizzata e non quella di default. L'ARN per la chiave personalizzata deve essere aggiunto come risorsa.

La policy inline dell'esempio seguente aggiunge le autorizzazioni necessarie:

{ "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>" ] } ] }

Inserimento di dati sensibili come una variabile di ambiente

All'interno della definizione del lavoro, puoi specificare i seguenti elementi:

  • L'secretsoggetto contenente il nome della variabile di ambiente da impostare nel lavoro

  • L'Amazon Resource Name (ARN) del segreto di Secrets Manager

  • Parametri aggiuntivi che contengono i dati sensibili da presentare al lavoro

Nell'esempio seguente viene illustrata la sintassi completa che deve essere specificata per il segreto di Secrets Manager.

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

Nella sezione seguente vengono descritti i parametri aggiuntivi. Questi parametri sono opzionali. Tuttavia, se non li utilizzate, dovete includere i due punti : per utilizzare i valori predefiniti. Esempi sono forniti di seguito per un maggiore contesto.

json-key

Specificare il nome della chiave in una coppia chiave-valore con il valore che si desidera impostare come valore della variabile di ambiente. Sono supportati solo i valori in formato JSON. Se non si specifica una chiave JSON, viene utilizzato il contenuto completo del segreto.

version-stage

Specificare l'etichetta di gestione temporanea della versione di un segreto che si desidera utilizzare. Se viene specificata un'etichetta di gestione temporanea della versione, non è possibile specificare un ID versione. Se non viene specificata alcuna fase di versione, il comportamento predefinito consiste nel recuperare il segreto con l'etichetta AWSCURRENT di gestione temporanea.

Le etichette di gestione temporanea vengono utilizzate per tenere traccia di diverse versioni di un segreto quando vengono aggiornate o ruotate. Ogni versione di un segreto ha una o più etichette di gestione temporanea e un ID. Per ulteriori informazioni, vedere Termini e concetti chiave per AWS Secrets Manager nella Guida per l'AWS Secrets Manager utente.

version-id

Specifica l'identificatore univoco della versione del segreto che intendi utilizzare. Se viene specificato un ID versione, non è possibile specificare un'etichetta di gestione temporanea della versione. Se non viene specificato alcun ID versione, il comportamento predefinito consiste nel recuperare il segreto con l'etichetta AWSCURRENT di gestione temporanea.

Gli ID di versione vengono utilizzati per tenere traccia di diverse versioni di un segreto quando vengono aggiornati o ruotati. Ogni versione di un segreto ha un ID. Per ulteriori informazioni, vedere Termini e concetti chiave per AWS Secrets Manager nella Guida per l'AWS Secrets Manager utente.

Esempio di definizioni del container

Negli esempi seguenti vengono illustrati i modi in cui è possibile fare riferimento ai segreti di Secrets Manager nelle definizioni del container.

Esempio riferimento a un segreto completo

Di seguito è riportato un frammento di una definizione di processo che mostra il formato quando si fa riferimento a un segreto di Secrets Manager.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf" }] }] }
Esempio fare riferimento a una chiave specifica all'interno di un segreto

Di seguito viene illustrato un esempio di output di un get-secret-valuecomando che visualizza il contenuto di un segreto insieme all'etichetta di staging della versione e all'ID di versione ad esso associati.

{
    "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
}

Fare riferimento a una chiave specifica dell'output precedente in una definizione di container specificando il nome della chiave alla fine dell'ARN.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::" }] }] }
Esempio riferimento a una versione segreta specifica

Di seguito viene illustrato un output di esempio da un comando describe-secret che visualizza il contenuto non crittografato di un segreto insieme ai metadati per tutte le versioni del segreto.

{
    "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"
        ]
    }
}

Fare riferimento a un'etichetta di gestione temporanea della versione specifica dall'output precedente in una definizione di container specificando il nome della chiave alla fine dell'ARN.

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

Fare riferimento a un ID di versione specifico dall'output precedente in una definizione di container specificando il nome della chiave alla fine dell'ARN.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::9d4cb84b-ad69-40c0-a0ab-cead36b967e8" }] }] }
Esempio riferimento a una chiave specifica e un'etichetta di gestione temporanea della versione di un segreto

Di seguito viene illustrato come fare riferimento sia a una chiave specifica all'interno di un segreto che a una specifica etichetta di gestione temporanea della versione.

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

Per specificare una chiave e un ID di versione specifici, utilizzare la seguente sintassi.

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

Inserimento di dati sensibili in una configurazione di log

All'interno della definizione del processo, quando si specifica a logConfiguration è possibile specificare secretOptions il nome dell'opzione del driver di registro da impostare nel contenitore e l'ARN completo del segreto di Secrets Manager contenente i dati sensibili da presentare al contenitore.

Di seguito è riportato un frammento di una definizione di processo che mostra il formato quando si fa riferimento a un segreto di Secrets Manager.

{ "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" }] }] }] }

Creare un segreto AWS Secrets Manager

Puoi utilizzare la console Secrets Manager per creare un segreto per i dati sensibili. Per ulteriori informazioni, consulta Creazione di un segreto di base nella Guida per l'utente di AWS Secrets Manager .

Come creare un segreto di base

Utilizza Secrets Manager per creare un segreto per i dati sensibili.

  1. Apri la console di Secrets Manager all'indirizzo https://console.aws.amazon.com/secretsmanager/.

  2. Scegli Archivia un nuovo segreto.

  3. In Select secret type (Seleziona tipo di segreto), scegliere Other type of secrets (Altro tipo di segreti).

  4. Specifica i dettagli del tuo segreto personalizzato come Key (Chiave) e Value (Valore). Ad esempio, puoi specificare una chiave UserName e fornire il nome utente appropriato come valore. Aggiungi una seconda chiave con il nome di Password e il testo della password come valore. È inoltre possibile aggiungere voci per il nome di un database, l'indirizzo del server o la porta TCP. Puoi aggiungere tutte le coppie di cui hai bisogno per archiviare le informazioni necessarie.

    In alternativa, puoi scegliere la scheda Plaintext (Testo normale) e immettere il valore del segreto come desideri.

  5. Scegli la chiave di AWS KMS crittografia che desideri utilizzare per crittografare il testo protetto nel segreto. Se non scegli una chiave, Secrets Manager verifica se esiste una chiave di default per l'account e, nel caso, la utilizza. Se una chiave di default non esiste, Secrets Manager ne crea automaticamente una. Puoi anche scegliere Aggiungi nuova chiave per creare un nuova chiave KMS personalizzata specifica per questo segreto. Per creare la tua chiave KMS, devi disporre delle autorizzazioni per creare le chiavi KMS nel tuo account.

  6. Seleziona Avanti.

  7. Per Secret name (Nome segreto), digitare un percorso e nome opzionali, come production/MyAwesomeAppSecret o development/TestSecret e selezionare Next (Successivo). Opzionalmente, è possibile aggiungere una descrizione che aiuti a ricordare lo scopo di questo segreto in futuro.

    Il nome del segreto deve essere costituito da lettere ASCII, cifre o uno dei seguenti caratteri:/_+=.@-

  8. (Opzionale) A questo punto, puoi configurare la rotazione per il tuo segreto. Per questa procedura, lasciare l'impostazione Disable automatic rotation (Disabilita rotazione automatica) e selezionare Next (Successivo).

    Per informazioni su come configurare la rotazione su segreti nuovi o esistenti, consulta Rotating Your AWS Secrets Manager Secrets.

  9. Verifica le tue impostazioni e poi scegli Archivia segreto per salvare tutti i dati immessi come nuovo segreto in Secrets Manager.