Memorystore fornisce la funzionalità di autenticazione IAM (Identity and Access Management) che sfrutta IAM per aiutarti a gestire meglio l'accesso con le credenziali per utenti e account di servizio. L'autenticazione basata su IAM si integra con Redis AUTH, consentendoti di ruotare senza problemi le credenziali (token IAM) senza dover utilizzare password statiche.
Per istruzioni sulla configurazione dell'autenticazione IAM per il cluster Memorystore, consulta Gestire l'autenticazione IAM.
Autenticazione IAM per Redis
Quando utilizzi l'autenticazione IAM, l'autorizzazione per accedere a un cluster Memorystore non viene concessa direttamente all'utente finale. Le autorizzazioni sono invece raggruppate in ruoli, che vengono concessi alle entità. Per saperne di più, consulta la panoramica di IAM.
Gli amministratori che eseguono l'autenticazione con IAM possono utilizzare l'autenticazione IAM di Memorystore per gestire centralmente il controllo dell'accesso alle proprie istanze utilizzando i criteri IAM. I criteri IAM coinvolgono le seguenti entità:
Entità. In Memorystore, puoi utilizzare due tipi di entità: un account utente e un account di servizio (per le applicazioni). Altri tipi di entità, come i gruppi Google, i domini Google Workspace o i domini Cloud Identity, non sono ancora supportati per l'autenticazione IAM. Per saperne di più, consulta Concetti correlati all'identità.
Ruoli. Per l'autenticazione IAM di Memorystore, un utente richiede l'autorizzazione redis.clusters.connect per eseguire l'autenticazione con un cluster. Per ottenere questa autorizzazione, puoi associare l'utente o il account di servizio al ruolo predefinito Utente di connessione al database del cluster Redis (roles/redis.dbConnectionUser). Per saperne di più sui ruoli IAM, consulta Ruoli.
Risorse. Le risorse a cui le entità accedono sono i cluster Memorystore. Per impostazione predefinita, le associazioni dei criteri IAM vengono applicate a livello di progetto, in modo che le entità ricevano le autorizzazioni dei ruoli per tutte le istanze Memorystore nel progetto. Tuttavia, le associazioni dei criteri IAM possono essere limitate a un cluster specifico. Per le istruzioni, consulta Gestire le autorizzazioni per l'autenticazione IAM.
Comando Redis AUTH
La funzionalità di autenticazione IAM utilizza il comando Redis AUTH per integrarsi con IAM, consentendo ai client di fornire un token di accesso IAM che verrà verificato dal cluster Memorystore prima di consentire l'accesso ai dati.
Come ogni comando, il comando AUTH viene inviato senza crittografia, a meno che non sia abilitata la crittografia dei dati in transito.
Per un esempio di come può apparire il comando AUTH, consulta Connettersi a un cluster Redis che utilizza l'autenticazione IAM.
Periodo di validità del token di accesso IAM
Per impostazione predefinita, il token di accesso IAM che recuperi nell'ambito dell'autenticazione scade un'ora dopo il recupero. In alternativa, quando generi il token di accesso, puoi estendere il tempo di scadenza del token fino a 12 ore.
Quando stabilisci una nuova connessione Redis, devi presentare un token di accesso valido utilizzando il comando AUTH. Se il token scade, devi ottenerne uno nuovo per stabilire nuove connessioni. Tuttavia, se hai già autenticato una connessione esistente, questa continua a funzionare, anche se il token scade.
Terminare una connessione autenticata
Se vuoi terminare la connessione, utilizza il comando Redis CLIENT KILL. Per trovare la connessione che vuoi terminare, esegui prima CLIENT LIST, che restituisce le connessioni client in ordine di età. Puoi quindi eseguire CLIENT KILL per terminare la connessione.
Abilitare l'autenticazione IAM
L'abilitazione dell'autenticazione IAM non peggiora le prestazioni in stato stazionario. Tuttavia, influisce sulla velocità con cui puoi stabilire una connessione.
L'abilitazione dell'autenticazione IAM limita la velocità delle connessioni client stabilite ogni secondo. Questo perché l'autenticazione IAM di Google Cloud deve autenticare ogni nuova connessione. In stato stazionario, un'applicazione abilita i pool di connessioni, quindi questo impatto è trascurabile. Tuttavia, quando le applicazioni client vengono aggiornate tramite deployment o elaborazione di rimbalzi, potrebbe verificarsi un afflusso di connessioni ristabilite. Se aggiorni i client gradualmente e implementi i backoff esponenziali, puoi assorbire questa velocità ridotta.
Per visualizzare un esempio di codice su come utilizzare l'autenticazione IAM, consulta Esempio di codice per l'autenticazione IAM e la crittografia dei dati in transito.
Best practice per evitare la doppia memorizzazione nella cache dei token
Per evitare errori di autenticazione causati dalla doppia memorizzazione nella cache dei token, segui queste best practice:
- Recupera i token on demand: utilizza i provider di credenziali dinamiche o i callback forniti dalla libreria client (come redis-py, Lettuce o Jedis) per recuperare i token on demand per le nuove connessioni.
- Ispeziona i timestamp di scadenza: se utilizzi una pianificazione di aggiornamento personalizzata, ispeziona il timestamp di scadenza effettivo del token o regola la soglia di aggiornamento rapido della libreria di autenticazione.
Sicurezza e privacy
L'autenticazione IAM ti aiuta a garantire che il tuo cluster Redis sia accessibile solo dalle entità IAM autorizzate. La crittografia TLS non viene fornita a meno che non sia abilitata la crittografia dei dati in transito. Per questo motivo, ti consigliamo di attivare la crittografia dei dati in transito quando utilizzi l'autenticazione IAM.
Connettersi con una VM Compute Engine
Se utilizzi una VM Compute Engine per connetterti a un'istanza che utilizza l'autenticazione IAM, devi abilitare i seguenti ambiti di accesso e API per il tuo progetto:
Ambito API Cloud Platform. Per istruzioni su come abilitare questo ambito, consulta Collegare il account di servizio e aggiornare l'ambito di accesso. Per una descrizione delle best practice per questo ambito di accesso, consulta Best practice per gli ambiti.
API Memorystore for Redis Cluster. Per un link per abilitare l'API, fai clic sul pulsante seguente:
Memorystore for Redis Cluster