Gestire l'autenticazione IAM

Questa pagina fornisce istruzioni sulle attività comuni per la funzionalità di autenticazione IAM per Memorystore for Redis Cluster. Per maggiori 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 di 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 che hai 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 autorizzazioni per l'autenticazione IAM

Per concedere l'accesso IAM, segui le istruzioni riportate in Concedere un ruolo IAM per concedere il ruolo roles/redis.dbConnectionUser all'entità. L'entità è un'identità a cui puoi concedere l'accesso alle risorse in Google Cloud. Ad esempio, un principal può essere unaccount di serviziot che può accedere al tuo progetto Google Cloud .

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, utilizza il comando gcloud compute instances set-service-account per impostare un account di servizio e abilitare l'ambito dell'API Cloud Platform per la tua VM Compute Engine.

    gcloud compute instances set-service-account VM_NAME \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --scopes=SCOPE
    

    Effettua le seguenti sostituzioni:

    • VM_NAME: il nome della VM Compute Engine
    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email del account di servizio
    • SCOPE: l'ambito API Cloud Platform per la VM (cloud-platform)

    Ad esempio, il seguente comando assegna il account di servizio my-sa-123@my-project-123.iam.gserviceaccount.com a una VM denominata example-VM e imposta l'ambito di accesso su quella VM all'API Cloud Platform:

    gcloud compute instances set-service-account example-VM \
    --service-account=my-sa-123@my-project-123.iam.gserviceaccount.com \
    --scopes=cloud-platform
    

    Per saperne di più sull'attivazione di questo ambito di accesso, consulta Collega il account di servizio e aggiorna l'ambito di accesso. Per ulteriori informazioni 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 il seguente 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 tuo account di fatturazione Cloud.

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 è un nome di 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: un nome di 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 questoesempio di codicee 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. Se sono state modificate di recente, la propagazione delle autorizzazioni IAM potrebbe richiedere alcuni minuti.

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

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

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