Questa pagina fornisce istruzioni sulle attività comuni per la funzionalità di autenticazione IAM per Memorystore for Redis Cluster. Per ulteriori dettagli sulla funzionalità, consulta Informazioni sull'autenticazione IAM.
Crea un'istanza con l'autenticazione IAM
Per creare un'istanza Memorystore for Redis Cluster che utilizza l'autenticazione IAM, esegui il comando create
:
gcloud redis clusters create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth
Sostituisci quanto segue:
INSTANCE_ID è l'ID dell'istanza Memorystore for Redis Cluster che stai creando. L'ID istanza deve contenere da 1 a 63 caratteri e utilizzare solo lettere minuscole, numeri o trattini. Deve iniziare con una lettera minuscola e terminare con una lettera minuscola o un numero.
REGION_ID è la regione in cui vuoi posizionare l'istanza.
NETWORK è la rete utilizzata per creare l'istanza. Deve utilizzare il formato:
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID
. L'ID di rete utilizzato qui deve corrispondere all'ID di rete utilizzato dal criterio di connessione al servizio. In caso contrario, l'operazionecreate
non va a buon fine. Per maggiori dettagli, consulta la sezione Networking.NODE_TYPE è il tipo di nodo scelto. I valori accettati sono:
redis-shared-core-nano
redis-standard-small
redis-highmem-medium
redis-highmem-xlarge
SHARD_COUNT determina il numero di shard nella tua istanza. Il numero di shard determina la capacità di memoria totale per l'archiviazione dei dati del cluster. Per visualizzare ulteriori dettagli sulla specifica del cluster, consulta Specifica di cluster e nodi.
Concedi le autorizzazioni per l'autenticazione IAM
Per concedere un accesso IAM, assegna all'entità il ruolo
roles/redis.dbConnectionUser
utilizzando le istruzioni per la concessione del ruolo IAM.
Per impostazione predefinita, la concessione del ruolo roles/redis.dbConnectionUser
a un'entità consente
all'entità di accedere a tutte le istanze del progetto.
Creare un ruolo amministratore IAM limitato per un'istanza
Potresti voler creare un ruolo che possa modificare le autorizzazioni IAM di connessione all'istanza senza concedere l'accesso completo all'amministratore IAM. A questo scopo, crea un amministratore IAM limitato per il ruolo
roles/redis.dbConnectionUser
. Per maggiori dettagli, consulta Creare amministratori IAM con accesso limitato.
Connettersi a un'istanza che utilizza l'autenticazione IAM
Se non hai già una VM di Compute Engine che utilizza la stessa rete autorizzata del cluster Redis, creane una e connettiti seguendo la Guida rapida all'utilizzo di una VM Linux.
Per il tuo progetto, abilita l'ambito dell'API Cloud Platform. Per saperne di più sull'attivazione di questo ambito di accesso, consulta Collegare il account di servizio e aggiornare l'ambito di accesso. Per saperne di più sulle best practice per questo ambito, consulta Best practice per gli ambiti.
Per il tuo progetto, abilita l'API Memorystore for Redis.
Installa redis-cli sulla VM Compute Engine eseguendo questo comando dal terminale SSH di Compute Engine:
sudo apt-get install redis-tools
Esegui questo comando per ottenere un token di accesso per il tuo utente IAM:
gcloud auth print-access-token
Connettiti all'endpoint di rilevamento dell'istanza:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
Sostituisci quanto segue:
NETWORK_ADDRESS è l'indirizzo di rete dell'istanza. Per visualizzare l'indirizzo di rete, consulta Visualizzare le informazioni sull'istanza.
PORT è il numero di porta delle istanze. Per visualizzare il numero di porta, consulta Visualizzare le informazioni sull'istanza.
ACCESS_TOKEN è il token di accesso IAM recuperato nei passaggi precedenti.
Esegui il comando
CLUSTER SHARDS
per visualizzare la topologia del cluster. Prendi nota di uno degli indirizzi IP e dei numeri di porta del nodo.Per utilizzare
redis-cli
per autenticarti e connetterti al tuo nodo, utilizza il comando seguente:redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
Sostituisci quanto segue:
- NODE_IP_ADDRESS: l'indirizzo IP del nodo trovato nel passaggio precedente
- NODE_PORT: il numero di porta del nodo che hai trovato nel passaggio precedente
- ACCESS_TOKEN: il token di accesso IAM recuperato nei passaggi precedenti
Per verificare di disporre di una connessione autenticata al nodo, esegui un comando Redis
SET
eGET
.Elimina la VM di Compute Engine che hai utilizzato per connetterti al cluster Redis. In questo modo, eviti di incorrere in addebiti sul tuoaccount di fatturazione Cloudg.
Automatizzare il recupero del token di accesso
(Facoltativo) Se non l'hai ancora fatto, crea un account di servizio per la tua applicazione (vedi Creazione e gestione di un service account).
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Sostituisci quanto segue:
- SA_NAME è il nome del account di servizio.
- DESCRIPTION è una descrizione facoltativa del account di servizio.
- DISPLAY_NAME è il nome di un account di servizio da visualizzare nella consoleGoogle Cloud .
Concedi al tuo account di servizio l'autorizzazione
redis.dbConnectionUser
sul tuo progetto.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE_NAME"
Sostituisci quanto segue:
- PROJECT_ID: l'ID progetto
- SA_NAME: il nome del account di servizio
- ROLE_NAME: il nome di un ruolo, ad esempio
redis.dbConnectionUser
Autentica l'applicazione come account di servizio specificato. Per saperne di più, consulta Service account.
Esempio di codice per la connessione a un'istanza che utilizza l'autenticazione IAM
Puoi visualizzare un esempio di codice che mostra come autenticare la tua applicazione utilizzando librerie client popolari. Inoltre, puoi vedere come utilizzare questo esempio di codice per connetterti a un'istanza che utilizza l'autenticazione IAM.
Risoluzione dei problemi relativi ai messaggi di errore con l'autenticazione IAM
Messaggio di errore | Azione consigliata | Descrizione |
---|---|---|
|
Verifica il nome utente e il token di accesso forniti al server Memorystore for Redis Cluster | Il nome utente o il token di accesso forniti non sono validi. "default" è l'unico nome utente supportato. Se la tua applicazione utilizza già il nome utente "default", verifica che il token di accesso non sia scaduto e che venga recuperato seguendo le istruzioni riportate in Connettersi a un'istanza che utilizza l'autenticazione IAM. La propagazione delle autorizzazioni IAM potrebbe richiedere alcuni minuti se sono state modificate di recente. |
|
Verifica che l'applicazione sia configurata per fornire un token di accesso IAM al server Memorystore for Redis Cluster | L'applicazione non fornisce un token di accesso al server Memorystore for Redis Cluster. Verifica che l'applicazione sia configurata per fornire un token di accesso seguendo le istruzioni riportate in Connettersi a un'istanza che utilizza l'autenticazione IAM. |
|
Esegui nuovi tentativi con backoff esponenziale | Il backend IAM è sovraccarico e ha restituito un errore di superamento della quota al server Memorystore for Redis Cluster. Le applicazioni devono tentare di ripetere l'operazione con backoff esponenziale per evitare ulteriori errori di connessione. |
|
Esegui nuovi tentativi con backoff esponenziale | Il backend IAM ha restituito un errore temporaneo al server Memorystore for Redis Cluster. Le applicazioni devono tentare di ripetere l'operazione con backoff esponenziale per evitare ulteriori errori di connessione. |