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 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
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.
Prerequisiti
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).
-
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. -
Alla tua applicazione non si applicano limitazioni di autenticazione IAM aggiuntive. Per l'elenco completo delle limitazioni, consultaAutenticazione con IAM.
Processo di migrazione
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
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:valkeyoredis.<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:valkeyoredis.
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:valkeyoredis.<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
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
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.
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
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. Per 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 client.
Completamento della migrazione
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
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
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 unHELLOcomandoAUTHor 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 conreason=auth. -
CLIENT LIST— Verifica gli utenti connessi. Controlla iluser=campo per confermare che i client utilizzano l'utente IAM.
ACL LOGe 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
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 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 creato nel passaggio 1 non dispone del nome utentedefault, è 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
Dopo aver rimosso l'utente basato su password dal gruppo di utenti, monitora la metrica AmazonAuthenticationFailures. 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
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 disabilitatoPassaggio 3: rimuovere l'utente basato su password, 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).