Gestire l'autenticazione IAM

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'operazione create 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

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

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

  3. Per il tuo progetto, abilita l'API Memorystore for Redis.

    API Memorystore for Redis

  4. Installa redis-cli sulla VM Compute Engine eseguendo questo comando dal terminale SSH di Compute Engine:

    sudo apt-get install redis-tools
    
  5. Esegui questo comando per ottenere un token di accesso per il tuo utente IAM:

    gcloud auth print-access-token
    
  6. Connettiti all'endpoint di rilevamento dell'istanza:

    redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    Sostituisci quanto segue:

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

  8. 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
  9. Per verificare di disporre di una connessione autenticata al nodo, esegui un comando Redis SET e GET.

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

  1. (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 .
  2. 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
  3. 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

-WRONGPASS invalid username-password pair or user is disabled

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.

-NOAUTH Authentication required

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.

-ERR (ERR_IAM_EXHAUSTED) Memorystore IAM authentication backend quota exceeded. See https://cloud.google.com/memorystore/docs/cluster/manage-iam-auth#error_messages.

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.

-ERR (ERR_IAM_OTHER) Memorystore IAM authentication backend error. See https://cloud.google.com/memorystore/docs/cluster/manage-iam-auth#error_messages.

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.