Autenticazione IAM

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

Cloud SQL offre 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 le autorizzazioni di cui hai bisogno. Inoltre, puoi ancora accedere ai ruoli di base legacy (Editor, Visualizzatore e Proprietario), sebbene non offrano lo stesso controllo granulare dei ruoli Cloud SQL. In particolare, i ruoli di base consentono di accedere alle risorse di Google Cloud, anziché solo per Cloud SQL. Per ulteriori informazioni sui ruoli di base di Google Cloud, consulta Ruoli di base.

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

Riferimenti IAM per Cloud SQL

Concetti di autenticazione IAM

Quando utilizzi l'autenticazione IAM, l'autorizzazione ad 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 ulteriori informazioni, consulta la panoramica IAM.

Gli amministratori che fanno accedere gli utenti tramite l'autenticazione IAM del database possono utilizzare IAM per gestire centralmente il controllo dell'accesso alle loro istanze mediante i criteri IAM. I criteri IAM coinvolgono le seguenti entità:

  • Presidi. In Cloud SQL, puoi utilizzare diversi tipi di entità: un account utente, un account di servizio (per le applicazioni) o un gruppo. Per maggiori informazioni, consulta Concetti relativi all'identità.
  • Ruoli. Per l'autenticazione del database IAM, un'entità richiede l'autorizzazione cloudsql.instances.login per accedere a un'istanza. Per ottenere questa autorizzazione, devi associare l'utente, l'account di servizio o il gruppo al ruolo Utente istanza Cloud SQL predefinito o a un ruolo personalizzato che raggruppa l'autorizzazione. Per ulteriori informazioni sui ruoli IAM, consulta Ruoli.
  • Risorsa. Le risorse a cui le entità accedono sono istanze di Cloud SQL. Per impostazione predefinita, le associazioni di criteri IAM vengono applicate a livello di progetto, in modo che le entità ricevano le autorizzazioni del ruolo per tutte le istanze Cloud SQL nel progetto.

Autenticazione database IAM

Cloud SQL è integrato con Identity and Access Management (IAM) per aiutarti a gestire meglio l'accesso degli utenti e gli account di servizio ai database. Questa funzionalità è chiamata autenticazione del database IAM.

L'autenticazione è il processo di verifica dell'identità di un utente che tenta di accedere a un'istanza. Cloud SQL utilizza i seguenti tipi di autenticazione 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 dei database IAM utilizza IAM per autenticare un utente mediante un token di accesso. Hai due opzioni per la gestione degli utenti o degli account di servizio.
    • Privato: per impostazione predefinita, quando utilizzi l'autenticazione del database IAM, concedi i ruoli IAM e assegni i privilegi del database a singoli utenti e account di servizio. Puoi aggiungere account individuali alle istanze e gestire i privilegi di ogni account separatamente.
    • Per gruppo: l'autenticazione del gruppo IAM consente di controllare l'accesso alle istanze Cloud SQL a livello di gruppo. Ad esempio, puoi assegnare ruoli e privilegi di database di Identity and Access Management a un gruppo di Cloud Identity. Tutti gli utenti e gli account di servizio del gruppo Cloud Identity ereditano i ruoli IAM e i privilegi del database assegnati al gruppo. L'autenticazione del gruppo IAM è in Anteprima.

Confronta le opzioni di autenticazione del database

La tabella seguente confronta diversi metodi di autenticazione del database per Cloud SQL.

Funzionalità Autenticazione database integrata Autenticazione database IAM (singola) 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 Gestione centralizzata tramite IAM Centralizzata tramite gruppi IAM e Cloud Identity

Autenticazione gruppo IAM

L'autenticazione del gruppo IAM 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 account utente o di servizio singolarmente. Puoi anche concedere e revocare i privilegi di database per un gruppo Cloud Identity. Tutti i nuovi account che aggiungi al gruppo Cloud Identity ereditano i privilegi di tale gruppo.

Con l'autenticazione di gruppo IAM puoi:

  • Aggiungere un utente a un gruppo e fare in modo che l'utente erediti automaticamente i propri ruoli IAM e i privilegi del database.
  • Rimuovi un utente da un gruppo per rimuovere il suo accesso di accesso e i privilegi di database dai database Cloud SQL.
  • Concedi privilegi di accesso o di database a un gruppo una sola volta anziché dover concedere gli stessi privilegi più volte a utenti diversi.
  • Rimuovi contemporaneamente le autorizzazioni di accesso o l'accesso a un oggetto di 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 credenziali IAM individuali e non un account di gruppo condiviso. Cloud SQL crea un account database nell'istanza per quell'utente o account di servizio dopo il primo accesso.

Negli audit log vengono visualizzate le singole attività di accesso e del database per ciascun account utente o di servizio. Ai fini del controllo, hai il vantaggio di visualizzare quale account ha eseguito un'azione specifica nel tuo database.

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

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

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

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

  • L'utente perde tutti i privilegi di database che erano stati ereditati in precedenza dall'appartenenza al gruppo.
  • L'utente potrebbe comunque essere in grado di accedere se riceve le autorizzazioni di accesso IAM per l'istanza Cloud SQL tramite altre iscrizioni ai gruppi. Tuttavia, al momento dell'accesso, l'utente non disporrà dei privilegi di database dell'appartenenza al gruppo precedente.

