Questa pagina descrive come aggiungere un account utente o di servizio che utilizza l'autenticazione del database IAM a un database e come gestire questi account utente e di servizio. Per ulteriori informazioni sull'integrazione IAM, consulta Autenticazione IAM.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
- Assicurati di disporre del ruolo Amministratore Cloud SQL per il tuo account utente.
- Abilita l'autenticazione IAM dei database sulla tua istanza Cloud SQL.
- Assicurati di concedere l'accesso IAM agli utenti che ne hanno bisogno per ogni progetto che contiene database a cui gli utenti devono accedere. Consulta Concessione, modifica e revoca dell'accesso alle risorse.
- Assicurati di aver aggiunto un account di servizio per ogni servizio che richiede l'accesso ai database nel progetto.
Aggiungere un account utente o di servizio IAM a un'istanza di database
Devi creare un nuovo utente del database per ogni utente IAM a cui vuoi concedere l'accesso all'istanza del database. Il nome utente del database deve essere
l'indirizzo email dell'utente IAM, ad esempio test-user@example.com
.
@
e .
).
Gli account di servizio utilizzano il formato service-account-name@project-id.iam.gserviceaccount.com
.
Per aggiungere un account utente o di servizio IAM, devi aggiungere un nuovo utente del database e selezionare IAM come metodo di autenticazione:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Users (Utenti) dal menu di navigazione SQL.
- Fai clic su Aggiungi account utente. Si apre la scheda Aggiungi un account utente all'istanza instance_name.
- Fai clic sul pulsante di opzione Cloud IAM.
- Aggiungi l'indirizzo email dell'account utente o di servizio che vuoi aggiungere nel campo Entità.
- Fai clic su Aggiungi. Ora l'utente si trova nell'elenco degli utenti.
Se l'utente non è assegnato al ruolo Utente istanza Cloud SQL, verrà visualizzata un'icona a sinistra del nome utente.
Per assegnare i privilegi di accesso utente, fai clic sull'icona e seleziona Aggiungi ruolo IAM. L'icona non viene più visualizzata. L'utente ora è un membro del ruolo.
gcloud
Creare un account utente
Utilizza l'indirizzo email, ad esempio test-user@example.com
, per identificare l'utente.
Sostituisci quanto segue:
- USERNAME: l'indirizzo email dell'utente.
- INSTANCE_NAME: il nome dell'istanza a cui vuoi autorizzare l'utente ad accedere.
gcloud sql users create USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user
Creare un account di servizio
Sostituisci quanto segue:
- SERVICE_ACCT: l'indirizzo email dell'account di servizio.
- INSTANCE_NAME: il nome dell'istanza a cui vuoi autorizzare l'accesso dell'account di servizio.
gcloud sql users create SERVICE_ACCT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account
Terraform
Per aggiungere account utente e di servizio IAM su un'istanza in cui è abilitata l'autenticazione del database IAM, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la tua configurazione Terraform a un progetto Google Cloud, completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito a cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione Terraform deve avere la propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome del file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. Questa opzione è consigliata se lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Esamina la configurazione e verifica che le risorse che Terraform creerà o aggiornerà soddisfino le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
al prompt:terraform apply
Attendi finché in Terraform non viene visualizzato il messaggio "Applicazione completata!".
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti che Terraform le abbia create o aggiornate.
Elimina le modifiche
Per eliminare le modifiche:
- Per disabilitare la protezione dall'eliminazione, imposta l'argomento
deletion_protection
nel file di configurazione di Terraform sufalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo questo comando e
inserendo
yes
al prompt:terraform apply
-
Per rimuovere le risorse applicate in precedenza con la tua configurazione Terraform, esegui questo comando e inserisci
yes
al prompt:terraform destroy
REST v1
Creare un account utente
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID dell'istanza a cui stai aggiungendo l'utente.
- username: l'indirizzo email dell'utente
- operation-id: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "username", "type": "CLOUD_IAM_USER" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Creare un account di servizio
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- service-acct: l'indirizzo email del tuo account di servizio
- project-id: il tuo ID progetto
- instance-id: l'ID istanza per l'istanza a cui stai aggiungendo l'account di servizio
- operation-id: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "service-acct", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
Creare un account utente
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID dell'istanza a cui stai aggiungendo l'utente.
- username: l'indirizzo email dell'utente
- operation-id: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "username", "type": "CLOUD_IAM_USER" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Creare un account di servizio
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- service-acct: l'indirizzo email del tuo account di servizio
- project-id: il tuo ID progetto
- instance-id: l'ID istanza per l'istanza a cui stai aggiungendo l'account di servizio
- operation-id: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "service-acct", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Aggiungi un'associazione dei criteri IAM a un account utente o di servizio
Questa procedura consente di aggiungere un'associazione di criteri al criterio IAM di un progetto specifico, a cui è associato un ID progetto e l'associazione. Il comando di associazione è composto da un membro, da un ruolo e da una condizione facoltativa.
Il nome utente del database deve essere l'indirizzo email dell'utente IAM, ad esempio test-user@example.com
. Deve usare le virgolette, perché contiene caratteri speciali (@
e .
).
Console
-
Nella console Google Cloud, vai alla pagina IAM.
- Fai clic su Aggiungi.
- In Nuovi membri, inserisci un indirizzo email. Puoi aggiungere singoli utenti, account di servizio o gruppi come membri, ma ogni progetto deve avere almeno un'entità come membro.
- In Ruolo, vai a Cloud SQL e seleziona Utente istanza Cloud SQL e Client Cloud SQL.
- Per singoli utenti e account di servizio, seleziona Client Cloud SQL.
- Fai clic su Salva.
gcloud
Esegui
gcloud projects add-iam-policy-binding
con il flag --role=roles/cloudsql.instanceUser
.
Aggiungere un'associazione di criteri a un account utente
Sostituisci quanto segue:
- PROJECT_ID: l'ID del progetto che vuoi autorizzare all'utilizzo da parte dell'utente.
- USERNAME: l'indirizzo email dell'utente.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USERNAME \ --role=roles/cloudsql.instanceUser
Esegui di nuovo
gcloud projects add-iam-policy-binding
con il flag --role=roles/cloudsql.client
Aggiungere un'associazione di criteri a un account di servizio
Sostituisci quanto segue:
- PROJECT_ID: l'ID del progetto che vuoi autorizzare all'utilizzo da parte dell'utente.
- SERVICE_ACCT: l'indirizzo email dell'account di servizio.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT \ --role=roles/cloudsql.instanceUser
Esegui di nuovo
gcloud projects add-iam-policy-binding
con il flag --role=roles/cloudsql.client
Terraform
Per aggiungere l'associazione dei criteri richiesta agli account utente e di servizio IAM, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la tua configurazione Terraform a un progetto Google Cloud, completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito a cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione Terraform deve avere la propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome del file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. Questa opzione è consigliata se lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Esamina la configurazione e verifica che le risorse che Terraform creerà o aggiornerà soddisfino le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
al prompt:terraform apply
Attendi finché in Terraform non viene visualizzato il messaggio "Applicazione completata!".
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti che Terraform le abbia create o aggiornate.
Elimina le modifiche
Per eliminare le modifiche:
- Per disabilitare la protezione dall'eliminazione, imposta l'argomento
deletion_protection
nel file di configurazione di Terraform sufalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo questo comando e
inserendo
yes
al prompt:terraform apply
-
Per rimuovere le risorse applicate in precedenza con la tua configurazione Terraform, esegui questo comando e inserisci
yes
al prompt:terraform destroy
REST
Concedi i ruoli cloudsql.instanceUser
e cloudsql.client
a entrambi i tipi di account modificando il criterio di associazione JSON o YAML restituito dal comando get-iam-policy
. Tieni presente che questa modifica al criterio non avrà effetto finché non imposti il criterio aggiornato.
{ "role": "roles/cloudsql.instanceUser", "members": [ "user:test-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" ] } { "role": "roles/cloudsql.client", "members": [ "user:test-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" ] }
Concedi i privilegi di database all'utente IAM
Quando un utente IAM viene aggiunto a un'istanza di database, per impostazione predefinita non vengono concessi privilegi su nessun database.Quando un account utente o di servizio si connette a un database, può eseguire query su qualsiasi oggetto di database il cui accesso è stato concesso a PUBLIC.
Se gli utenti hanno bisogno di ulteriori accessi, possono essere concessi ulteriori privilegi usando l'istruzione GRANT. Consulta la pagina di riferimento CONCEDI per un elenco completo dei privilegi che puoi concedere a utenti e account di servizio. Esegui GRANT dalla riga di comando.
Sostituisci quanto segue:
- USERNAME: l'indirizzo email dell'utente. Devi racchiudere l'email tra virgolette, perché contiene caratteri speciali (
@
e.
). - TABLE_NAME: il nome della tabella a cui vuoi concedere l'accesso all'utente.
grant select on TABLE_NAME to "USERNAME";
Rimuovi un account utente o di servizio IAM dal database
Per rimuovere un account utente o di servizio dal database, devi eliminare l'account dall'istanza:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Users (Utenti) dal menu di navigazione SQL.
- Fai clic sulla in corrispondenza dell'utente da rimuovere.
- Seleziona Rimuovi. Revoca l'accesso solo a questa istanza.
gcloud
Revocare un utente
Utilizza l'indirizzo email, ad esempio test-user@example.com
, per identificare l'utente.
Sostituisci quanto segue:
- USERNAME: l'indirizzo email.
- INSTANCE_NAME: il nome dell'istanza da cui vuoi rimuovere l'utente.
gcloud sql users delete USERNAME \ --instance=INSTANCE_NAME
Eliminare l'account di servizio
Sostituisci quanto segue:
- SERVICE_ACCT: l'indirizzo email dell'account di servizio.
- INSTANCE_NAME: il nome dell'istanza da cui vuoi rimuovere l'utente.
gcloud sql users delete SERVICE_ACCT \ --instance=INSTANCE_NAME
REST v1
La seguente richiesta utilizza il metodo users.delete per eliminare l'account utente specificato.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza desiderato
- USERNAME: l'indirizzo email dell'account utente o di servizio
Metodo HTTP e URL:
DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
La seguente richiesta utilizza il metodo users.delete per eliminare l'account utente specificato.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza desiderato
- USERNAME: l'indirizzo email dell'account utente o di servizio
Metodo HTTP e URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Visualizza le informazioni di accesso negli audit log
Puoi abilitare gli audit log per acquisire gli accessi IAM al database. In caso di problemi di accesso, puoi utilizzare i log di controllo per diagnosticare il problema.
Dopo la configurazione, puoi visualizzare gli audit log di accesso ai dati degli accessi riusciti utilizzando Esplora log.
Ad esempio, un log potrebbe contenere informazioni simili alle seguenti:
{
insertId: "..."
logName: "projects/.../logs/cloudaudit.googleapis.com%2Fdata_access"
protoPayload: {
@type: "type.googleapis.com/google.cloud.audit.AuditLog"
authenticationInfo: {
principalEmail: "..."
}
authorizationInfo: [
0: {
granted: true
permission: "cloudsql.instances.login"
resource: "instances/..."
resourceAttributes: {
}
}
]
methodName: "cloudsql.instances.login"
request: {
@type: "type.googleapis.com/google.cloud.sql.authorization.v1.InstancesLoginRequest"
clientIpAddress: "..."
database: "..."
databaseSessionId: ...
instance: "projects/.../locations/us-central1/instances/..."
user: "..."
}
requestMetadata: {
callerIp: "..."
destinationAttributes: {
}
requestAttributes: {
auth: {
}
time: "..."
}
}
resourceName: "instances/..."
serviceName: "cloudsql.googleapis.com"
status: {
}
}
receiveTimestamp: "..."
resource: {
labels: {
database_id: "...:..."
project_id: "..."
region: "us-central"
}
type: "cloudsql_database"
}
severity: "INFO"
timestamp: "..."
}
Risolvere un errore di accesso
Quando un tentativo di accesso non va a buon fine, PostgreSQL restituisce un messaggio di errore minimo per motivi di sicurezza. Ad esempio:
PGPASSWORD=not-a-password psql --host=... --username=... --dbname=...
psql: error: could not connect to server: FATAL: Cloud SQL IAM user authentication failed for user "..."
FATAL: pg_hba.conf rejects connection for host "...", user "...", database "...", SSL off
Puoi esaminare i log degli errori PostgreSQL per ulteriori dettagli sull'errore. Per ulteriori informazioni, consulta Visualizzazione dei log.
Ad esempio, per l'errore precedente, la seguente voce di log spiega l'azione che puoi intraprendere per risolvere il problema.
F ... [152172]: [1-1] db=...,user=... FATAL: Cloud SQL IAM user authentication failed for user "..."
I ... [152172]: [2-1] db=...,user=... DETAIL: Request is missing required authentication credential. Expected OAuth 2 access token, log in cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
Controlla il messaggio di errore visualizzato. Se il messaggio non indica che hai utilizzato "Autenticazione utente IAM di Cloud SQL" o "Autenticazione dell'account di servizio IAM di Cloud SQL", verifica che il tipo di utente del database utilizzato per l'accesso sia CLOUD_IAM_USER
o CLOUD_IAM_SERVICE_ACCOUNT
.
Per verificarlo, puoi utilizzare la console Google Cloud o il comando gcloud sql
users list
.
Per un utente IAM, verifica che il nome utente del database corrisponda all'email dell'utente IAM.
Se hai utilizzato l'autenticazione del database IAM, controlla i dettagli del messaggio di errore. Puoi trovare il messaggio di errore nel log degli errori del database. Se indica che il token di accesso (OAuth 2.0) che hai inviato come password non era valido, puoi utilizzare il comando gcloud auth application-default print-access-token
gcloud
per trovare i dettagli del token, come segue:
curl -H "Content-Type: application/x-www-form-urlencoded" \ -d "access_token=$(gcloud auth application-default print-access-token)" \ https://www.googleapis.com/oauth2/v1/tokeninfo
Verifica che il token sia per l'utente o l'account di servizio IAM previsto e che non sia scaduto.
Se i dettagli indicano una mancanza di autorizzazione, verifica che all'account utente o di servizio IAM venga concessa l'autorizzazione cloudsql.instances.login
utilizzando il ruolo Cloud SQL Instance User
predefinito o il ruolo personalizzato nel criterio IAM del progetto dell'istanza. Per ulteriore assistenza, utilizza lo strumento per la risoluzione dei problemi relativi ai criteri IAM.
Se un accesso non va a buon fine perché l'autenticazione del database IAM non è disponibile, l'utente può accedere utilizzando l'utente e la password PostgreSQL predefiniti. Questo metodo di accesso concede comunque all'utente l'accesso all'intero database. Verifica che la connessione sia protetta.
Passaggi successivi
- Scopri di più sull'autenticazione dei database IAM.
- Scopri come accedere a un database Cloud SQL.
- Scopri come configurare istanze per l'autenticazione IAM dei database.