Autenticazione IAM

Google Cloud offre Identity and Access Management (IAM), che ti consente di concedere accesso a risorse Google Cloud specifiche e di impedire l'accesso indesiderato ad altre risorse. Questa pagina descrive come Cloud SQL è integrato con IAM e come puoi utilizzare IAM per gestire l'accesso alle risorse Cloud SQL e per l'autenticazione del database. Per una descrizione dettagliata di Google Cloud IAM, consulta la documentazione di IAM.

Cloud SQL fornisce un insieme di ruoli predefiniti progettati per aiutarti a controllare l'accesso alle risorse Cloud SQL. Puoi anche creare i tuoi ruoli personalizzati se i ruoli predefiniti non forniscono gli insiemi di autorizzazioni di cui hai bisogno. Inoltre, sono ancora disponibili anche i ruoli di base precedenti (Editor, Visualizzatore e Proprietario), anche se non forniscono lo stesso controllo granulare dei ruoli Cloud SQL. In particolare, i ruoli di base forniscono l'accesso alle risorse di Google Cloud, non solo a Cloud SQL. Per ulteriori informazioni sui ruoli di base di Google Cloud, consulta Ruoli di base.

Puoi impostare un criterio IAM a qualsiasi livello della gerarchia delle risorse: a livello di organizzazione, di cartella o di progetto. Le risorse ereditano i criteri di tutte le risorse principali.

Riferimenti IAM per Cloud SQL

Concetti di autenticazione IAM

