Google Cloud offre Identity and Access Management (IAM), che ti consente di concedere l'accesso a determinate Google Cloud risorse e impedisce 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 di Cloud SQL e per l'autenticazione dei 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 di Cloud SQL. Puoi anche creare i tuoi ruoli personalizzati, se i ruoli predefiniti non forniscono gli insiemi di autorizzazioni di cui hai bisogno. Inoltre, i ruoli di base legacy (Editor, Visualizzatore e Proprietario) sono ancora disponibili, anche se non forniscono lo stesso controllo granulare dei ruoli di Cloud SQL. In particolare, i ruoli di base forniscono l'accesso alle risorse in tutti i servizi Google Cloud, non solo per Cloud SQL. Per ulteriori informazioni sui ruoli di base Google Cloud , consulta Ruoli di base.
Puoi impostare un criterio IAM a qualsiasi livello della gerarchia delle risorse: a livello di organizzazione, cartella o progetto. Le risorse ereditano i criteri di tutte le risorse padre.
Riferimenti IAM per Cloud SQL
- Autorizzazioni richieste per le attività comuni nella Google Cloud console
- Autorizzazioni richieste per i comandi
gcloud sql - Autorizzazioni richieste per i metodi dell'API Cloud SQL Admin
- Ruoli IAM predefiniti di Cloud SQL
- Autorizzazioni e relativi ruoli
- Ruoli personalizzati
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 sono invece raggruppate in ruoli , che vengono concesse alle entità. Per saperne di più, 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 alle proprie istanze utilizzando i criteri IAM.
I criteri IAM coinvolgono le seguenti entità:
- Entità. In Cloud SQL, puoi utilizzare diversi tipi di entità: un account utente, un service account (per le applicazioni) o un gruppo. Per saperne di più, consulta Concetti relativi all'identità.
- Ruoli. Un ruolo è una raccolta di autorizzazioni. Puoi concedere ruoli alle entità per fornire loro i privilegi necessari per svolgere attività specifiche.
Ad esempio, con l'autenticazione IAM dei database, un'entità richiede l'autorizzazione
cloudsql.instances.loginper accedere a un'istanza, inclusa nel ruolo Utente istanza Cloud SQL. Per ottenere l'autorizzazione, devi associare l'utente, il account di servizio o il gruppo al ruolo Cloud SQL predefinito o a un ruolo personalizzato che include l'autorizzazione. Per saperne di più sui ruoli IAM, consulta Ruoli. - Risorsa. Le risorse a cui le entità accedono sono le 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 IAM dei database
L'autenticazione dei database è il processo di verifica dell'identità di un utente che tenta di accedere ai database. In Cloud SQL, puoi utilizzare i seguenti tipi di autenticazione dei database per gli utenti dei 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 tramite un token di accesso. Hai due opzioni per gestire utenti o service account.
- Singolarmente: per impostazione predefinita, quando utilizzi l'autenticazione IAM dei database, concedi i ruoli IAM e assegni i privilegi dei database a singoli utenti e service account. Aggiungi singoli account alle istanze e gestisci i privilegi di ogni account separatamente.
- Per gruppo: l'autenticazione del 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 dei database a un gruppo Cloud Identity. Tutti gli utenti e i service account del gruppo Cloud Identity ereditano i ruoli IAM e i privilegi dei database assegnati al gruppo.
Confrontare le opzioni di autenticazione dei database
La seguente tabella confronta i diversi metodi di autenticazione dei database per Cloud SQL.
| Funzionalità | Autenticazione del database integrata | Autenticazione IAM dei database (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 | Centralizzata tramite IAM | Centralizzata tramite IAM e gruppi Cloud Identity |
Autenticazione del gruppo IAM
L'autenticazione del gruppo IAM ti consente di gestire gli utenti di Cloud SQL a livello di gruppo. Un esempio di gruppo è un gruppo Cloud Identity. Questa funzionalità semplifica la gestione degli utenti dei 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 dei database per un gruppo Cloud Identity. Tutti i nuovi account che aggiungi al gruppo Cloud Identity ereditano i privilegi di quel gruppo.
Con l'autenticazione del gruppo IAM, puoi:
- Aggiungere un utente a un gruppo e fare in modo che l'utente erediti automaticamente i ruoli IAM e i privilegi dei database.
- Rimuovere un utente da un gruppo per rimuovere l'accesso e i privilegi dei database dai database Cloud SQL.
- Concedere i privilegi di accesso o dei database a un gruppo una sola volta, anziché dover concedere gli stessi privilegi più volte a utenti diversi.
- Rimuovere 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, gli utenti e i service account utilizzano i propri account e credenziali IAM individuali e non un account di gruppo condiviso per accedere. Cloud SQL crea un account di database nell'istanza per l'utente o account di servizio dopo il primo accesso.
L'attività di accesso e di database individuale per ogni utente o account di servizio viene visualizzata nei log di controllo. Ai fini dell'audit, puoi visualizzare quale account ha eseguito quale azione nel database.
Per saperne di più sull'utilizzo dei gruppi Cloud Identity, consulta la panoramica di Cloud Identity.
Quando aggiungi un utente o un account 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 il account di servizio può accedere all'istanza Cloud SQL perché appartiene al gruppo.
- L'utente eredita automaticamente tutti i privilegi dei database concessi al gruppo.
Quando rimuovi un utente o un account di servizio dal gruppo, in Cloud SQL si verificano le seguenti modifiche:
- L'utente perde tutti i privilegi dei database ereditati in precedenza in quanto membro del gruppo.
- L'utente potrebbe comunque accedere se riceve le autorizzazioni di accesso IAM per l'istanza Cloud SQL tramite altre appartenenze a gruppi. Tuttavia, l'utente non avrà i privilegi dei database dalla sua precedente appartenenza al gruppo dopo l'accesso.
Best practice per l'autenticazione del gruppo IAM
- Quando revochi l'autorizzazione di accesso (
cloudsql.instances.login) per un gruppo IAM in Cloud Identity, assicurati di eliminare il gruppo anche 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. Concedi sempre i privilegi minimi richiesti al gruppo.
- Non concedere i ruoli di autenticazione del gruppo IAM agli utenti integrati. Ad esempio, se hai un utente integrato,
user-ae crei un utente di autenticazione del gruppo IAM,user-b@example.com, non concedere il ruolouser-b@example.comauser-a.
Limitazioni dell'autenticazione del gruppo IAM
- Puoi aggiungere un massimo di 200 gruppi IAM a un'istanza.
- Non puoi aggiungere singoli utenti o service account IAM appartenenti a un gruppo nella stessa istanza. In altre parole, non puoi aggiungere un
account con il tipo
CLOUD_IAM_USERoCLOUD_IAM_SERVICE_ACCOUNTse esiste già un account identico con il tipoCLOUD_IAM_GROUP_USERoCLOUD_IAM_GROUP_SERVICE_ACCOUNT. - Se in un'istanza esiste già un account individuale con il
tipo
CLOUD_IAM_USERoCLOUD_IAM_SERVICE_ACCOUNT, l'account non può essere utilizzato per l'autenticazione del gruppo IAM. Questi tipi di utenti non ereditano i ruoli IAM e i privilegi dei database da un gruppo.Per risolvere il problema e utilizzare l'account con l'autenticazione del gruppo IAM, rimuovi il singolo utente o account di servizio IAM.
Per saperne di più, consulta Un utente o un account di servizio IAM esistente non eredita i privilegi dei database concessi al suo gruppo. - La propagazione delle modifiche all'iscrizione al gruppo Cloud Identity, ad esempio l'aggiunta di un account, richiede circa 15 minuti. Questo tempo si aggiunge a quello 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 IAM dei database automatica
L'autenticazione IAM dei database automatica 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 di Cloud SQL. Con l'autenticazione IAM dei database automatica, 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 della password per conto del client.
L'autenticazione IAM dei database automatica richiede l'utilizzo di un connettore Cloud SQL e è 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 IAM dei database automatica. L'autenticazione IAM dei database utilizza i token di accesso OAuth 2.0, che hanno una durata breve e sono validi solo per un'ora. I connettori Cloud SQL sono in grado di richiedere e aggiornare questi token, garantendo che i processi o le applicazioni a lunga durata che si basano sul pool di connessioni possano avere connessioni stabili. L'autenticazione IAM dei database automatica è vivamente consigliata rispetto all'autenticazione manuale.
Per saperne di più, consulta Accedere con l'autenticazione IAM dei database automatica.
Autenticazione IAM dei database manuale
L'autenticazione IAM dei database manuale richiede che l'entità IAM passi esplicitamente il token di accesso per l'attributo della password nella richiesta di connessione del client. Le entità devono prima accedere a Google Cloud e richiedere esplicitamente il token di accesso da IAM.
Utilizzando il 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 saperne di più, consulta Accedere con l'autenticazione IAM dei database manuale.
Accesso sensibile al contesto e autenticazione IAM dei database
Se utilizzi l'accesso sensibile al contesto nella configurazione IAM, non puoi utilizzare un connettore Cloud SQL come il proxy di autenticazione Cloud SQL o uno dei connettori dei linguaggi di Cloud SQL con l'autenticazione IAM dei database. I tentativi di accesso manuale o automatico con l'autenticazione IAM non andranno a buon fine. Connettiti direttamente all'istanza.
Amministrazione di utenti 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 saperne di più, consulta Aggiungere un utente o un account di servizio che utilizza IAM.
Se utilizzi la Google Cloud console per aggiungere utenti o service account, Cloud SQL ti chiede di aggiungere il ruolo "Utente Cloud SQL" all'utente. Questo ruolo è necessario per consentire agli utenti di accedere all'istanza.
Dopo aver aggiunto l'utente IAM al database, devi concedere manualmente i privilegi dei database. Utilizza il comando GRANT di MySQL per concedere altri privilegi dei database.Configurazione dell'istanza per l'autenticazione IAM dei database Cloud SQL
Puoi abilitare l'autenticazione IAM dei database in un'istanza utilizzando il flag cloudsql_iam_authentication. Una volta abilitato questo flag, l'istanza abilita gli accessi dagli account configurati per l'autenticazione IAM dei database. Questo flag è abilitato per impostazione predefinita se crei
le istanze utilizzando la Google Cloud console.
Questo flag è obbligatorio per l'autenticazione del gruppo IAM e l'autenticazione IAM dei database.
L'impostazione del flag non impedisce agli utenti non IAM esistenti di utilizzare i propri nomi utente e password per accedere. Tuttavia, se disabiliti questo flag nell'istanza, tutti gli utenti che hai aggiunto in precedenza utilizzando l'autenticazione IAM dei database perdono l'accesso all'istanza. Per saperne di più, consulta Configurare le istanze per l'autenticazione IAM dei database.
Autenticazione IAM dei database Cloud SQL per diversi scenari di istanze
| Repliche di lettura | L'autenticazione IAM dei database non viene abilitata automaticamente in una replica di lettura, anche se è abilitata nell'istanza principale. Dopo aver creato una replica di lettura, devi aggiungere l'autenticazione IAM dei database. Per saperne di più, consulta Configurare gli accessi delle repliche di lettura per l'autenticazione IAM dei database. |
| Istanze ripristinate | Se in precedenza è stato eseguito il backup di un'istanza e poi è stata ripristinata nella stessa istanza o un'altra istanza dello stesso progetto, si applicano le autorizzazioni di accesso utente correnti. Se ripristini un backup in una nuova istanza di un altro progetto, devi configurare le autorizzazioni utente per la nuova istanza. Per saperne di più, consulta Aggiungere un utente o un account di servizio che utilizza l'autenticazione IAM dei database. |
| Istanze ripristinate point-in-time | Se esegui un ripristino point-in-time all'interno dello stesso progetto, si applicano le autorizzazioni di accesso utente correnti per l'istanza target. Se esegui il ripristino point-in-time di un'istanza in un progetto diverso, devi configurare le autorizzazioni utente per la nuova istanza. Per saperne di più, 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 i ruoli in base a una serie di 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 saperne di più sulle condizioni IAM, consulta la pagina Panoramica delle condizioni IAM. Puoi anche scoprire di più sull' utilizzo delle condizioni IAM con Cloud SQL, inclusi esempi.
Utilizzare Cloud Audit Logs
Per conservare i record di accesso ai dati, inclusi gli accessi, puoi utilizzare gli audit log. Gli audit log di Cloud sono disattivati per impostazione predefinita. Devi attivare gli audit log dell'accesso ai dati per il monitoraggio degli accessi. L'utilizzo degli audit log per questo scopo comporta costi per la registrazione dei dati. Per saperne di più, consulta Audit log, Configurare gli audit log dell'accesso ai dati e Prezzi per la registrazione dei dati.
Prestazioni sulle istanze con core condivisi
I tipi di macchina con core condivisi (ad esempio db-f1-micro e db-g1-small) si basano sul
bursting della CPU per gestire
i picchi di attività brevi. L'autenticazione IAM dei database è più intensiva dal punto di vista computazionale rispetto all'autenticazione con password integrata. Pertanto, quando un'istanza con core condivisi non è più in bursting o sta riscontrando un utilizzo elevato della CPU, le connessioni che utilizzano l'autenticazione IAM dei database potrebbero riscontrare latenza elevata o timeout.
Per garantire prestazioni e affidabilità ottimali della connessione:
- Implementa il pool di connessioni persistenti: configura i pool di connessioni lato client (ad esempio HikariCP per Java, i pool di connessioni SQLAlchemy
per Python o i pool
database/sqlper Go), abilita il pool di connessioni gestito, o utilizza il proxy di autenticazione Cloud SQL. - Aumenta i timeout di connessione del client: se la tua applicazione deve stabilire nuove connessioni durante i periodi di elevata attività della CPU, configura un timeout di connessione più elevato (ad esempio, da 10 a 15 secondi) nel driver del database o nella configurazione del client.
- Esegui l'upgrade alle istanze con core dedicati: modifica l'istanza in modo che utilizzi un tipo di macchina con core dedicati. Le macchine con core dedicati forniscono allocazioni di CPU senza limitazioni che garantiscono tempi di connessione più rapidi e coerenti.
Limitazioni
- L'accesso per un account utente di autenticazione IAM dei database deve essere tutto in minuscolo. Ad esempio,
example-user@example.com.Example-User@example.comnon è consentito. - Per motivi di sicurezza, gli accessi che utilizzano l'autenticazione IAM dei database sono disponibili solo su una connessione SSL. Le connessioni non criptate vengono rifiutate.
- Esiste una quota di accessi al minuto per ogni istanza, che include sia gli accessi riusciti che quelli non riusciti. Quando la quota viene superata, gli accessi non sono temporaneamente disponibili. Ti consigliamo di evitare accessi frequenti e di limitare gli accessi utilizzando le reti autorizzate. La quota per l'autorizzazione degli accessi è di 12.000 al minuto per istanza.
- L'autenticazione IAM dei database non è supportata per le istanze che utilizzano MySQL 5.6.
Passaggi successivi
- Scopri come configurare le istanze per l'autenticazione IAM dei database.
- Scopri come aggiungere un utente o un account di servizio che utilizza l'autenticazione IAM dei database al tuo database.
- Scopri come accedere a un database Cloud SQL con l'autenticazione IAM dei database.
- Scopri come visualizzare le informazioni di accesso negli audit log.
- Scopri di più sulla federazione delle identità per la forza lavoro.