Restrizioni di autenticazione dei gruppi IAM

  • L'autenticazione dei gruppi IAM può essere gestita solo tramite gcloud CLI durante l'anteprima.
  • A un'istanza puoi aggiungere un massimo di 200 gruppi di Cloud Identity.
  • Non puoi aggiungere singoli account utente o di servizio IAM appartenuti 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 esiste già un account individuale su un'istanza di tipo CLOUD_IAM_GROUP_USER o CLOUD_IAM_GROUP_SERVICE_ACCOUNT, l'account non può essere utilizzato per l'autenticazione di gruppi IAM. Questi tipi di utenti non erediteranno ruoli IAM e privilegi del database da un gruppo.

    Per risolvere il problema e utilizzare l'account con autenticazione di gruppo IAM, rimuovi il singolo account utente o di servizio IAM. Per maggiori informazioni, consulta Un account utente o di servizio IAM esistente non eredita i privilegi di database concessi al gruppo.

  • La propagazione delle modifiche alle iscrizioni ai gruppi Cloud Identity, come l'aggiunta di un account, richiede circa 15 minuti. Si aggiunge il tempo necessario per le modifiche IAM.

    Dopo la propagazione delle modifiche, l'account utente o di servizio deve disconnettersi ed eseguire di nuovo l'accesso affinché la modifica abbia effetto.

Autenticazione automatica del database IAM o 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 consente di trasferire la richiesta e la gestione dei token di accesso a un connettore Cloud SQL intermediario, ad esempio il proxy di autenticazione 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 da parte del 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. È supportato 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 dei database IAM utilizza 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, assicurando che le applicazioni o i processi di lunga durata che si basano sul pool di connessioni possano avere connessioni stabili. L'autenticazione automatica del database IAM è vivamente consigliata rispetto all'autenticazione manuale.

Per maggiori informazioni, consulta Accedere con l'autenticazione automatica dei database IAM.

Autenticazione manuale del database IAM

L'autenticazione manuale del database IAM richiede che l'entità IAM passi esplicitamente il token di accesso per l'attributo password nella richiesta di connessione client. Le entità 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 autenticazione IAM, 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 del database IAM può essere eseguito solo su una connessione SSL.

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

Amministrazione di account utente e di servizio

Per consentire a utenti e account di servizio di accedere ai database su un'istanza utilizzando l'autenticazione del database IAM, devi aggiungerli all'istanza o a un gruppo che ha accesso all'istanza. Per ulteriori informazioni, consulta Aggiungere un account utente o di servizio che utilizzi IAM.

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

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

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

Puoi abilitare l'autenticazione del database IAM su un'istanza utilizzando il flag cloudsql_iam_authentication. Una volta abilitato questo flag, l'istanza abilita gli accessi da account configurati per l'autenticazione IAM del database.

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

L'impostazione del flag non impedisce agli utenti esistenti non IAM di utilizzare i propri nomi utente e password per accedere. Tuttavia, se disabiliti questo flag sull'istanza, qualsiasi utente aggiunto in precedenza utilizzando l'autenticazione del database IAM perderà l'accesso all'istanza. Per maggiori informazioni, consulta Configurazione delle istanze per l'autenticazione IAM dei database.

Autenticazione IAM del database Cloud SQL per diversi scenari di istanza

Repliche di lettura L'autenticazione del database IAM non è abilitata automaticamente in una replica di lettura, anche quando è abilitata nell'istanza principale. Dopo aver creato una replica di lettura, devi aggiungere l'autenticazione del database IAM. Per maggiori informazioni, consulta Configurazione degli accessi alle repliche di lettura per l'autenticazione dei database IAM.
Istanze ripristinate Se è stato precedentemente eseguito il backup di un'istanza e poi è stata ripristinata nella stessa istanza o in un'altra istanza dello stesso progetto, vengono applicate le autorizzazioni di accesso utente attuali. 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 Aggiunta di un account utente o di servizio che utilizza l'autenticazione IAM del database.

Informazioni sulle condizioni IAM

Le condizioni IAM consentono di concedere ruoli basati su vari attributi. Ad esempio, puoi consentire l'accesso solo in determinate date e orari 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. Scopri di più sull'utilizzo delle condizioni IAM con Cloud SQL, inclusi degli esempi.

Utilizzo di Cloud Audit Logs

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

Limitazioni

  1. Per motivi di sicurezza, gli accessi che utilizzano l'autenticazione del database IAM sono disponibili solo su una connessione SSL. Le connessioni non criptate vengono rifiutate.
  2. Per ogni istanza è prevista una quota di accesso al minuto, che include gli accessi riusciti e non. Quando la quota viene superata, gli accessi temporaneamente non sono disponibili. Ti consigliamo di evitare accessi frequenti e limitare gli accessi utilizzando le reti autorizzate. La quota per l'autorizzazione degli accessi è di 12.000 al minuto per istanza.
  3. L'autenticazione del database IAM non è supportata per le istanze che utilizzano MySQL 5.6.

Passaggi successivi