

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

# Ottieni un segreto o un valore segreto da Secrets Manager
<a name="dynamic-references-secretsmanager"></a>

Secrets Manager è un servizio che consente di archiviare e gestire in modo sicuro segreti come credenziali di database, password e chiavi API di terzi. Con Secrets Manager puoi archiviare e controllare centralmente l’accesso a questi segreti, in modo da poter sostituire le credenziali con codifica fissa nel codice (incluse le password), con una chiamata API a Secrets Manager per recuperare il segreto a livello di programmazione. Per ulteriori informazioni, consulta [Cos'è Gestione dei segreti AWS?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) nella *Guida Gestione dei segreti AWS per l'utente*.

Per utilizzare interi segreti o valori segreti archiviati in Secrets Manager all'interno dei CloudFormation modelli, si utilizzano riferimenti `secretsmanager` dinamici.

## Best practice
<a name="dynamic-references-secretsmanager-best-practices"></a>

Segui queste best practice quando utilizzi i riferimenti dinamici di Secrets Manager nei tuoi CloudFormation modelli:
+ **Usa riferimenti senza versione per i tuoi CloudFormation modelli**: archivia le credenziali in Secrets Manager e usa riferimenti dinamici senza specificare `version-id` parametri per supportare flussi di `version-stage` lavoro di rotazione segreti adeguati.
+ **Sfrutta la rotazione automatica**: utilizza la funzionalità di rotazione automatica di Secrets Manager con riferimenti dinamici senza versione per la gestione delle credenziali. Ciò garantisce che le credenziali vengano aggiornate regolarmente senza richiedere modifiche al modello. Per ulteriori informazioni, consulta [Rotazione dei segreti Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).
+ **Usa i riferimenti che presentano versioni con parsimonia**: specifica solo i parametri `version-stage` o `version-id` espliciti per scenari specifici come situazioni di test o rollback.

## Considerazioni
<a name="dynamic-references-secretsmanager-considerations"></a>

Quando si utilizzano riferimenti dinamici `secretsmanager`, è necessario tenere a mente alcune considerazioni importanti:
+ CloudFormation non tiene traccia della versione di un segreto utilizzata nelle distribuzioni precedenti. Pianifica attentamente la tua strategia di gestione del segreto prima di implementare i riferimenti dinamici. Se possibile, utilizza riferimenti senza versione per sfruttare la rotazione automatica del segreto. Monitora e convalida gli aggiornamenti delle risorse quando apporti modifiche alle configurazioni dei riferimenti dinamici, ad esempio durante la transizione da riferimenti dinamici senza versioni a quelli con versioni e viceversa.
+ L'aggiornamento del solo valore segreto in Secrets Manager non comporta automaticamente CloudFormation il recupero del nuovo valore. CloudFormation recupera il valore segreto solo durante la creazione di risorse o gli aggiornamenti che modificano la risorsa contenente il riferimento dinamico. 

  Ad esempio, supponiamo che il modello includa una risorsa [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) in cui la proprietà `MasterPassword` è impostata su un riferimento dinamico di Secrets Manager. Dopo aver creato uno stack da questo modello, aggiorna il valore del segreto in Secrets Manager. Tuttavia, la proprietà `MasterPassword` mantiene il vecchio valore della password. 

  Per applicare il nuovo valore segreto, è necessario modificare la `AWS::RDS::DBInstance` risorsa nel CloudFormation modello ed eseguire un aggiornamento dello stack. 

  Per evitare questo processo manuale in futuro, ti consigliamo di utilizzare Secrets Manager per ruotare in automatico il segreto. 
+ I riferimenti dinamici per valori sicuri, ad esempio`secretsmanager`, non sono attualmente supportati nelle risorse personalizzate.
+ Il riferimento dinamico `secretsmanager` può essere utilizzato in tutte le proprietà di risorsa. L'utilizzo del riferimento `secretsmanager` dinamico indica che né Secrets Manager né CloudFormation i log devono rendere persistente alcun valore segreto risolto. Tuttavia, il valore di segreto può essere visualizzato nel servizio proprietario della risorsa in cui è utilizzato. Rivedi l’utilizzo per evitare perdite di dati segreti.

## Permissions
<a name="dynamic-references-secretsmanager-permissions"></a>

Per specificare un segreto archiviato in Secrets Manager, devi disporre dell’autorizzazione alla chiamata per il segreto [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html).

## Schema di riferimento
<a name="dynamic-references-secretsmanager-pattern"></a>

Per fare riferimento ai segreti di Secrets Manager nel tuo CloudFormation modello, usa il seguente schema `secretsmanager` di riferimento.

```
{{resolve:secretsmanager:secret-id:secret-string:json-key:version-stage:version-id}}
```

`secret-id`  
Il nome o l’ARN del segreto.  
Per accedere a un segreto nel tuo Account AWS, devi solo specificare il nome del segreto. Per accedere a un segreto in un altro Account AWS, specifica l'ARN completo del segreto.  
Obbligatorio.

`secret-string`  
L’unico valore supportato è `SecretString`. Il valore predefinito è `SecretString`.

`json-key`  
Il nome della chiave della coppia chiave-valore di cui intendi recuperare il valore. Se non specifichi a`json-key`, CloudFormation recupera l'intero testo segreto.  
Questo segmento può non includere il carattere di due punti (`:`).

`version-stage`  
L’etichetta temporanea della versione del segreto da utilizzare. Secrets Manager utilizza le etichette temporanee per tenere traccia delle differenti versioni durante il processo di rotazione. Se utilizzi `version-stage`, non specificare `version-id`. Se non specifichi né `version-stage` né `version-id`, la versione di default sarà la `AWSCURRENT`.  
Questo segmento può non includere il carattere di due punti (`:`).

`version-id`  
L’identificatore univoco della versione del segreto da utilizzare. Se specifichi `version-id`, non è necessario specificare anche `version-stage`. Se non specifichi né `version-stage` né `version-id`, la versione di default sarà la `AWSCURRENT`.  
Questo segmento può non includere il carattere di due punti (`:`).

## Esempi
<a name="dynamic-references-secretsmanager-examples"></a>

**Topics**
+ [Recupero dei valori nome utente e password da un segreto](#dynamic-references-secretsmanager-examples-user-name-and-password)
+ [Recupero dell’intero SecretString](#dynamic-references-secretsmanager-examples-entire-secretstring)
+ [Recupero di un valore da una versione specifica di un segreto](#dynamic-references-secretsmanager-examples-specific-version)
+ [Recuperare segreti da un altro Account AWS](#dynamic-references-secretsmanager-examples-secrets-from-another-account)

### Recupero dei valori nome utente e password da un segreto
<a name="dynamic-references-secretsmanager-examples-user-name-and-password"></a>

L’esempio [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) seguente recupera i valori nome utente e password archiviati nel segreto `MySecret`. Questo esempio mostra lo schema consigliato per i riferimenti dinamici senza versione, che utilizza automaticamente la versione `AWSCURRENT` e supporta i flussi di lavoro di rotazione di Secrets Manager senza richiedere modifiche al modello.

#### JSON
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.json"></a>

```
{
    "MyRDSInstance": {
        "Type": "AWS::RDS::DBInstance",
        "Properties": {
            "DBName": "MyRDSInstance",
            "AllocatedStorage": "20",
            "DBInstanceClass": "db.t2.micro",
            "Engine": "mysql",
            "MasterUsername": "{{resolve:secretsmanager:MySecret:SecretString:username}}",
            "MasterUserPassword": "{{resolve:secretsmanager:MySecret:SecretString:password}}"
        }
    }
}
```

#### YAML
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.yaml"></a>

```
  MyRDSInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      DBName: MyRDSInstance
      AllocatedStorage: '20'
      DBInstanceClass: db.t2.micro
      Engine: mysql
      MasterUsername: '{{resolve:secretsmanager:MySecret:SecretString:username}}'
      MasterUserPassword: '{{resolve:secretsmanager:MySecret:SecretString:password}}'
```

### Recupero dell’intero SecretString
<a name="dynamic-references-secretsmanager-examples-entire-secretstring"></a>

Il riferimento dinamico seguente recupera `SecretString` per `MySecret`.

```
{{resolve:secretsmanager:MySecret}}
```

In alternativa:

```
{{resolve:secretsmanager:MySecret::::}}
```

### Recupero di un valore da una versione specifica di un segreto
<a name="dynamic-references-secretsmanager-examples-specific-version"></a>

Il riferimento dinamico seguente recupera il valore `password` per la versione `AWSPREVIOUS` di `MySecret`.

```
{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}
```

### Recuperare segreti da un altro Account AWS
<a name="dynamic-references-secretsmanager-examples-secrets-from-another-account"></a>

Il riferimento dinamico seguente recupera `SecretString` per `MySecret` che si trova in un altro Account AWS. È necessario specificare l'ARN segreto completo per accedere ai segreti in un altro. Account AWS

```
{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret}}
```

Il riferimento dinamico seguente recupera il valore `password` per `MySecret` che si trova in un altro Account AWS. È necessario specificare l'ARN segreto completo per accedere ai segreti in un altro. Account AWS

```
{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret:SecretString:password}}
```