

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

# Migrazione dall'autenticazione basata su password (AUTH) all'autenticazione IAM
<a name="auth-to-iam-migration"></a>

Questa guida descrive come migrare il cluster ElastiCache basato su nodi Amazon o la cache serverless dall'autenticazione basata su password (AUTH) all'autenticazione (IAM) senza interruzioni del servizio. AWS Identity and Access Management 

**Nota**  
Ti consigliamo di testare questa migrazione in un ambiente non di produzione prima di applicare modifiche all'ambiente di produzione.

## Panoramica di
<a name="auth-to-iam-overview"></a>

L'autenticazione IAM offre una maggiore sicurezza eliminando la necessità di password di lunga durata. Le applicazioni generano invece token di autenticazione di breve durata (validi fino a 15 minuti) utilizzando il processo di [AWS firma Signature Version 4](https://docs.aws.amazon.com//general/latest/gr/signature-version-4.html).

## Prerequisiti
<a name="auth-to-iam-prereqs"></a>

Prima di iniziare, verifica quanto segue:
+ La cache esegue Redis OSS 7.0 o versione successiva o Valkey. L'autenticazione IAM non è supportata nelle versioni precedenti del motore.
+ In-transit la crittografia (TLS) è abilitata nella cache. L'autenticazione IAM richiede TLS. Per ulteriori informazioni, consulta [ElastiCache crittografia in transito (TLS)](in-transit-encryption.md).
+ Disponi delle autorizzazioni IAM necessarie per creare utenti e modificare gruppi di utenti. Per ulteriori informazioni, consulta [Come ElastiCache funziona Amazon con IAM](security_iam_service-with-iam.md).
+ Il ruolo o l'utente IAM utilizzato dall'applicazione dispone di una policy IAM che consente l'`elasticache:Connect`azione per la cache di destinazione e l'utente IAM. Per ulteriori informazioni, consulta [Autenticazione con IAM](auth-iam.md).
+ Alla tua applicazione non si applicano limitazioni di autenticazione IAM aggiuntive. Per l'elenco completo delle limitazioni, consulta[Autenticazione con IAM](auth-iam.md).

## Processo di migrazione
<a name="auth-to-iam-process"></a>

Il processo di migrazione prevede la creazione sia di un utente basato su password che di un IAM-authenticated utente, la verifica della connettività e quindi la transizione delle applicazioni all'autenticazione IAM.

### Fase 1: Creare utenti
<a name="auth-to-iam-create-users"></a>

Crea due ElastiCache utenti in modo che la cache supporti sia l'autenticazione basata su password che l'autenticazione IAM durante il periodo di migrazione.

**Crea un utente di autenticazione basato su password**

**Nota**  
Se hai già configurato un utente basato su password, puoi saltare la creazione di uno nuovo e utilizzare l'utente esistente.

Usa il AWS CLI comando seguente per creare un utente basato su password.

Per Linux, macOS o Unix:

```
aws elasticache create-user \
  --user-id {{<user-id>}} \
  --user-name default \
  --engine {{<engine>}} \
  --passwords "{{<your-existing-auth-password>}}" \
  --access-string "on ~* +@all"
```

Per Windows:

```
aws elasticache create-user ^
  --user-id {{<user-id>}} ^
  --user-name default ^
  --engine {{<engine>}} ^
  --passwords "{{<your-existing-auth-password>}}" ^
  --access-string "on ~* +@all"
```

Sostituire:
+ {{<user-id>}}— Un ID univoco per questo utente.
+ {{<engine>}}— Il motore utilizzato dalla cache: `valkey` o`redis`.
+ {{<your-existing-auth-password>}}— Il token AUTH attualmente configurato nella cache.

**Crea un utente IAM-authenticated **

Utilizzate il seguente AWS CLI comando per creare un IAM-authenticated utente.

Per Linux, macOS o Unix:

```
aws elasticache create-user \
  --user-id {{<iam-user-id>}} \
  --user-name {{<iam-user-name>}} \
  --authentication-mode Type=iam \
  --engine {{<engine>}} \
  --access-string "on ~* +@all"
```

Per Windows:

```
aws elasticache create-user ^
  --user-id {{<iam-user-id>}} ^
  --user-name {{<iam-user-name>}} ^
  --authentication-mode Type=iam ^
  --engine {{<engine>}} ^
  --access-string "on ~* +@all"
```

Sostituire:
+ {{<iam-user-id>}}— Un ID univoco per l'utente IAM.
+ {{<iam-user-name>}}— Il nome utente per l'utente IAM.
+ {{<engine>}}— Il motore utilizzato dalla cache: `valkey` o`redis`.

### Fase 2: Creare e allegare un gruppo di utenti
<a name="auth-to-iam-user-group"></a>

