

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à.

# Passare i segreti di Secrets Manager tramite le variabili di ambiente Amazon ECS
<a name="secrets-envvar-secrets-manager"></a>

Quando si inserisce un segreto come variabile di ambiente, è possibile specificare il contenuto completo di un segreto, una chiave JSON specifica all'interno di un segreto. Questo processo consente di controllare i dati sensibili esposti al container. Per ulteriori informazioni sul controllo delle versioni segrete, consultare [What's in a Secrets Manager secret?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/whats-in-a-secret.html#term_version) nella *Guida per l'utente di Gestione dei segreti AWS *.

Quando si utilizza una variabile di ambiente per inserire un segreto di Gestione dei segreti in un container, è opportuno considerare quanto segue.
+ I dati sensibili vengono inseriti nel container quando viene inizialmente avviato. Se il segreto o parametro viene in seguito aggiornato o ruotato, il container non riceverà automaticamente il valore aggiornato. È necessario avviare una nuova attività o se l'attività è parte di un servizio, è possibile aggiornare il servizio e utilizzare la nuova opzione **Force new deployment (Forza nuova implementazione)** per forzare il servizio ad avviare una nuova attività.
+ Le applicazioni eseguite sul container, i log del container e gli strumenti di debug hanno accesso alle variabili di ambiente.
+ Per le attività di Amazon ECS su AWS Fargate, considera quanto segue:
  + Per inserire il contenuto completo di un segreto come variabile di ambiente o in una configurazione di log, è necessario utilizzare la versione della piattaforma `1.3.0` o successiva. Per informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md).
  + Per inserire una chiave JSON specifica o la versione di un segreto come variabile di ambiente o in una configurazione di log, è necessario utilizzare la versione della piattaforma `1.4.0` o successiva (Linux) o `1.0.0` (Windows). Per informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md).
+ Per i processi Amazon ECS su EC2, è necessario considerare quanto segue:
  + Per inserire un segreto utilizzando una chiave JSON specifica o una versione di un segreto, l'istanza del container deve avere la versione `1.37.0` o successiva dell'agente del container. 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 [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).

    Per inserire il contenuto completo di un segreto come variabile di ambiente o per inserire un segreto in una configurazione di log, l'istanza del container deve avere la versione `1.22.0` o successiva dell'agente del container.
+ Utilizzare gli endpoint VPC dell'interfaccia per migliorare i controlli di sicurezza e connettersi a Secrets Manager tramite una sottorete privata. È necessario creare gli endpoint VPC di interfaccia per Gestione dei segreti. Per informazioni sull'endpoint VPC, consulta [Creazione di endpoint VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/setup-create-vpc.html) nella *Guida per l'utente di Gestione dei segreti AWS *. Per ulteriori informazioni sull'utilizzo di Secrets Manager e Amazon VPC, consultare [How to connect to Secrets Manager service within a Amazon VPC](https://aws.amazon.com/blogs//security/how-to-connect-to-aws-secrets-manager-service-within-a-virtual-private-cloud/).
+ Per le attività di Windows configurate per utilizzare il driver di registrazione `awslogs`, è necessario impostare anche la variabile di ambiente `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE` nell'istanza di container. Utilizzare la seguente sintassi:

  ```
  <powershell>
  [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
  Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
  </powershell>
  ```
+ La definizione dell'attività deve utilizzare l'esecuzione di un ruolo di attività con autorizzazioni aggiuntive per Secrets Manager. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).

## Crea il segreto Gestione dei segreti AWS
<a name="secrets-envvar-secrets-manager-create-secret"></a>

Puoi utilizzare la console Secrets Manager per creare un segreto per i dati sensibili. Per ulteriori informazioni, consulta [Creare un Gestione dei segreti AWS segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) nella *Guida Gestione dei segreti AWS per l'utente*.

## Aggiunta della variabile di ambiente alla definizione di container
<a name="secrets-envvar-secrets-manager-update-container-definition"></a>

All'interno della definizione del container, è possibile specificare quanto segue:
+ L'oggetto `secrets` contenente il nome della variabile di ambiente da impostare nel container
+ L'Amazon Resource Name (ARN) del segreto di Secrets Manager
+ Parametri aggiuntivi che contengono i dati sensibili da presentare al container

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 facoltativi, ma se non li si utilizza, è necessario 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.

`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, consulta [Termini e concetti chiave di Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) nella *Guida per l'utente di Gestione dei segreti AWS *.

### Esempio di definizioni del container
<a name="secrets-examples"></a>

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

**Example 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.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "{{environment_variable_name}}",
      "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{secret_name-AbCdEf}}"
    }]
  }]
}
```
Per accedere al valore di questo segreto dall'interno del container, è necessario effettuare la chiamata a `$environment_variable_name`.

**Example fare riferimento a segreti completi**  
Di seguito è riportato un frammento di una definizione di processo che mostra il formato quando si fa riferimento a più segreti di Secrets Manager.  

```
{
  "containerDefinitions": [{
     "secrets": [
      {
        "name": "{{environment_variable_name1}}",
         "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{secret_name-AbCdEf}}"
      },
      {
        "name": "{{environment_variable_name2}}",
         "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{secret_name-abcdef}}"
      },
      {
        "name": "{{environment_variable_name3}}",
        "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{secret_name-ABCDEF}}"
      }
    ]
  }]
}
```
Per accedere al valore di questo segreto dall'interno del container, è necessario effettuare la chiamata a `$environment_variable_name1`, `$environment_variable_name2` e `$environment_variable_name3`.

**Example fare riferimento a una chiave specifica all'interno di un segreto**  
Di seguito viene illustrato un output di esempio da un comando [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) che visualizza il contenuto di un segreto insieme all'etichetta di gestione temporanea della versione e all'ID della versione ad esso associati.  

```
{
    "ARN": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{appauthexample-AbCdEf}}",
    "Name": "{{appauthexample}}",
    "VersionId": "{{871d9eca-18aa-46a9-8785-981ddEXAMPLE}}",
    "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.  

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

**Example riferimento a una versione segreta specifica**  
Di seguito viene illustrato un output di esempio da un comando [describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html) 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-981ddEXAMPLE}}": [
            "{{AWSCURRENT}}"
        ],
        "{{9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE}}": [
            "{{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.  

```
{
  "containerDefinitions": [{
    "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.  

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

**Example 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.  

```
{
  "containerDefinitions": [{
    "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.  

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

Per informazioni sulla creazione di una definizione di attività con il segreto specificato in una variabile di ambiente, consultare [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md). 