View a markdown version of this page

Migrazione dall'autenticazione basata su password (AUTH) all'autenticazione IAM - Amazon ElastiCache

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

Questa guida descrive come migrare il cluster Amazon basato su ElastiCache nodi 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

L'autenticazione IAM offre una maggiore sicurezza eliminando la necessità di password di lunga durata. Invece, le applicazioni generano token di autenticazione di breve durata (validi fino a 15 minuti) utilizzando il processo di AWS firma Signature Version 4.

Prerequisiti

Prima di iniziare, verifica quanto segue:

  • Nella cache è in esecuzione Redis OSS 7.0 o successivo 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).

  • Disponi delle autorizzazioni IAM necessarie per creare utenti e modificare gruppi di utenti. Per ulteriori informazioni, consulta Come ElastiCache funziona Amazon con IAM.

  • Il ruolo o l'utente IAM utilizzato dall'applicazione dispone di una policy IAM che consente l'elasticache:Connectazione per la cache di destinazione e l'utente IAM. Per ulteriori informazioni, consulta Autenticazione con IAM.

  • Non si applicano ulteriori limitazioni di autenticazione IAM all'applicazione. Per l'elenco completo delle limitazioni, consultaAutenticazione con IAM.

Processo di migrazione

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

Fase 1: Creazione degli utenti

Crea due ElastiCache utenti in modo che la cache supporti sia l'autenticazione basata su password che quella 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 oredis.

  • <your-existing-auth-password>— Il token AUTH attualmente configurato nella cache.

- Crea un utente IAM-authenticated

Usa il AWS CLI comando seguente 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 dell'utente IAM.

  • <engine>— Il motore utilizzato dalla cache: valkey oredis.

Fase 2: Creare e allegare un gruppo di utenti

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.

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

  • <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 tua cache serverless.

  • <user-group-id>— L'ID del gruppo di utenti che hai creato sopra.

Passaggio 3: verifica entrambi i metodi di autenticazione

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 i token IAM.

Fase 4: Connettiti con IAM

Genera un token di autenticazione IAM

Genera un token di autenticazione IAM di breve durata utilizzando una richiesta AWS prefirmata SIGv4. 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.

Connettiti usando valkey-cli

Connettiti alla tua ElastiCache cache utilizzando il token generato. Puoi usare uno dei due 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 tua cache.

  • <username>— Il nome utente dell' IAM-authenticated utente.

  • <token>— Il token di autenticazione IAM che hai generato.

Output previsto:

OK

Esegui il seguente comando per convalidare il nome utente:

ACL WHOAMI

Fase 5: Integrazione dell'applicazione

Per le applicazioni Java, utilizza la catena di provider AWS Credentials predefinita per generare credenziali di sicurezza temporanee. Per ulteriori informazioni, consulta Autenticazione con IAM. Per le altre lingue, genera il token di autenticazione IAM utilizzando il processo di AWS firma Signature Version 4 e passalo come password nel comando del AUTH cliente.

Completamento della migrazione

Dopo che le applicazioni possono connettersi tramite l'autenticazione IAM, completa i passaggi seguenti per finalizzare la migrazione.

Passaggio 1: configura l'autenticazione IAM con fallback

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 riserva in modo che se l'autenticazione IAM fallisce (ad esempio, a causa della scadenza del token o di un errore di generazione), il client riprova utilizzando 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 tornando all'autenticazione basata su password.

Fase 2: Monitoraggio e verifica

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

Un valore diverso da zero per entrambe le metriche richiede un'indagine:

  • IamAuthenticationExpirations— Una connessione autenticata IAM viene automaticamente disconnessa dopo 12 ore. La connessione può essere prolungata inviando un HELLO comando AUTH or con un nuovo token di autenticazione IAM.

  • IamAuthenticationThrottling— Indica un numero eccessivo di richieste di autenticazione, il che potrebbe significare che l'applicazione sta generando token in modo troppo aggressivo o presenta problemi di pool di connessioni.

Per i cluster basati su nodi, è possibile eseguire controlli aggiuntivi a livello di motore:

  • ACL LOG— Verifica la presenza di tentativi di autenticazione non riusciti. Cerca le voci conreason=auth.

  • CLIENT LIST— Verifica gli utenti connessi. Seleziona il user= campo per confermare che i clienti utilizzano l'utente IAM.

ACL LOGe CLIENT LIST sono disponibili solo su cluster basati su nodi. Per le distribuzioni ElastiCache serverless, affidati alla registrazione lato applicazione e alle metriche di Amazon. CloudWatch

Passaggio 3: rimuovere l'utente basato su password

Una volta 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 sulla 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 OSS Redis

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 utentedefault, 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 che hai creato nel passaggio 1 non ha il nome utentedefault, puoi rimuoverlo direttamente usando lo stesso comando mostrato sopra per le cache di Valkey.

Sostituire:

  • <disabled-default-id>— Un ID univoco per l'utente segnaposto disabilitato (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 sulla password dopo averlo rimosso dal gruppo di utenti. Tienilo disponibile nel caso in cui sia necessario ripristinare l'autenticazione basata su password.

Passaggio 4: conferma dopo la rimozione

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 sono verificati errori di autenticazione, inclusi 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 lato applicazione. CloudWatch

Procedura di rollback

Re-add inserisci l'utente basato su password nel gruppo di utenti, quindi ripristina l'autenticazione basata su password nell'applicazione mentre esegui le indagini.

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 ha il nome default utente, usa lo stesso comando precedente.

Per le cache Redis OSS in cui hai creato un utente segnaposto disabilitatoPassaggio 3: rimuovere l'utente basato su password, aggiungi l'utente basato su password e rimuovi l'utente segnaposto disabilitato in 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).