

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

# Sposta le credenziali del database codificate in Gestione dei segreti AWS
<a name="hardcoded-db-creds"></a>

Se nel codice sono presenti credenziali di database in testo semplice, si consiglia di spostare le credenziali in Secrets Manager e quindi ruotarle immediatamente. Lo spostamento delle credenziali in Secrets Manager risolve il problema di visibilità delle credenziali a chiunque veda il codice, perché andando avanti il codice recupera le credenziali direttamente da Secrets Manager. La rotazione del segreto aggiorna la password e quindi revoca la password codificata corrente in modo che non sia più valida. 

Per i database Amazon RDS, Amazon Redshift e Amazon DocumentDB, utilizza la procedura descritta in questa pagina per spostare le credenziali codificate in Secrets Manager. Per altri tipi di credenziali e altri segreti, consulta [Sposta i segreti codificati in Gestione dei segreti AWS](hardcoded.md).

Prima di iniziare, è necessario determinare chi ha bisogno di accedere al segreto. Consigliamo di utilizzare due ruoli IAM per gestire l'autorizzazione al tuo segreto:
+ Un ruolo che gestisce i segreti nella tua organizzazione. Per ulteriori informazioni, consulta [Autorizzazioni di amministrazione di Secrets Manager](auth-and-access.md#auth-and-access_admin). Questo ruolo sarà utilizzato per creare e ruotare il segreto.
+ Un ruolo che può utilizzare le credenziali in fase di esecuzione, *RoleToRetrieveSecretAtRuntime* in questo tutorial. Il tuo codice assume questo ruolo per recuperare il segreto.

**Topics**
+ [

## Fase 1: creazione del segreto
](#hardcoded-db-creds_step2)
+ [

## Fase 2: aggiornamento del codice
](#hardcoded-db-creds_step3)
+ [

## Fase 3: rotazione del segreto
](#hardcoded-db-creds_step5)
+ [

## Fasi successive
](#hardcoded-db-creds_nextsteps)

## Fase 1: creazione del segreto
<a name="hardcoded-db-creds_step2"></a>

Il primo passo consiste nel copiare le credenziali codificate esistenti in un segreto in Secrets Manager. Per la latenza più bassa, archivia il segreto nella stessa regione del database. 

**Per creare un segreto**

1. Apri la console Secrets Manager all'indirizzo [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Scegli **Archivia un nuovo segreto**.

1. Nella pagina **Choose secret type** (Scegli il tipo di segreto), effettua le seguenti operazioni:

   1. Per **Secret type** (Tipo di segreto), scegli il tipo di credenziali del database da archiviare:
      + **Database Amazon RDS**
      + **Database di Amazon DocumentDB**
      + **Data warehouse Amazon Redshift**.
      + Per altri tipi di segreti, consulta [Sostituzione dei segreti codificati](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).

   1. Per **Credenziali**, inserisci le credenziali codificate per il database.

   1. In **Encryption key** (Chiave di crittografia), scegli **aws/secretsmanager** per utilizzare la Chiave gestita da AWS per Secrets Manager. L'utilizzo di questa chiave non prevede costi aggiuntivi. Puoi inoltre utilizzare la tua chiave gestita dal cliente, ad esempio per [accedere al segreto da un altro Account AWS](auth-and-access_examples_cross.md). Per informazioni sui costi di utilizzo di una chiave gestita dal cliente, consulta la sezione [Prezzi](intro.md#asm_pricing).

   1. Per **Database**, scegli il database.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Configure secret** (Configura il segreto), effettua le seguenti operazioni:

   1. Inserisci un **Secret name** (Nome del segreto) e una **Description** (Descrizione) descrittivi. 

   1. In **Resource permissions** (Autorizzazioni della risorsa), scegli **Edit permissions** (Modifica autorizzazioni). **Incolla la seguente policy, che *RoleToRetrieveSecretAtRuntime* consente di recuperare il segreto, quindi scegli Salva.**

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/RoleToRetrieveSecretAtRuntime"
                  },
                  "Action": "secretsmanager:GetSecretValue",
                  "Resource": "*"
              }
          ]
      }
      ```

------

   1. Nella parte inferiore della pagina scegli **Next** (Avanti).

1. Nella pagina **Configure rotation** (Configura la rotazione), mantieni la rotazione disattivata per il momento. La attiverai più tardi. Scegli **Next (Successivo)**.

1. Nella pagina **Review (Revisione)**, rivedi i dettagli dei segreti e quindi scegli **Store (Archivia)**.

## Fase 2: aggiornamento del codice
<a name="hardcoded-db-creds_step3"></a>

Il codice deve assumere il ruolo IAM *RoleToRetrieveSecretAtRuntime* per poter recuperare il segreto. Per ulteriori informazioni, consulta [Passare a un ruolo IAM (AWS API).](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html)

Successivamente, aggiorna il codice per recuperare il segreto da Secrets Manager utilizzando il codice di esempio fornito da Secrets Manager. 

**Ricerca del codice di esempio**

1. Apri la console Secrets Manager all'indirizzo [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Nella pagina dell'elenco **Secrets (Segreti)** scegli il segreto.

1. Scorrere verso il basso fino a **Sample code** (Codice di esempio). Scegli il linguaggio, quindi copia il frammento di codice. 

Nell'applicazione, rimuovi le credenziali codificate e incolla il frammento di codice. A seconda del linguaggio del codice, potrebbe essere necessario aggiungere una chiamata alla funzione o al metodo nel frammento.

Verifica che la tua applicazione funzioni come previsto con il segreto al posto delle credenziali codificate.

## Fase 3: rotazione del segreto
<a name="hardcoded-db-creds_step5"></a>

L'ultimo passo è revocare le credenziali codificate ruotando il segreto. La *rotazione* è il processo di aggiornamento periodico di un segreto. Quando si ruota un segreto, vengono aggiornate le credenziali sia nel segreto che nel database. Secrets Manager può ruotare automaticamente un segreto su un programma configurato.

Parte del processo di configurazione della rotazione è garantire che la funzione di rotazione Lambda possa accedere sia a Secrets Manager che al database. Quando si attiva la rotazione automatica, Secrets Manager crea la funzione di rotazione Lambda nello stesso VPC del database in modo che abbia accesso di rete al database. La funzione di rotazione Lambda deve anche essere in grado di effettuare chiamate a Secrets Manager per aggiornare il segreto. Ti consigliamo di creare un endpoint Secrets Manager nel VPC in modo che le chiamate da Lambda a Secrets Manager non lascino l'infrastruttura. AWS Per istruzioni, consulta [Utilizzo di un Gestione dei segreti AWS endpoint VPC](vpc-endpoint-overview.md).

**Attivazione della rotazione**

1. Apri la console Secrets Manager all'indirizzo [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Nella pagina dell'elenco **Secrets (Segreti)** scegli il segreto.

1. Nella pagina **Secret details (Dettagli del segreto)**, nella sezione **Rotation configuration (Configurazione rotazione)** scegli **Edit rotation (Modifica rotazione)**.

1. Nella finestra di dialogo **Edit rotation configuration (modifica configurazione rotazione)**, procedi come indicato di seguito:

   1. Attiva **Automatic rotation** (Rotazione automatica).

   1. In **Rotation schedule** (Programma di rotazione), inserisci il programma nel fuso orario UTC. 

   1. Scegli **Rotate immediately when the secret is stored** (Ruota immediatamente quando viene memorizzato il segreto) per ruotare il segreto al salvataggio delle modifiche.

   1. In **Rotation function** (Funzione di rotazione), scegli **Create a new Lambda function** (Crea una nuova funzione Lambda) ed immetti un nome per la nuova funzione. Secrets Manager aggiunge "SecretsManager" all'inizio del nome della funzione.

   1. Per **Strategia di rotazione** scegli **Utente singolo**.

   1. Scegli **Save** (Salva).

**Verifica che il segreto sia stato ruotato**

1. Apri la console Secrets Manager all'indirizzo [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Scegli **Secrets** (Segreti), quindi scegli il segreto.

1. Nella pagina **Secret details** (Dettagli del segreto), scorri e scegli **Retrieve secret value** (Recupera il valore del segreto).

   Se il valore del segreto è cambiato, allora la rotazione è riuscita. Se il valore segreto non è cambiato, devi farlo [Risoluzione dei problemi della rotazione](troubleshoot_rotation.md) guardando CloudWatch i log per la funzione di rotazione.

Verifica che la tua applicazione funzioni come previsto con il segreto ruotato.

## Fasi successive
<a name="hardcoded-db-creds_nextsteps"></a>

Dopo aver rimosso un segreto codificato dal codice, ecco alcuni concetti da considerare:
+ È possibile migliorare le prestazioni e ridurre i costi tramite la memorizzazione nella cache dei segreti. Per ulteriori informazioni, consulta [Ottieni segreti da Gestione dei segreti AWS](retrieving-secrets.md).
+ È possibile scegliere un diverso programma di rotazione. Per ulteriori informazioni, consulta [Pianificazioni di rotazione](rotate-secrets_schedule.md).
+ [Per trovare segreti codificati nelle tue applicazioni Java e Python, ti consigliamo Amazon Reviewer. CodeGuru ](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html)