Quando utilizzi l'autenticazione IAM, l'autorizzazione per accedere a una risorsa (un'istanza Cloud SQL) non viene concessa direttamente all'utente finale. Le autorizzazioni vengono invece raggruppate in ruoli e i ruoli vengono concessi alle entità. Per maggiori informazioni, consulta la panoramica di IAM.

Gli amministratori che consentono agli utenti di accedere tramite l'autenticazione IAM dei database possono utilizzare l'autenticazione IAM per gestire centralmente il controllo dell'accesso'accesso alle loro istanze utilizzando i criteri IAM.

I criteri IAM coinvolgono le seguenti entità:

  • Direttori. In Cloud SQL puoi utilizzare diversi tipi di entità: un account utente, un account di servizio (per le applicazioni) o un gruppo. Per ulteriori informazioni, consulta Concetti correlati all'identità.
  • Ruoli. Un ruolo è una raccolta di autorizzazioni. Puoi assegnare ruoli ai principali per fornire loro i privilegi necessari per svolgere attività specifiche. Ad esempio, con l'autenticazione del database IAM, un'entità richiede l'autorizzazione cloudsql.instances.login per accedere a un'istanza, che è inclusa nel ruolo Utente istanza Cloud SQL. Per ottenere l'autorizzazione, devi associare l'utente, l'account di servizio o il gruppo al ruolo Cloud SQL predefinito o a un ruolo personalizzato che includa l'autorizzazione. Per ulteriori informazioni sui ruoli IAM, consulta Ruoli.
  • Risorsa. Le risorse a cui accedono gli amministratori sono istanze Cloud SQL. 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 Cloud SQL del progetto.

Autenticazione database IAM

L'autenticazione del database è il processo di verifica dell'identità di un utente che sta tentando di accedere ai database. In Cloud SQL, puoi utilizzare i seguenti tipi di autenticazione del database per gli utenti del database:

  • L'autenticazione integrata del database utilizza un nome utente e una password per autenticare un utente del database.
  • L'autenticazione IAM dei database utilizza IAM per autenticare un utente utilizzando un token di accesso. Hai a disposizione due opzioni per gestire gli utenti o gli account di servizio.
    • Singolarmente: per impostazione predefinita, quando utilizzi l'autenticazione IAM dei database, concedi i ruoli IAM e assegni i privilegi di database a singoli utenti e account di servizio. Aggiungi singoli account alle istanze e gestisci i privilegi di ciascun account separatamente.
    • Per gruppo: l'autenticazione di gruppo IAM ti consente di controllare l'accesso alle istanze Cloud SQL a livello di gruppo. Ad esempio, puoi assegnare ruoli di Identity and Access Management e privilegi di database a un gruppo Cloud Identity. Tutti gli utenti e gli account di servizio nel gruppo Cloud Identity ereditano i ruoli IAM e i privilegi del database assegnati al gruppo.

Confronta le opzioni di autenticazione del database

La seguente tabella mette a confronto i diversi metodi di autenticazione del database per Cloud SQL.

Funzionalità Autenticazione del database integrata Autenticazione database IAM (individuo) Autenticazione del gruppo IAM
Metodo di autenticazione Password Token di autenticazione temporaneo Token di autenticazione temporaneo
Crittografia del traffico di rete SSL non richiesto SSL obbligatorio SSL obbligatorio
Gestione utenti Manuale Centralizzata tramite IAM Centralizzato tramite i gruppi IAM e Cloud Identity

Autenticazione del gruppo IAM

L'autenticazione di gruppo IAM ti consente di gestire gli utenti Cloud SQL a livello di gruppo. Un esempio di gruppo include un gruppo Cloud Identity. Questa funzionalità semplifica la gestione degli utenti del database. Puoi gestire il ruolo o le autorizzazioni IAM di Cloud SQL per più account contemporaneamente, anziché dover aggiornare ogni utente o account di servizio singolarmente. Puoi anche concedere e revocare i privilegi di database per un gruppo Cloud Identity. Tutti i nuovi account aggiunti al gruppo Cloud Identity ereditano i privilegi di quel gruppo.

Con l'autenticazione di gruppo IAM, puoi:

  • Aggiungi un utente a un gruppo e fai in modo che erediti automaticamente i ruoli IAM e i privilegi di database.
  • Rimuovi un utente da un gruppo per rimuovere il suo accesso e i suoi privilegi di database dai database Cloud SQL.
  • Concedi i privilegi di accesso o del database a un gruppo una sola volta anziché doverli concedere più volte a utenti diversi.
  • Rimuovi contemporaneamente le autorizzazioni di accesso o l'accesso a un oggetto del database per un gruppo.

Anche se i ruoli e le autorizzazioni IAM vengono assegnati a livello di gruppo, per accedere gli utenti e gli account di servizio utilizzano i propri account e le proprie credenziali IAM individuali e non un account di gruppo condiviso. Cloud SQL crea un account database nell'istanza per l'account di servizio o dell'utente dopo il primo accesso.

Le attività di accesso e del database individuali per ogni utente o account di servizio vengono visualizzate nei log di controllo. Per scopi di controllo, puoi visualizzare l'account che ha eseguito quale azione nel tuo database.

Per ulteriori informazioni sull'utilizzo dei gruppi Cloud Identity, consulta la Panoramica di Cloud Identity.

Quando aggiungi un account utente o di servizio a un gruppo, in Cloud SQL si verificano le seguenti modifiche:

  • Se hai già concesso le autorizzazioni di accesso IAM al gruppo, l'utente o l'account di servizio acquisisce la possibilità di accedere all' istanza Cloud SQL perché appartiene al gruppo.
  • L'utente eredita automaticamente tutti i privilegi del database che sono stati concessi al gruppo.

Quando rimuovi un account utente o di servizio dal gruppo, in Cloud SQL si verificano le seguenti modifiche:

  • L'utente perde tutti i privilegi di database precedentemente ereditati in quanto membro del gruppo.
  • L'utente potrebbe comunque riuscire ad accedere se riceve le autorizzazioni di accesso IAM per l'istanza Cloud SQL tramite altri adesioni al gruppo. Tuttavia, l'utente non avrà i privilegi di accesso al database della sua precedente appartenenza al gruppo al momento dell'accesso.

Best practice per l'autenticazione dei gruppi IAM

  • Quando revochi l'autorizzazione di accesso (cloudsql.instances.login) per un gruppo IAM in Cloud Identity, assicurati di eliminare anche il gruppo dall'istanza Cloud SQL.
  • Quando elimini un gruppo da Cloud Identity, assicurati di eliminare il gruppo anche dall'istanza Cloud SQL.
  • Utilizza i gruppi per configurare il controllo dell'accesso basato sui ruoli nel database. Fornisci sempre al gruppo i privilegi minimi necessari.
  • Non concedere ruoli di autenticazione dei gruppi IAM agli utenti integrati. Ad esempio, se hai un utente integrato, user-a, e crei un utente di autenticazione del gruppo IAM, user-b@example.com, non concedere il ruolo user-b@example.com a user-a.

Limitazioni di autenticazione dei gruppi IAM

  • Puoi aggiungere un massimo di 200 gruppi IAM a un'istanza.
  • Non puoi aggiungere singoli account utente o service account IAM che appartengono a un gruppo nella stessa istanza. In altre parole, non puoi aggiungere un account di tipo CLOUD_IAM_USER o CLOUD_IAM_SERVICE_ACCOUNT se esiste già un account identico di tipo CLOUD_IAM_GROUP_USER o CLOUD_IAM_GROUP_SERVICE_ACCOUNT.
  • Se in un'istanza esiste già un account individuale di tipo CLOUD_IAM_USER o CLOUD_IAM_SERVICE_ACCOUNT, non è possibile utilizzarlo per l'autenticazione del gruppo IAM. Questi tipi di utenti non ereditano i ruoli IAM e i privilegi di database da un gruppo.

    Per risolvere il problema e utilizzare l'account con l'autenticazione di gruppo IAM, rimuovi il singolo account utente o di servizio IAM.

    Per ulteriori informazioni, consulta Un account di servizio o utente IAM esistente non eredita i privilegi di database concessi al gruppo.
  • Le modifiche all'appartenenza al gruppo Cloud Identity, ad esempio l'aggiunta di un account, richiedono circa 15 minuti per essere propagate. Questo tempo si aggiunge al tempo necessario per le modifiche IAM.

Autenticazione IAM dei database automatica e manuale

Cloud SQL per MySQL offre due opzioni per l'autenticazione IAM dei database: automatica e manuale.

Autenticazione automatica del database IAM

L'autenticazione automatica del database IAM ti consente di delegare la richiesta e la gestione dei token di accesso a un connettore Cloud SQL intermedio, come il proxy di autenticazione Cloud SQL o uno dei connettori dei linguaggi Cloud SQL. Con l'autenticazione automatica del database IAM, gli utenti devono passare solo il nome utente del database IAM in una richiesta di connessione dal client. Il connettore invia le informazioni del token di accesso per l'attributo password per conto del client.

L'autenticazione automatica del database IAM richiede l'utilizzo di un connettore Cloud SQL ed è supportata dal proxy di autenticazione Cloud SQL, dal connettore Go, dal connettore Java e dal connettore Python.

Per un'esperienza più sicura e affidabile, ti consigliamo di utilizzare l'autenticazione automatica del database IAM. L'autenticazione del database IAM utilizza i token di accesso OAuth 2.0, che sono di breve durata e validi solo per un'ora. I connettori Cloud SQL sono in grado di richiedere e aggiornare questi token, garantendo che le applicazioni o i processi a lungo termine che si basano sul pooling delle connessioni possano avere connessioni stabili. L'autenticazione automatica del database IAM è fortemente consigliata rispetto all'autenticazione manuale.

Per ulteriori informazioni, consulta Accedere con l'autenticazione automatica del database IAM.

Autenticazione IAM dei database manuale

L'autenticazione manuale del database IAM richiede all'entità IAM di passare esplicitamente il token di accesso per l'attributo password nella richiesta di connessione del client. I principali devono prima accedere a Google Cloud e richiedere esplicitamente il token di accesso da IAM.

Con gcloud CLI, puoi richiedere esplicitamente un token OAuth 2.0 con l'ambito dell'API Cloud SQL Admin utilizzato per accedere al database. Quando accedi come utente del database con l'autenticazione IAM dei database, utilizzi il tuo indirizzo email come nome utente e il token di accesso come password. Puoi utilizzare questo metodo con una connessione diretta al database o con un connettore Cloud SQL.

L'accesso con l'autenticazione IAM dei database può essere eseguito solo tramite una connessione SSL.

Per ulteriori informazioni, consulta Accedere con l'autenticazione manuale del database IAM.

Amministrazione utente e account di servizio

Per fornire agli utenti e ai service account l'accesso ai database di un'istanza utilizzando l'autenticazione IAM dei database, devi aggiungerli all'istanza o a un gruppo che ha accesso all'istanza. Per ulteriori informazioni, consulta Aggiungere un utente o un account di servizio che utilizza IAM.

Se utilizzi la console Google Cloud per aggiungere utenti o account di servizio, Cloud SQL ti chiede di aggiungere all'utente il ruolo "Utente Cloud SQL". Questo ruolo è obbligatorio per consentire agli utenti di accedere all'istanza.

Dopo aver aggiunto l'utente IAM al database, devi concedere i privilegi di database manualmente. Utilizza il comando GRANT di MySQL per concedere altri privilegi di database.

Configurazione dell'istanza per l'autenticazione IAM dei database Cloud SQL

Puoi attivare l'autenticazione IAM dei database su un'istanza utilizzando il flag cloudsql_iam_authentication. Dopo aver attivato questo flag, l'istanza consente gli accessi da account configurati per l'autenticazione IAM dei database.

Questo flag è obbligatorio per l'autenticazione dei gruppi IAM e l'autenticazione del database IAM.

L'impostazione del flag non impedisce agli utenti esistenti non IAM di usare i propri nomi utente e le proprie password per accedere. Tuttavia, se disattivi questo flag sull'istanza, tutti gli utenti che hai aggiunto in precedenza utilizzando l'autenticazione IAM dei database perdono l'accesso all'istanza. Per ulteriori informazioni, consulta la pagina sulla configurazione delle istanze per l'autenticazione IAM dei database.

Autenticazione IAM dei database Cloud SQL per diversi scenari di istanze

Repliche di lettura L'autenticazione database IAM non viene attivata automaticamente in una replica di lettura, anche se è attivata nell'istanza principale. Dopo aver creato una replica di lettura, devi aggiungere l'autenticazione IAM dei database. Per ulteriori informazioni, consulta Configurare gli accessi alle repliche di lettura per l'autenticazione del database IAM.
Istanze ripristinate Se in precedenza è stato eseguito il backup di un'istanza e in seguito è stata ripristinata nella stessa o in un'altra istanza nello stesso progetto, vengono applicate le autorizzazioni di accesso dell'utente corrente. Se ripristini un backup in una nuova istanza in un altro progetto, devi configurare le autorizzazioni utente per la nuova istanza. Per maggiori informazioni, consulta Aggiungere un utente o un account di servizio che utilizza l'autenticazione IAM dei database.

Informazioni sulle condizioni IAM

Le condizioni IAM ti consentono di concedere ruoli in base a una serie di attributi. Ad esempio, puoi consentire l'accesso solo in date e ore specifiche o concedere l'accesso solo alle risorse Cloud SQL con determinati nomi.

Per ulteriori informazioni sulle condizioni IAM, consulta la pagina Panoramica delle condizioni IAM. Puoi anche scoprire di più su come utilizzare le condizioni IAM con Cloud SQL, inclusi esempi.

Utilizzare Cloud Audit Logs

Per conservare i record di accesso ai dati, inclusi gli accessi, puoi utilizzare i log di controllo. Cloud Audit Logs è disattivato per impostazione predefinita. Devi attivare gli audit log di accesso ai dati per il monitoraggio degli accessi. L'utilizzo dell'audit logging a questo scopo comporta costi per il logging dei dati. Per ulteriori informazioni, consulta Log di controllo, Configurazione degli audit log di accesso ai dati e Prezzi per i dati di log.

Limitazioni

  1. Il nome utente di un account utente per l'autenticazione IAM dei database deve essere tutto minuscolo. Ad esempio, example-user@example.com. Example-User@example.com non è consentito.
  2. Per motivi di sicurezza, gli accessi con autenticazione IAM dei database sono disponibili solo su una connessione SSL. Le connessioni non criptate vengono rifiutate.
  3. Per ogni istanza è prevista una quota di accessi al minuto, che include sia gli accessi riusciti sia quelli non riusciti. Quando la quota viene superata, gli accessi non sono disponibili temporaneamente. Ti consigliamo di evitare accessi frequenti e di limitare gli accessi utilizzando reti autorizzate. La quota per l'autorizzazione degli accessi è di 12.000 al minuto per istanza.
  4. L'autenticazione IAM dei database non è supportata per le istanze che utilizzano MySQL 5.6.

Passaggi successivi