Google Cloud offre Identity and Access Management (IAM), che ti consente di concedere l'accesso a risorse Google Cloud specifiche e impedire l'accesso indesiderato ad altre risorse. Questa pagina descrive l'integrazione di Cloud SQL 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 tue risorse Cloud SQL. Puoi anche creare ruoli personalizzati se i ruoli predefiniti non forniscono i set 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 Cloud SQL. In particolare, i ruoli di base forniscono l'accesso alle risorse in Google Cloud, anziché solo per Cloud SQL. Per saperne di più 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, di cartella o di progetto. Le risorse ereditano i criteri di tutte le risorse padre.
Riferimenti IAM per Cloud SQL
- Autorizzazioni richieste per le attività comuni nella console Google Cloud
- Autorizzazioni obbligatorie per i comandi
gcloud sql
- Autorizzazioni richieste per i metodi dell'API Cloud SQL Admin
- Ruoli Cloud SQL IAM predefiniti
- 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 vengono invece raggruppate in ruoli e i ruoli vengono concessi alle entità. Per ulteriori informazioni, consulta la panoramica di IAM.
Gli amministratori che hanno utenti che accedono tramite l'autenticazione IAM dei database possono utilizzare l'autenticazione IAM per gestire centralmente ilcontrollo dell'accessoo alle loro istanze utilizzando i criteri IAM.
I criteri IAM coinvolgono le seguenti entità:
- Dirigenti. 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ù, vedi Concetti relativi all'identità.
- Ruoli. Un ruolo è una raccolta di autorizzazioni. Puoi concedere ruoli ai
principal 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, associa l'utente, il account di servizio o il gruppo al ruolo Cloud SQL predefinito o a un ruolo personalizzato che include l'autorizzazione. Per ulteriori informazioni sui ruoli IAM, consulta la sezione Ruoli. - Risorsa. Le risorse a cui accedono i principal sono le istanze Cloud SQL. Per impostazione predefinita, i binding dei criteri IAM vengono applicati a livello di progetto, in modo che le entità ricevano le autorizzazioni del ruolo 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 tenta 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 tramite un token di accesso.
Confrontare le opzioni di autenticazione del database
La seguente tabella confronta i diversi metodi di autenticazione del database per Cloud SQL.
Funzionalità | Autenticazione del database integrata | Autenticazione database IAM (individuale) | 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 dei gruppi 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 utente o account di servizio singolarmente. Puoi anche concedere e revocare i privilegi del 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:
- Aggiungi un utente a un gruppo e fai in modo che erediti automaticamente i ruoli IAM e i privilegi del database.
- Rimuovi un utente da un gruppo per rimuovere il suo accesso di login e i privilegi di database dai database Cloud SQL.
- Concedi i privilegi di accesso o del database a un gruppo una sola volta anziché dover concedere gli stessi privilegi più volte a utenti diversi.
- Rimuovi le autorizzazioni di accesso o l'accesso a un oggetto di database per un gruppo contemporaneamente.
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 database sull'istanza per l'utente o ilaccount di serviziot dopo il primo accesso.
L'attività di accesso e del database individuale per ogni utente o account di servizio viene visualizzata nei log di controllo. A fini di controllo, puoi visualizzare l'account che ha eseguito quale azione nel tuo database.
Per saperne di più su come lavorare con i 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 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 utente o un account di servizio dal gruppo, in Cloud SQL si verificano le seguenti modifiche:
- L'utente perde tutti i privilegi del database ereditati in precedenza in quanto membro del gruppo.
- L'utente potrebbe comunque essere in grado di accedere se riceve autorizzazioni di accesso IAM per l'istanza Cloud SQL tramite altre appartenenze a gruppi. Tuttavia, al momento dell'accesso, l'utente non disporrà dei privilegi di database derivanti dalla precedente appartenenza al gruppo.
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 il gruppo anche dall'istanza Cloud SQL. - Quando elimini un gruppo da Cloud Identity, assicurati di eliminarlo anche dall'istanza Cloud SQL.
- Utilizza i gruppi per configurare il controllo dell'accesso basato sui ruoli nel tuo database. Fornisci sempre al gruppo i privilegi minimi richiesti.
- Non concedere ruoli di autenticazione del gruppo 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 ruolouser-b@example.com
auser-a
.
Limitazioni dell'autenticazione del gruppo IAM
- Quando utilizzi l'autenticazione del gruppo IAM, se hai un'istanza Cloud SQL con repliche di lettura, devi accedere prima all'istanza primaria prima di accedere all'istanza di replica di lettura. Dopo il primo accesso all'istanza principale, le informazioni utente del gruppo vengono replicate nelle repliche di lettura. Per gli accessi successivi, puoi accedere direttamente alla replica di lettura.
- Puoi aggiungere un massimo di 200 gruppi IAM a un'istanza.
- Non puoi aggiungere singoli utenti IAM o service account
che appartengono a un gruppo nella stessa istanza. In altre parole, non puoi aggiungere un
account di tipo
CLOUD_IAM_USER
oCLOUD_IAM_SERVICE_ACCOUNT
se esiste già un account identico di tipoCLOUD_IAM_GROUP_USER
oCLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Se in un'istanza esiste già un account individuale con il tipo
CLOUD_IAM_USER
oCLOUD_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 del database da un gruppo.Per risolvere il problema e utilizzare l'account con l'autenticazione del gruppo IAM, rimuovi il singolo utente IAM o account di servizio.
Per maggiori informazioni, vedi Un utente o un account di servizio IAM esistente non eredita i privilegi del database concessi al suo gruppo. - La propagazione delle modifiche all'appartenenza al gruppo Cloud Identity, ad esempio l'aggiunta di un account, richiede circa 15 minuti. Questo in aggiunta al tempo necessario per le modifiche IAM.
Autenticazione IAM dei database automatica e manuale
Cloud SQL per PostgreSQL offre due opzioni per l'autenticazione IAM dei database: automatica e manuale.
Autenticazione IAM dei database automatica
L'autenticazione IAM automatica dei database ti consente di trasferire 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 Cloud SQL per i linguaggi. Con l'autenticazione IAM dei database automatica, gli utenti devono trasmettere solo il nome utente del database IAM in una richiesta di connessione dal client. Il connettore invia le informazioni sul 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 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 i processi o le applicazioni di lunga durata che si basano sul pooling di connessioni possano avere connessioni stabili. L'autenticazione automatica IAM dei database è fortemente consigliata rispetto all'autenticazione manuale.
Per maggiori informazioni, consulta Accedere con l'autenticazione IAM dei database automatica.
Autenticazione IAM dei database manuale
L'autenticazione manuale del database IAM richiede che l'entità IAM trasmetta esplicitamente il token di accesso per l'attributo 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 la CLI gcloud, 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 maggiori informazioni, consulta la pagina Accesso 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 del database IAM. 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 a utenti e service account l'accesso ai database su 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ù, vedi Aggiungere un utente o unaccount di serviziot che utilizza IAM.
Se utilizzi la console Google Cloud 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.
Se aggiungi utenti utilizzandogcloud
o l'API, devi concedere i privilegi di accesso
manualmente. Utilizza il comando GRANT di PostgreSQL
per concedere i privilegi del database.
Configurazione dell'istanza per l'autenticazione IAM dei database Cloud SQL
Puoi abilitare l'autenticazione IAM dei database su un'istanza utilizzando il flag cloudsql.iam_authentication
. Una volta abilitato questo flag, l'istanza consente gli accessi dagli account
configurati per l'autenticazione IAM dei database.
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 sull'istanza, qualsiasi utente che hai aggiunto in precedenza utilizzando l'autenticazione IAM dei database perde 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 istanza
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 alle repliche di lettura per l'autenticazione del database IAM. |
Istanze ripristinate | Se un'istanza è stata sottoposta a backup in precedenza e successivamente ripristinata nella stessa istanza o in un'altra istanza dello 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 ulteriori 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 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. 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 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 la registrazione dei dati. Per ulteriori informazioni, consulta Audit log, Configurazione degli audit log di accesso ai dati e Prezzi per la registrazione dei dati.
Limitazioni
- L'accesso per un account utente con autenticazione IAM dei database deve essere tutto in minuscolo. Ad esempio,
example-user@example.com
.Example-User@example.com
non è 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.
- Per ogni istanza è prevista una quota di accessi al minuto, 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.
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 nei log di controllo.