Se disponi già di un gruppo di utenti contenente il tuo utente basato su password, aggiungi l' IAM-authenticated utente a quel gruppo esistente:

Per Linux, macOS o Unix:

```
aws elasticache modify-user-group \
  --user-group-id {{<user-group-id>}} \
  --user-ids-to-add {{<iam-user-id>}}
```

Per Windows:

```
aws elasticache modify-user-group ^
  --user-group-id {{<user-group-id>}} ^
  --user-ids-to-add {{<iam-user-id>}}
```

Sostituire:
+ {{<user-group-id>}}— L'ID del gruppo di utenti esistente.
+ {{<iam-user-id>}}— L'ID utente dell' IAM-authenticated utente creato nel passaggio 1.

Quindi passa a [Passaggio 3: verifica entrambi i metodi di autenticazione](#auth-to-iam-verify-dual).

Altrimenti, crea un nuovo gruppo di utenti, aggiungi entrambi gli utenti e collega il gruppo alla cache.

Usa i seguenti AWS CLI comandi per creare un gruppo di utenti con entrambi gli utenti:

Per Linux, macOS o Unix:

```
aws elasticache create-user-group \
  --user-group-id {{<user-group-id>}} \
  --engine {{<engine>}} \
  --user-ids {{<user-id>}} {{<iam-user-id>}}
```

Per Windows:

```
aws elasticache create-user-group ^
  --user-group-id {{<user-group-id>}} ^
  --engine {{<engine>}} ^
  --user-ids {{<user-id>}} {{<iam-user-id>}}
```

Sostituire:
+ {{<user-group-id>}}— Un ID univoco per il gruppo di utenti.
+ {{<engine>}}— Il motore utilizzato dalla cache: `valkey` o`redis`.
+ {{<user-id>}}, {{<iam-user-id>}} — Gli ID utente creati nel passaggio 1.

Quindi modifica la cache per utilizzare il nuovo gruppo di utenti.

Per i cluster basati su nodi:

Per Linux, macOS o Unix:

```
aws elasticache modify-replication-group \
  --replication-group-id {{<replication-group-id>}} \
  --auth-token-update-strategy DELETE \
  --user-group-ids-to-add {{<user-group-id>}}
```

Per Windows:

```
aws elasticache modify-replication-group ^
  --replication-group-id {{<replication-group-id>}} ^
  --auth-token-update-strategy DELETE ^
  --user-group-ids-to-add {{<user-group-id>}}
```

Sostituire:
+ {{<replication-group-id>}}— L'ID del gruppo di replica.
+ {{<user-group-id>}}— L'ID del gruppo di utenti che hai creato sopra.

Per le cache serverless:

Per Linux, macOS o Unix:

```
aws elasticache modify-serverless-cache \
  --serverless-cache-name {{<serverless-cache-name>}} \
  --user-group-id {{<user-group-id>}}
```

Per Windows:

```
aws elasticache modify-serverless-cache ^
  --serverless-cache-name {{<serverless-cache-name>}} ^
  --user-group-id {{<user-group-id>}}
```

Sostituire:
+ {{<serverless-cache-name>}}— Il nome della cache serverless.
+ {{<user-group-id>}}— L'ID del gruppo di utenti che hai creato sopra.

### Passaggio 3: verifica entrambi i metodi di autenticazione
<a name="auth-to-iam-verify-dual"></a>

Dopo aver completato il passaggio 2, la cache supporta entrambi i metodi di autenticazione. Verifica che le applicazioni possano connettersi utilizzando entrambi i metodi prima di procedere.
+ Le applicazioni che utilizzano l'autenticazione basata su password possono continuare a connettersi con la password.
+ Le applicazioni configurate per l'autenticazione IAM possono connettersi utilizzando token IAM.

### Fase 4: Connect con IAM
<a name="auth-to-iam-connect"></a>

**Genera un token di autenticazione IAM**

Genera un token di autenticazione IAM di breve durata utilizzando una richiesta [AWS prefirmata SigV4](https://docs.aws.amazon.com//general/latest/gr/sigv4-signed-request-examples.html). Il seguente esempio in Python dimostra la generazione di token.

```
import boto3
from botocore.auth import SigV4QueryAuth
from botocore.awsrequest import AWSRequest

cache_name = "<cache-name>"
user = "<username>"
region = "<region>"
expires = 900

session = boto3.Session()
credentials = session.get_credentials().get_frozen_credentials()

req = AWSRequest(
    method="GET",
    url=f"http://{cache_name}/",
    params={"Action": "connect", "User": user}
)
SigV4QueryAuth(credentials, "elasticache", region, expires=expires).add_auth(req)

token = req.url.replace("http://", "")
print(token)
```

**Nota**  
Il token generato è valido per un massimo di 15 minuti dalla creazione.

**Connect usando valkey-cli**

Connect alla ElastiCache cache utilizzando il token generato. Puoi usare entrambi **valkey-cli** o **redis-cli** per connetterti ai cluster Valkey. Per i cluster Redis OSS, usa. **redis-cli**

```
valkey-cli -h {{<host>}} -p 6379 --tls
```

Per i cluster abilitati alla modalità cluster, aggiungi il flag: `--cluster`

```
valkey-cli -h {{<host>}} -p 6379 --tls --cluster
```

Quindi esegui l'autenticazione con il seguente comando:

```
AUTH {{<username>}} {{<token>}}
```

Sostituire:
+ {{<host>}}— L'endpoint della cache.
+ {{<username>}}— Il nome utente dell' IAM-authenticated utente.
+ {{<token>}}— Il token di autenticazione IAM che hai generato.

Output previsto:

```
OK
```

Esegui il comando seguente per convalidare il nome utente:

```
ACL WHOAMI
```

### Fase 5: Integrazione delle applicazioni
<a name="auth-to-iam-app-integration"></a>

Per le applicazioni Java, utilizzate la catena di provider AWS Credentials predefinita per generare credenziali di sicurezza temporanee. Per ulteriori informazioni, consulta [Autenticazione con IAM](auth-iam.md). Per altre lingue, genera il token di autenticazione IAM utilizzando il [processo di AWS firma Signature Version 4](https://docs.aws.amazon.com//general/latest/gr/signature-version-4.html) e passalo come password nel comando del `AUTH` client.

## Completamento della migrazione
<a name="auth-to-iam-completing"></a>

Dopo che le applicazioni sono riuscite a connettersi utilizzando l'autenticazione IAM, completa i seguenti passaggi per finalizzare la migrazione.

### Passaggio 1: configura l'autenticazione IAM con fallback
<a name="auth-to-iam-fallback"></a>

Prima di rimuovere l'utente basato su password, aggiorna il codice dell'applicazione per utilizzare l'autenticazione IAM come metodo principale, mantenendo l'utente basato su password come riserva.

Nel codice dell'applicazione:
+ Configura il tuo client per l'autenticazione utilizzando IAM-generated i token come metodo principale.
+ Aggiungi un meccanismo di fallback in modo che se l'autenticazione IAM fallisce (ad esempio, a causa della scadenza del token o di un errore di generazione), il client riprovi a utilizzare la credenziale AUTH basata su password.
+ Registra tutti i tentativi di autenticazione, inclusi fallback e nuovi tentativi, in modo da poter monitorare se alcune connessioni stanno ricorrendo all'autenticazione basata su password.

### Fase 2: Monitoraggio e verifica
<a name="auth-to-iam-monitor"></a>

Controlla i log delle applicazioni `IamAuthenticationExpirations` e i CloudWatch parametri di `IamAuthenticationThrottling` Amazon per almeno 24-48 ore per confermare che tutte le connessioni avvengano tramite IAM.

Un valore diverso da zero per entrambi i parametri giustifica un'indagine:
+ `IamAuthenticationExpirations`— Una connessione autenticata IAM viene disconnessa automaticamente dopo 12 ore. La connessione può essere prolungata inviando un `HELLO` comando `AUTH` or con un nuovo token di autenticazione IAM.
+ `IamAuthenticationThrottling`— Indica troppe richieste di autenticazione, il che potrebbe significare che l'applicazione sta generando token in modo troppo aggressivo o che presenta problemi di pool di connessioni.

Per i cluster basati su nodi, puoi eseguire controlli aggiuntivi a livello di motore:
+ `ACL LOG`— Verifica i tentativi di autenticazione falliti. Cerca le voci con`reason=auth`.
+ `CLIENT LIST`— Verifica gli utenti connessi. Controlla il `user=` campo per confermare che i client utilizzano l'utente IAM.

`ACL LOG`e `CLIENT LIST` sono disponibili solo su cluster basati su nodi. Per le implementazioni ElastiCache serverless, affidati alla registrazione lato applicazione e ai parametri di Amazon. CloudWatch 

### Passaggio 3: rimuovere l'utente basato su password
<a name="auth-to-iam-remove-user"></a>

Dopo aver confermato che tutte le applicazioni utilizzano l'autenticazione IAM, rimuovi l'utente basato su password dal gruppo di utenti.

**Cache Valkey**

Rimuovi direttamente l'utente basato su password:

Per Linux, macOS o Unix:

```
aws elasticache modify-user-group \
   --user-group-id {{<user-group-id>}} \
   --user-ids-to-remove {{<password-user-id>}}
```

Per Windows:

```
aws elasticache modify-user-group ^
   --user-group-id {{<user-group-id>}} ^
   --user-ids-to-remove {{<password-user-id>}}
```

**Cache Redis OSS**

Per le cache Redis OSS, il gruppo di utenti deve sempre contenere un utente con il nome utente. `default` Se l'utente basato su password che hai creato nel passaggio 1 ha il nome utente`default`, devi creare un utente segnaposto disabilitato per sostituirlo prima di rimuoverlo:

Per Linux, macOS o Unix:

```
aws elasticache create-user \
   --user-id {{<disabled-default-id>}} \
   --user-name default \
   --engine redis \
   --no-password-required \
   --access-string "off ~* -@all"
```

Per Windows:

```
aws elasticache create-user ^
   --user-id {{<disabled-default-id>}} ^
   --user-name default ^
   --engine redis ^
   --no-password-required ^
   --access-string "off ~* -@all"
```

Quindi aggiungi l'utente disabilitato al gruppo e rimuovi l'utente basato su password:

Per Linux, macOS o Unix:

```
aws elasticache modify-user-group \
   --user-group-id {{<user-group-id>}} \
   --user-ids-to-add {{<disabled-default-id>}} \
   --user-ids-to-remove {{<password-user-id>}}
```

Per Windows:

```
aws elasticache modify-user-group ^
   --user-group-id {{<user-group-id>}} ^
   --user-ids-to-add {{<disabled-default-id>}} ^
   --user-ids-to-remove {{<password-user-id>}}
```

Se l'utente basato su password creato nel passaggio 1 non dispone del nome utente`default`, è possibile rimuoverlo direttamente utilizzando lo stesso comando mostrato sopra per le cache Valkey.

Sostituire:
+ {{<disabled-default-id>}}— Un ID univoco per l'utente segnaposto disattivato (solo Redis OSS).
+ {{<user-group-id>}}— L'ID del gruppo di utenti associato alla cache.
+ {{<password-user-id>}}— L'ID utente dell'utente basato su password da rimuovere.

**Nota**  
Non eliminare l'utente basato su password dopo averlo rimosso dal gruppo di utenti. Tienilo disponibile nel caso in cui sia necessario ripristinare l'autenticazione basata su password.

### Fase 4: Conferma dopo la rimozione
<a name="auth-to-iam-confirm"></a>

Dopo aver rimosso l'utente basato su password dal gruppo di utenti, monitora la metrica Amazon`AuthenticationFailures`. CloudWatch Un valore costante pari a zero conferma che non si verificano errori di autenticazione, compresi eventuali tentativi residui basati su password. Imposta un CloudWatch allarme su questa metrica per rilevare tentativi imprevisti.

Per i cluster basati su nodi, puoi anche verificare utilizzando e. `ACL LOG` `CLIENT LIST` Per le cache serverless, affidati alla registrazione e alle metriche sul lato dell'applicazione. CloudWatch 

## Procedura di rollback
<a name="auth-to-iam-rollback"></a>

Re-add l'utente basato su password passa al gruppo di utenti, quindi ripristina l'autenticazione basata su password nell'applicazione durante l'analisi.

Per le cache Valkey:

Per Linux, macOS o Unix:

```
aws elasticache modify-user-group \
   --user-group-id {{<user-group-id>}} \
   --user-ids-to-add {{<password-user-id>}}
```

Per Windows:

```
aws elasticache modify-user-group ^
   --user-group-id {{<user-group-id>}} ^
   --user-ids-to-add {{<password-user-id>}}
```

Per le cache Redis OSS in cui l'utente basato su password non dispone del nome `default` utente, usa lo stesso comando precedente.

Per le cache Redis OSS in cui hai creato un utente segnaposto disabilitato[Passaggio 3: rimuovere l'utente basato su password](#auth-to-iam-remove-user), aggiungi l'utente basato su password e rimuovi l'utente segnaposto disabilitato con un'unica operazione:

Per Linux, macOS o Unix:

```
aws elasticache modify-user-group \
   --user-group-id {{<user-group-id>}} \
   --user-ids-to-add {{<password-user-id>}} \
   --user-ids-to-remove {{<disabled-default-id>}}
```

Per Windows:

```
aws elasticache modify-user-group ^
   --user-group-id {{<user-group-id>}} ^
   --user-ids-to-add {{<password-user-id>}} ^
   --user-ids-to-remove {{<disabled-default-id>}}
```

Sostituire:
+ {{<user-group-id>}}— L'ID del gruppo di utenti associato alla cache.
+ {{<password-user-id>}}— L'ID utente dell'utente basato su password da aggiungere nuovamente.
+ {{<disabled-default-id>}}— L'ID utente dell'utente segnaposto disabilitato (solo Redis OSS).