Questa pagina descrive come gli utenti e i service account possono accedere ai database Cloud SQL utilizzando l'autenticazione IAM dei database Cloud SQL. Per saperne di più, consulta Autenticazione IAM.
Prima di iniziare
- Configura l'istanza in modo che utilizzi l'autenticazione IAM dei database. Per saperne di più, consulta Configurare nuove istanze per l'autenticazione IAM dei database.
- Aggiungi un utente, account di servizio o un gruppo IAM al database. Per saperne di più, consulta Aggiungere un utente o un account di servizio IAM al database e Aggiungere un gruppo al database.
- Aggiungi il ruolo IAM
roles/cloudsql.instanceUsera utente, account di servizio o gruppo IAM. Si tratta di un ruolo predefinito che contiene l'autorizzazione IAM Cloud SQLcloudsql.instances.loginnecessaria. Devi disporre di questa autorizzazione per accedere a un'istanza database con l'autenticazione IAM dei database. Per saperne di più, consulta Ruoli e autorizzazioni. - Se utilizzi il proxy di autenticazione Cloud SQL, aggiungi il ruolo
roles/cloudsql.clientIAM all'utente, al account di servizio o al gruppo IAM. Si tratta di un ruolo predefinito che contiene l'autorizzazione IAM Cloud SQLcloudsql.instances.connectnecessaria. Devi disporre di questa autorizzazione per accedere a un'istanza database con il proxy di autenticazione Cloud SQL. Per saperne di più, consulta Ruoli e autorizzazioni. - Quando un utente IAM viene aggiunto a un database, per impostazione predefinita il nuovo utente del database non ha privilegi per alcun database. Per fornire all'utente
i privilegi di database richiesti, puoi
assegnare i ruoli del database mentre aggiungi l'account IAM
all'istanza,
assegnare i ruoli del database mentre aggiorni l'account IAM sull'istanza oppure puoi
utilizzare il comando
GRANTper concedere i privilegi al singolo account IAM o al gruppo IAM. - Se utilizzi l'autenticazione del gruppo IAM, l'utente o il account di servizio IAM deve essere membro di un gruppo a cui è stato concesso un ruolo o delle autorizzazioni IAM per accedere all'istanza Cloud SQL. Cloud SQL crea un account dopo che l'utente o il account di servizio ha eseguito l'accesso all'istanza per la prima volta.
Accedere con l'autenticazione IAM dei database automatica
Puoi configurare un connettore Cloud SQL per gestire automaticamente l'autenticazione all'istanza Cloud SQL per conto di un utente o di un'applicazione. I connettori includono il proxy di autenticazione Cloud SQL, il connettore Go, il connettore Java e il connettore Python, che supportano tutti l'autenticazione IAM dei database automatica. Quando utilizzi un connettore Cloud SQL con l'autenticazione IAM dei database automatica, l'account IAM che utilizzi per avviare il connettore deve essere lo stesso account che esegue l'autenticazione al database.
Per accedere con l'autenticazione IAM dei database automatica:
Proxy di autenticazione Cloud SQL
Esegui l'autenticazione in Google Cloud.
Utente
Esegui l'autenticazione a Google Cloud utilizzando le Credenziali predefinite dell'applicazione (ADC).
Utilizza il
gcloud auth application-default logincomando. Per saperne di più, consulta Configurare le Credenziali predefinite dell'applicazione.Service account
Per eseguire l'autenticazione in Google Cloud utilizzando le Credenziali predefinite dell'applicazione con un account di servizio, puoi utilizzare la simulazione dell'identità del account di servizio o configurare una chiave del account di servizio. Se vuoi eseguire l'autenticazione con la simulazione dell'identità del account di servizio, sostituisci SERVICE_ACCOUNT_EMAIL_ADDRESS ed esegui il comando seguente:
gcloud auth application-default login --impersonate-service-account SERVICE_ACCOUNT_EMAIL_ADDRESS
Per saperne di più, consulta Configurare le Credenziali predefinite dell'applicazione.
Avvia il proxy di autenticazione Cloud SQL con il flag
--auto-iam-authnSostituisci INSTANCE_CONNECTION_NAME con la stringa di connessione utilizzata per identificare l'istanza Cloud SQL. Se utilizzi una porta diversa dalla porta MySQL predefinita, specifica il numero di porta. Per saperne di più su come trovare e creare questa stringa, consulta Opzioni per l'autenticazione del proxy di autenticazione Cloud SQL../cloud-sql-proxy --auto-iam-authn INSTANCE_CONNECTION_NAME
Per saperne di più su come avviare il proxy, consulta Avviare il proxy di autenticazione Cloud SQL.
Quando è tutto pronto per connetterti all'istanza utilizzando il proxy di autenticazione Cloud SQL, accedi con il client
mysql. Sostituisci quanto segue:- HOSTNAME: indirizzo IP utilizzato dal proxy di autenticazione Cloud SQL. Per impostazione predefinita, il proxy di autenticazione Cloud SQL utilizza l'indirizzo localhost
127.0.0.1, ma puoi assegnare un indirizzo IP diverso quando avvii il proxy di autenticazione Cloud SQL. - USERNAME: per un account utente IAM,
questo è l'indirizzo email dell'utente, senza il simbolo
@o il nome di dominio. Ad esempio, pertest-user@example.com, inseriscitest-user. Per un account di servizio, questo è l'indirizzo email del service account senza il@project-id.iam.gserviceaccount.comsuffisso. - PORT_NUMBER: (facoltativo) Se hai specificato una porta diversa nella stringa di connessione dell'istanza, specifica il numero di porta.
Esegui questo comando:
mysql --host=HOSTNAME \ --user=USERNAME \ --port=PORT_NUMBER
Per saperne di più su come connetterti al proxy di autenticazione Cloud SQL, consulta Connettersi con il client mysql.
- HOSTNAME: indirizzo IP utilizzato dal proxy di autenticazione Cloud SQL. Per impostazione predefinita, il proxy di autenticazione Cloud SQL utilizza l'indirizzo localhost
Go
Java JDBC
Java R2DBC
Node.js
Python
Accedere con l'autenticazione IAM dei database manuale
Un utente o un'applicazione può eseguire l'autenticazione al database utilizzando IAM richiedendo manualmente un token di accesso da Google Cloud e presentandolo a l database. Utilizzando la 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 manuale, 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.
In questa procedura, esegui l'autenticazione in Google Cloud, richiedi un token di accesso, e poi ti connetti al database passando il token come password per l'utente del database IAM. Segui questi passaggi per connetterti senza il proxy di autenticazione Cloud SQL.
Per questi passaggi, devi:
- Utilizzare l'opola --enable-cleartext-plugin
mysqlopzione. - Se ti connetti a un'istanza con IP pubblico, autorizza l'accesso esterno all'istanza. Per saperne di più, consulta Autorizzare l'indirizzo IP della macchina per l'IP pubblico.
- Se ti connetti a un'istanza con IP privato, esegui il comando all'interno della rete Virtual Private Cloud (VPC).
- Utilizza il
gcloud sql generate-login-tokencomando per generare il token di autenticazione.
Per accedere con l'autenticazione IAM dei database manuale:
gcloud
Esegui l'autenticazione in Google Cloud.
Utente
Esegui l'autenticazione a IAM utilizzando
gcloud auth login. Per saperne di più, consulta Autorizzare con un account utente.Service account
Esegui l'autenticazione a IAM utilizzando
gcloud auth activate-service-account. Per saperne di più, consulta Autorizzare con un service account.Richiedi il token di accesso e accedi con un client.
Sostituisci quanto segue:
- HOSTNAME: l'indirizzo IP dell'istanza, ovvero l'indirizzo IP pubblico o l'indirizzo IP privato.
- USERNAME: per un account utente IAM, questo è l'
indirizzo email dell'utente, senza il simbolo
@o il nome di dominio. Ad esempio, pertest-user@example.com, inseriscitest-user. Per un account di servizio, questo è l'indirizzo email del service account senza il@project-id.iam.gserviceaccount.comsuffisso.
export MYSQL_PWD=`gcloud sql generate-login-token` \ mysql --enable-cleartext-plugin \ --ssl-mode=REQUIRED \ --host=HOSTNAME \ --user=USERNAME
Se
ssl_modesull'istanza Cloud SQL è configurato suTRUSTED_CLIENT_CERTIFICATE_REQUIRED, includi un certificato client e una chiave client quando accedi. Inoltre, per consentire al client di verificare l'identità del server per l'autenticazione reciproca, specifica il certificato del serverserver-ca.pem. Ad esempio:export MYSQL_PWD=`gcloud sql generate-login-token` \ mysql --enable-cleartext-plugin \ --ssl-mode=VERIFY_CA \ --ssl-ca=server-ca.pem \ --ssl-cert=client-cert.pem \ --ssl-key=client-key.pem \ --host=HOSTNAME \ --user=USERNAME
Per informazioni su come creare un certificato e una chiave client, consulta Certificati client.
Passaggi successivi
- Scopri di più sull'autenticazione IAM dei database.
- Scopri come attivare e visualizzare le informazioni di accesso nei log di controllo.
- Scopri come creare utenti e service account che utilizzano l'autenticazione IAM dei database Cloud SQL.
- Scopri come aggiungere un binding di policy IAM a un utente o a un service account.
- Scopri come gestire utenti e service account per l'autenticazione IAM dei database.