Questa pagina descrive come aggiungere e gestire utenti, service account e gruppi in un'istanza Cloud SQL che utilizza l'autenticazione IAM dei database.
Per ulteriori informazioni sull'integrazione di IAM, consulta Autenticazione IAM.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Assicurati di disporre del ruolo Amministratore Cloud SQL sul tuo account utente.
- Abilita l'autenticazione IAM dei database sull'istanza Cloud SQL.
- Assegna il ruolo IAM
cloudsql.instanceUser
necessario alle entità IAM, come utenti IAM, service account o gruppi, per accedere all'istanza Cloud SQL. - Se stai aggiungendo un singolo utente o un singolo account di servizio all'istanza Cloud SQL, devi assegnare il ruolo IAM singolarmente a ogni utente e account di servizio.
- Se aggiungi un gruppo, devi assegnare il ruolo IAM al gruppo, in quanto i membri del gruppo ereditano automaticamente le autorizzazioni IAM associate al ruolo IAM. Per saperne di più sulla creazione di gruppi in Cloud Identity, consulta Creare e gestire i gruppi Google nella Google Cloud console.
- Puoi concedere il ruolo in un progetto che contiene istanze Cloud SQL utilizzando la pagina IAM della console Google Cloud , gcloud CLI, Terraform o l'API Cloud SQL Admin. Per saperne di più, vedi Aggiungere un'associazione di policy IAM a un utente, unaccount di serviziot o un gruppo.
- Se utilizzi un account di servizio, assicurati di aver aggiunto un service account per ogni servizio che richiede l'accesso ai database nel progetto.
-
Nella console Google Cloud vai alla pagina IAM.
- Fai clic su Aggiungi.
- In Nuovi membri, inserisci un indirizzo email. Puoi aggiungere singoli utenti, service account 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.
- (Facoltativo) Se vuoi connetterti utilizzando il proxy di autenticazione Cloud SQL o i connettori dei linguaggi di Cloud SQL, seleziona anche Client Cloud SQL.
- Fai clic su Salva.
- PROJECT_ID: l'ID del progetto che vuoi autorizzare l'utente a utilizzare.
- USERNAME: l'indirizzo email dell'utente.
- PROJECT_ID: l'ID del progetto che vuoi autorizzare l'utente a utilizzare.
- SERVICE_ACCT: l'indirizzo email del service account.
- PROJECT_ID: l'ID del progetto che vuoi autorizzare i membri del gruppo a utilizzare.
- GROUP_EMAIL_ADDRESS: l'indirizzo email del gruppo. Ad esempio,
example-group@example.com
. - Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in 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.
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file viene denominatomain.tf
.mkdir
DIRECTORY && cdDIRECTORY && touch main.tf -
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel file
main.tf
appena creato.(Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
terraform init
(Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform apply
Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).
- Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
- Per disattivare la protezione dall'eliminazione, imposta l'argomento
deletion_protection
sufalse
nel file di configurazione Terraform.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente e
inserendo
yes
al prompt:terraform apply
-
Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform destroy
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in 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.
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file viene denominatomain.tf
.mkdir
DIRECTORY && cdDIRECTORY && touch main.tf -
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel file
main.tf
appena creato.(Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
terraform init
(Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform apply
Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).
- Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
- Per disattivare la protezione dall'eliminazione, imposta l'argomento
deletion_protection
sufalse
nel file di configurazione Terraform.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente e
inserendo
yes
al prompt:terraform apply
-
Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform destroy
-
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 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'utente o del account di servizio che vuoi aggiungere nel campo Entità.
- Fai clic su Aggiungi. L'utente o il account di servizio ora si trova nell'elenco degli account utente.
Se all'utente non è stato assegnato il ruolo IAM
cloudsql.instanceUser
dopo la creazione dell'account utente, accanto al nome utente viene visualizzata un'icona.
Per concedere le autorizzazioni di accesso all'utente, fai clic sull'icona e poi seleziona Aggiungi ruolo IAM. Se l'icona non viene più visualizzata, all'account utente viene assegnato il ruolo IAM che concede l'autorizzazione di accesso.
- USERNAME: l'indirizzo email dell'utente.
- INSTANCE_NAME: il nome dell'istanza a cui vuoi autorizzare l'accesso dell'utente.
- SERVICE_ACCT: l'indirizzo email del account di servizio.
- INSTANCE_NAME: il nome dell'istanza a cui vuoi autorizzare l'accesso dell'account di servizio.
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in 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.
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file viene denominatomain.tf
.mkdir
DIRECTORY && cdDIRECTORY && touch main.tf -
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel file
main.tf
appena creato.(Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
terraform init
(Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform apply
Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).
- Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
- Per disattivare la protezione dall'eliminazione, imposta l'argomento
deletion_protection
sufalse
nel file di configurazione Terraform.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente e
inserendo
yes
al prompt:terraform apply
-
Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform destroy
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza dell'istanza a cui stai aggiungendo l'utente
- USERNAME: l'indirizzo email dell'utente
- SERVICE_ACCT: l'email dell'account di servizio
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza dell'istanza a cui stai aggiungendo il account di servizio
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza dell'istanza a cui stai aggiungendo l'utente
- USERNAME: l'indirizzo email dell'utente
- SERVICE_ACCT: l'email dell'account di servizio
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza dell'istanza a cui stai aggiungendo il account di servizio
-
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 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 del gruppo da aggiungere nel campo Entità di sicurezza.
- Fai clic su Aggiungi. Il gruppo ora è nell'elenco utenti.
Se al gruppo non è assegnato il ruolo IAM
cloudsql.instanceUser
dopo la creazione dell'account utente, accanto al gruppo viene visualizzata un'icona.
Per concedere ai membri del gruppo le autorizzazioni di accesso, fai clic sull'icona e poi seleziona Aggiungi ruolo IAM. Se l'icona non viene più visualizzata, a tutti i membri del gruppo viene assegnato il ruolo che concede l'autorizzazione di accesso.
- GROUP_EMAIL_ADDRESS: l'indirizzo email del gruppo Cloud Identity che vuoi aggiungere all'istanza. Ad esempio, example-group@example.com.
- INSTANCE_NAME: il nome dell'istanza a cui vuoi aggiungere il gruppo.
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in 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.
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file viene denominatomain.tf
.mkdir
DIRECTORY && cdDIRECTORY && touch main.tf -
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel file
main.tf
appena creato.(Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
terraform init
(Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform apply
Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).
- Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
- Per disattivare la protezione dall'eliminazione, imposta l'argomento
deletion_protection
sufalse
nel file di configurazione Terraform.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente e
inserendo
yes
al prompt:terraform apply
-
Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform destroy
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza dell'istanza a cui stai aggiungendo il gruppo Cloud Identity
- GROUP_EMAIL: l'indirizzo email del gruppo Cloud Identity
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza dell'istanza a cui stai aggiungendo il gruppo Cloud Identity
- GROUP_EMAIL: l'indirizzo email del gruppo Cloud Identity
Aggiungi questi utenti a un gruppo.
Aggiungi il gruppo all'istanza.
Assegna al gruppo autorizzazioni IAM sufficienti per consentire ai membri del gruppo di connettersi alle tue istanze. L'applicazione di queste modifiche potrebbe richiedere del tempo. Per saperne di più sui tempi di propagazione, consulta Propagazione della modifica di accesso.
Assegna i privilegi del database agli utenti IAM che stai migrando al gruppo.
Dopo aver applicato le modifiche all'appartenenza al gruppo e le autorizzazioni IAM, elimina l'utente IAM esistente dall'istanza. La volta successiva che l'utente IAM esegue l'accesso correttamente, viene ricreato come utente del gruppo IAM che può utilizzare l'autenticazione del gruppo IAM.
- USERNAME: l'indirizzo email dell'utente. Devi utilizzare le virgolette
intorno all'email perché contiene caratteri speciali (
@
e.
) - TABLE_NAME: il nome della tabella a cui vuoi concedere l'accesso all'utente.
- GROUP_NAME: l'indirizzo email del gruppo Cloud Identity, inclusi
@
e il nome di dominio. Ad esempio, se l'indirizzo email del gruppo IAM èexample-group@example.com
, il nome del gruppo èexample-group@example.com
. Devi utilizzare le virgolette intorno al nome del gruppo perché la stringa contiene caratteri speciali (@
e.
) - TABLE_NAME: il nome della tabella a cui vuoi concedere l'accesso all'utente.
-
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 Utenti dal menu di navigazione SQL. La pagina mostra un elenco di utenti IAM, service account e gruppi Cloud Identity che sono stati aggiunti alla tua istanza.
- (Facoltativo) Per visualizzare un elenco di utenti IAM o service account che hanno già eseguito l'accesso all'istanza, fai clic su Membri del gruppo IAM autenticati.
- Gli account utente membri di un gruppo hanno il tipo
CLOUD_IAM_GROUP_USER
. - I service account membri di un gruppo hanno il tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Gli account utente che sono account utente di autenticazione IAM dei database individuali hanno il tipo
CLOUD_IAM_USER
. - I service account che sono singoli service account di autenticazione del database IAM hanno il tipo
di
CLOUD_IAM_SERVICE_ACCOUNT
. - PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- Gli account utente membri di un gruppo hanno il tipo
CLOUD_IAM_GROUP_USER
. - I service account membri di un gruppo hanno il tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Gli account utente che sono account utente di autenticazione IAM dei database individuali hanno il tipo
CLOUD_IAM_USER
. - I service account che sono singoli service account di autenticazione del database IAM hanno il tipo
di
CLOUD_IAM_SERVICE_ACCOUNT
. - project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
- Gli account utente membri di un gruppo hanno il tipo
CLOUD_IAM_GROUP_USER
. - I service account membri di un gruppo hanno il tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Gli account utente che sono account utente di autenticazione IAM dei database individuali hanno il tipo
CLOUD_IAM_USER
. - I service account che sono singoli service account di autenticazione del database IAM hanno il tipo
di
CLOUD_IAM_SERVICE_ACCOUNT
. -
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 Utenti dal menu di navigazione SQL.
- Fai clic su per l'utente che vuoi rimuovere.
- Seleziona Rimuovi. In questo modo viene revocato l'accesso solo a questa istanza.
- USERNAME: l'indirizzo email.
- INSTANCE_NAME: il nome dell'istanza da cui vuoi rimuovere l'utente.
- SERVICE_ACCT: l'indirizzo email del account di servizio.
- INSTANCE_NAME: il nome dell'istanza da cui vuoi rimuovere l'utente.
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza desiderato
- USERNAME: l'indirizzo email dell'utente o del account di servizio
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza desiderato
- USERNAME: l'indirizzo email dell'utente o del account di servizio
- Rimozione automatica
- Rimozione manuale
- Gli utenti e i service account che appartengono al gruppo IAM possono comunque accedere finché l'autorizzazione IAM
cloudsql.instances.login
non viene rimossa dal gruppo. - Se l'eliminazione di un gruppo comporta che l'utente del gruppo IAM o i service account non appartengano ad altri gruppi nell'istanza, Cloud SQL rimuove l'utente del gruppo IAM o i service account dall'istanza.
- Tuttavia, se un utente del gruppo IAM è proprietario di un oggetto di database nell'istanza, devi riassegnare la proprietà dell'oggetto prima di poter eliminare l'utente manualmente.
- Tutti gli utenti e i service account del gruppo IAM non possono accedere all'istanza.
- Cloud SQL rimuove automaticamente anche tutti gli utenti del gruppo IAM e i service account dall'istanza.
- Tuttavia, se un utente del gruppo IAM è proprietario di un oggetto di database nell'istanza, devi riassegnare la proprietà dell'oggetto prima di poter eliminare l'utente manualmente.
-
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 Utenti dal menu di navigazione SQL.
- Fai clic su per il gruppo che vuoi rimuovere.
- Seleziona Rimuovi. In questo modo viene revocato l'accesso solo a questa istanza.
- GROUP_NAME: la prima parte dell'indirizzo email del gruppo Cloud Identity. Ad esempio, utilizzando l'indirizzo email
example-group@example.com
, il nome del gruppo Cloud Identity èexample-group
. - INSTANCE_NAME: il nome dell'istanza Cloud SQL con il gruppo Cloud Identity che vuoi eliminare.
Nella console Google Cloud vai alla pagina IAM.
Verifica che l'account sia un membro del gruppo aggiunto all'istanza Cloud SQL.
Elenca gli utenti e i service account sull'istanza.
gcloud sql users list --instance=
INSTANCE_NAME Nell'output, controlla se l'utente o l'account di servizio è elencato come
CLOUD_IAM_USER
oCLOUD_IAM_SERVICE_ACCOUNT
.Se l'utente o l'account di servizio è elencato come
CLOUD_IAM_USER
oCLOUD_IAM_SERVICE_ACCOUNT
, rimuovi l'account dall'istanza. L'account che stai rimuovendo è un account IAM individuale che non eredita i privilegi di database del gruppo.Accedi di nuovo all'istanza con l'utente o il account di servizio.
Se accedi di nuovo all'istanza, l'account viene ricreato con il tipo di account corretto
CLOUD_IAM_GROUP_USER
oCLOUD_IAM_GROUP_SERVICE_ACCOUNT
.- Scopri di più sull'autenticazione IAM dei database.
- Scopri come accedere a un database Cloud SQL.
- Scopri come configurare le istanze per l'autenticazione IAM dei database.
Per ulteriori informazioni sulla creazione dei service account, vedi Creare service account.
Aggiungere un binding dei criteri IAM a un utente, account di servizio o un gruppo
Questa procedura aggiunge un'associazione di policy alla policy IAM di un progetto specifico, dato un ID progetto e l'associazione. Il comando di associazione è composto da un membro, un ruolo e una condizione facoltativa.
Il nome utente del database deve essere l'indirizzo email dell'utente IAM, ad esempio example-user@example.com
. Deve essere tutto in minuscolo e utilizzare le virgolette
perché contiene caratteri speciali (@
e .
).
Esegui
gcloud projects add-iam-policy-binding
con il flag --role=roles/cloudsql.instanceUser
.
Aggiungere un binding dei criteri a un account utente
Sostituisci quanto segue:
gcloud projects add-iam-policy-bindingPROJECT_ID \ --member=user:USERNAME \ --role=roles/cloudsql.instanceUser
Se vuoi connetterti utilizzando il proxy di autenticazione Cloud SQL o i connettori dei linguaggi di Cloud SQL,
esegui di nuovo
gcloud projects add-iam-policy-binding
con il flag --role=roles/cloudsql.client
Aggiungere un binding dei criteri a un service account
Sostituisci quanto segue:
gcloud projects add-iam-policy-bindingPROJECT_ID \ --member=serviceAccount:SERVICE_ACCT \ --role=roles/cloudsql.instanceUser
Se vuoi connetterti utilizzando il proxy di autenticazione Cloud SQL o i connettori dei linguaggi di Cloud SQL,
esegui di nuovo
gcloud projects add-iam-policy-binding
con il flag --role=roles/cloudsql.client
Aggiungere un binding dei criteri a un gruppo Cloud Identity
Sostituisci quanto segue:
gcloud projects add-iam-policy-bindingPROJECT_ID \ --member=group:GROUP_EMAIL_ADDRESS \ --role=roles/cloudsql.instanceUser
A tutti i membri del gruppo specificato viene concesso il ruolo Utente istanza Cloud SQL e possono accedere alle istanze in questo progetto.
Se vuoi connetterti utilizzando il proxy di autenticazione Cloud SQL o i connettori dei linguaggi di Cloud SQL,
esegui di nuovo
gcloud projects add-iam-policy-binding
con il flag --role=roles/cloudsql.client
Per aggiungere l'associazione dei criteri richiesta all'utente IAM e ai service account, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
Prepara la directory
Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).
Applica le modifiche
Elimina le modifiche
Per eliminare le modifiche:
Per aggiungere l'associazione dei criteri richiesta all'utente IAM e ai service account, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
Prepara la directory
Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).
Applica le modifiche
Elimina le modifiche
Per eliminare le modifiche:
Concedi i ruoli cloudsql.instanceUser
e cloudsql.client
a entrambi i tipi di account modificando il criterio di binding JSON o YAML
restituito dal comando get-iam-policy
. Tieni presente che questa modifica
alle norme non entrerà in vigore finché non imposterai le norme aggiornate.
{ "role": "roles/cloudsql.instanceUser", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" "group:example-group@example.com" ] } { "role": "roles/cloudsql.client", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" ] }
Aggiungere un singolo utente IAM o account di servizio a un'istanza Cloud SQL
Devi creare un nuovo account utente per ogni singolo utente IAM o account di servizio che aggiungi all'istanza Cloud SQL per accedere ai database. Se aggiungi un gruppo IAM, non devi creare un account utente per ogni membro del gruppo.
Il nome utente del database deve essere l'indirizzo email dell'utente IAM e deve essere tutto in minuscolo.
Ad esempio, example-user@example.com
.
Quando utilizzi i comandi REST, il nome utente deve essere racchiuso tra virgolette perché contiene
caratteri speciali (@
e .
). I service account utilizzano il formato
service-account-name@project-id.iam.gserviceaccount.com
.
Per aggiungere un singolo utente IAM o account di servizio, aggiungi un nuovo account utente e seleziona IAM come metodo di autenticazione:
Creare un account utente
Utilizza l'email, ad esempio example-user@example.com
, per identificare l'utente.
Sostituisci quanto segue:
gcloud sql users createUSERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user
Creare un account di servizio
Sostituisci quanto segue:
gcloud sql users createSERVICE_ACCT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account
Per aggiungere utenti IAM e service account a un'istanza con l'autenticazione IAM dei database abilitata, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
Prepara la directory
Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).
Applica le modifiche
Elimina le modifiche
Per eliminare le modifiche:
Creare un account utente
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
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 di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users"
PowerShell (Windows)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users" | Select-Object -Expand Content
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, apporta le seguenti sostituzioni:
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 di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users"
PowerShell (Windows)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users" | Select-Object -Expand Content
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 " }
Creare un account utente
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
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 di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /users"
PowerShell (Windows)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /users" | Select-Object -Expand Content
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, apporta le seguenti sostituzioni:
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 di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /users"
PowerShell (Windows)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /users" | Select-Object -Expand Content
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 " }
Aggiungere un gruppo IAM a un'istanza Cloud SQL
Per utilizzare l'autenticazione del gruppo IAM e aggiungere un gruppo IAM a un'istanza Cloud SQL, utilizza una delle procedure descritte in questa sezione. Dopo aver aggiunto il gruppo IAM, non è necessario aggiungere i singoli membri del gruppo all'istanza. Per maggiori informazioni, vedi Aggiungere automaticamente i membri di un gruppo a un'istanza Cloud SQL.
I nomi dei gruppi IAM hanno gli stessi limiti di lunghezza degli identificatori PostgreSQL e possono contenere solo 63 caratteri.
Se hai un gruppo IAM con un nome che supera il limite di lunghezza del nome utente di un motore di database, puoi comunque utilizzarlo per l'autenticazione del gruppo IAM nidificandolo in un gruppo IAM principale con un nome che rispetta il limite di lunghezza. Il gruppo IAM principale deve essere aggiunto all'istanza prima che il gruppo nidificato possa essere utilizzato.
Sostituisci quanto segue:
Esegui questo comando:
gcloud sql users createGROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group
Per aggiungere utenti IAM e service account a un'istanza con l'autenticazione IAM dei database abilitata, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
Prepara la directory
Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).
Applica le modifiche
Elimina le modifiche
Per eliminare le modifiche:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users
Corpo JSON della richiesta:
{ "name": "GROUP_EMAIL ", "type": "CLOUD_IAM_GROUP" }
Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users"
PowerShell (Windows)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users" | Select-Object -Expand Content
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": "example-group@example.com", "insertTime": "2023-12-07T22:44:16.656Z", "startTime": "2023-12-07T22:44:16.686Z", "endTime": "2023-12-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 " }
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /users
Corpo JSON della richiesta:
{ "name": "GROUP_EMAIL ", "type": "CLOUD_IAM_GROUP" }
Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /users"
PowerShell (Windows)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /users" | Select-Object -Expand Content
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": "example-group@example.com", "insertTime": "2023-12-07T22:44:16.656Z", "startTime": "2023-12-07T22:44:16.686Z", "endTime": "2023-12-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 " }
Aggiungere automaticamente i membri di un gruppo a un'istanza Cloud SQL
Quando aggiungi un gruppo IAM a un'istanza Cloud SQL, tutti i membri (utenti e service account) di quel gruppo ereditano le autorizzazioni IAM per l'autenticazione all'istanza. Non è necessario aggiungere singolarmente il membro del gruppo all'istanza Cloud SQL. Dopo che un membro del gruppo accede ed esegue l'autenticazione correttamente all'istanza principale per la prima volta, Cloud SQL crea un account utente di gruppo o un account di servizio di gruppo per quel membro del gruppo. Puoi visualizzare il membro del gruppo elencato nell'istanza dopo il primo accesso riuscito.
In caso di failover, se l'istanza di failover dispone dei gruppi appropriati, gli utenti del gruppo IAM possono continuare ad accedere e a essere creati.
Per ulteriori informazioni sull'accesso, consulta Accesso a un database con l'autenticazione IAM dei database.
Eseguire la migrazione degli utenti IAM esistenti per utilizzare l'autenticazione del gruppo IAM
Gli utenti IAM esistenti di tipo CLOUD_IAM_USER
o CLOUD_IAM_SERVICE_ACCOUNT
non utilizzano l'autenticazione del gruppo IAM.
Puoi eseguire la migrazione di questi utenti per utilizzare l'autenticazione dei gruppi IAM.
Gestire i membri di un gruppo su un'istanza Cloud SQL
Quando aggiungi un gruppo IAM a un'istanza Cloud SQL, tutti i membri (utenti o service account) di quel gruppo ereditano l'autorizzazione IAM per l'autenticazione all'istanza. Puoi controllare l'accesso a un'istanza gestendo il gruppo in Cloud Identity. Ad esempio, se vuoi concedere a un nuovo utente l'accesso a un'istanza, aggiungilo come membro del gruppo in Cloud Identity. Non è necessario rimuovere o aggiungere separatamente i membri del gruppo a livello di istanza Cloud SQL perché le modifiche all'appartenenza al gruppo vengono propagate automaticamente all'istanza Cloud SQL. Le modifiche all'appartenenza al gruppo, come l'aggiunta o la rimozione di un membro, richiedono circa 15 minuti per la propagazione. Il ritardo di propagazione di 15 minuti da Cloud SQL si verifica in parallelo con il tempo necessario per la propagazione delle modifiche IAM.
La concessione o la revoca dei privilegi del database per un gruppo IAM in PostgreSQL ha effetto immediato. Ad esempio, se revochi l'accesso a una tabella, i membri di quel gruppo IAM perdono immediatamente l'accesso alla tabella.
È possibile che un utente o un account di servizio sia membro di più gruppi IAM. Se un utente o un account di servizio appartiene a più gruppi IAM in un'istanza, dispone di tutte le autorizzazioni IAM e di tutti i privilegi di database combinati di ciascuno di questi gruppi IAM.
Quando aggiungi un nuovo membro (utente o account di servizio) al gruppo IAM in Cloud Identity e questo accede all'istanza per la prima volta, eredita automaticamente i privilegi del database concessi al gruppo.
Concedi privilegi di database a un singolo utente IAM o account di servizio
Quando un utente o un servizio IAM individuale viene aggiunto a un'istanza Cloud SQL, al nuovo account non vengono concessi privilegi su alcun database per impostazione predefinita. Possono eseguire query solo su qualsiasi oggetto di database il cui accesso è stato concesso a PUBLIC.Se hanno bisogno di un accesso aggiuntivo, è possibile concedere ulteriori privilegi utilizzando l'istruzione GRANT. Consulta la pagina di riferimento GRANT per un elenco completo dei privilegi che puoi concedere a utenti e service account. Esegui GRANT dalla riga di comando.
Sostituisci quanto segue:
grant select onTABLE_NAME to "USERNAME ";
Concedere privilegi di database a un gruppo IAM
Quando utilizzi l'autenticazione dei gruppi IAM, concedi privilegi di database ai gruppi IAM anziché a singoli utenti o service account. Per impostazione predefinita, quando aggiungi un gruppo IAM a un'istanza Cloud SQL, il gruppo non dispone di privilegi di database.
Per concedere i privilegi di database al gruppo IAM, utilizza l'istruzione GRANT. Dopo aver eseguito l'accesso all'istanza Cloud SQL per la prima volta, ogni membro del gruppo (inclusi utenti e service account) eredita automaticamente i privilegi di database concessi al gruppo.
Sostituisci quanto segue:
Esegui GRANT dalla riga di comando psql
.
grant select onTABLE_NAME to "GROUP_NAME ";
Per saperne di più sulla concessione dei privilegi, consulta la pagina di riferimento GRANT nella documentazione di PostgreSQL.
I privilegi del database che concedi al gruppo IAM hanno effetto immediato.
Visualizzare utenti, service account e gruppi IAM aggiunti a un'istanza Cloud SQL
Per visualizzare gli utenti, i service account e i gruppi IAM che sono stati aggiunti all'istanza Cloud SQL, esegui i seguenti comandi.
Sostituisci INSTANCE_NAME con il nome dell'istanza che contiene i gruppi che vuoi visualizzare.
gcloud sql users list --instance=INSTANCE_NAME
I gruppi hanno un tipo di utente CLOUD_IAM_GROUP
.
L'output elenca anche gli account utente e di servizio sull'istanza Cloud SQL.
La seguente richiesta utilizza il metodo users.list per elencare gli utenti che hanno account sull'istanza Cloud SQL.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users/list
Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users/list"
PowerShell (Windows)
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users/list" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "example-service-acct@PROJECT_ID .iam", "host": "", "instance": "INSTANCE_ID ", "project": "PROJECT_ID ", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }, { "kind": "sql#user", "etag": "--redacted--", "name": "another-example-service-acct@PROJECT_ID .iam", "host": "", "instance": "INSTANCE_ID ", "project": "PROJECT_ID ", "type": "CLOUD_IAM_GROUP_SERVICE_ACCOUNT" }, { "kind": "sql#user", "etag": "--redacted--", "name": "postgres", "host": "", "instance": "INSTANCE_ID ", "project": "PROJECT_ID ", }, { "kind": "sql#user", "etag": "--redacted--", "name": "example-user@example.com", "host": "", "instance": "INSTANCE_ID ", "project": "PROJECT_ID ", "type": "CLOUD_IAM_USER" }, { "kind": "sql#user", "etag": "--redacted--", "name": "another-example-user@example.com", "host": "", "instance": "INSTANCE_ID ", "project": "PROJECT_ID ", "type": "CLOUD_IAM_GROUP_USER" }, { "kind": "sql#user", "etag": "--redacted--", "name": "example-group@example.com", "host": "", "instance": "INSTANCE_ID ", "project": "PROJECT_ID ", "type": "CLOUD_IAM_GROUP" } ] }
I gruppi hanno un tipo di utente CLOUD_IAM_GROUP
.
L'output elenca anche gli account utente e di servizio sull'istanza Cloud SQL.
La seguente richiesta utilizza il metodo users.list per elencare gli utenti che hanno account sull'istanza Cloud SQL.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /users
Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /users"
PowerShell (Windows)
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /users" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id ", "project": "project-id ", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1 ", "host": "", "instance": "instance-id ", "project": "project-id ", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2 ", "host": "", "instance": "instance-id ", "project": "project-id ", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
I gruppi hanno un tipo di utente CLOUD_IAM_GROUP
.
L'output elenca anche gli account utente e di servizio sull'istanza Cloud SQL.
Rimuovere un singolo utente IAM o account di servizio da un'istanza Cloud SQL
Per rimuovere un singolo utente o account di servizio che non è membro di un gruppo dall'istanza Cloud SQL, elimina l'account utilizzando questo comando:
Revocare un utente
Utilizza l'email, ad esempio example-user@example.com
, per identificare l'utente.
Sostituisci quanto segue:
gcloud sql users deleteUSERNAME \ --instance=INSTANCE_NAME
Eliminare il singolo service account
Sostituisci quanto segue:
gcloud sql users deleteSERVICE_ACCT \ --instance=INSTANCE_NAME
La seguente richiesta utilizza il metodo users.delete per eliminare l'account utente specificato.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
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 di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Esegui questo comando:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users?host=&name=USERNAME "
PowerShell (Windows)
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /users?host=&name=USERNAME " | Select-Object -Expand Content
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 " }
La seguente richiesta utilizza il metodo users.delete per eliminare l'account utente specificato.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
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 di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Esegui questo comando:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /users?host=&name=USERNAME "
PowerShell (Windows)
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /users?host=&name=USERNAME " | Select-Object -Expand Content
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 " }
Rimuovere i membri del gruppo IAM da un'istanza Cloud SQL
Esistono due modi per rimuovere i membri del gruppo IAM da un'istanza Cloud SQL:
Rimozione automatica
Per rimuovere un membro del gruppo IAM, devi rimuovere la sua appartenenza dai gruppi IAM applicabili in Cloud Identity. Dopo che gli utenti del gruppo IAM hanno perso l'iscrizione a tutti i gruppi applicabili in Cloud Identity, Cloud SQL rimuove automaticamente questi utenti del gruppo dall'istanza. L'unica eccezione a questa rimozione sono gli utenti del gruppo che possiedono oggetti di database. Questi utenti del gruppo devono essere rimossi manualmente.
Le modifiche all'appartenenza al gruppo, come l'aggiunta o la rimozione di un membro, richiedono circa 15 minuti per essere propagate. Il ritardo di propagazione di 15 minuti da Cloud SQL si verifica in parallelo con il tempo necessario per la propagazione delle modifiche IAM.
Rimozione manuale
Nei casi in cui un utente del gruppo IAM non può essere rimosso automaticamente, puoi rimuoverlo manualmente. Non puoi rimuovere manualmente un utente del gruppo IAM da un'istanza Cloud SQL utilizzando gcloud CLI, la consoleGoogle Cloud , Terraform o l'API Cloud SQL Admin. Gli utenti del database con privilegi di superutente possono invece eliminare manualmente gli utenti del gruppo IAM dall'istanza Cloud SQL utilizzando un'istruzione DROP USER da un client PostgreSQL.
Dopo aver rimosso manualmente un utente del gruppo IAM dall'istanza Cloud SQL, assicurati di rimuoverlo anche dal gruppo IAM in Cloud Identity per impedire ulteriori accessi all'istanza Cloud SQL.
Elimina un gruppo IAM da un'istanza Cloud SQL
Puoi eliminare i gruppi IAM aggiunti dall'istanza Cloud SQL. Dopo aver eliminato un gruppo IAM dall'istanza, tutti gli utenti e i service account che appartengono al gruppo IAM perdono tutti i privilegi di database concessi al gruppo IAM. Inoltre, si applicano le seguenti condizioni:
Se elimini tutti i gruppi IAM da un'istanza Cloud SQL, tutti gli utenti e i service account dei gruppi IAM perdono tutti i privilegi del database. Inoltre, si applicano le seguenti condizioni:
Per eliminare un gruppo Cloud Identity da un'istanza, utilizza il
comando gcloud sql users delete
.
Sostituisci quanto segue:
gcloud sql users deleteGROUP_NAME \ --instance=INSTANCE_NAME
Rimuovere le autorizzazioni di accesso IAM da un gruppo IAM
Se revochi il ruolo cloudsql.instanceUser
da un gruppo IAM,
tutti i membri del gruppo perdono la possibilità di accedere a qualsiasi istanza Cloud SQL
nel progetto. Gli utenti o i service account possono accedere alle istanze solo se sono membri di un altro gruppo IAM che dispone ancora delle autorizzazioni di accesso.
Per revocare un ruolo da un gruppo Cloud Identity, vedi Revocare un singolo ruolo.
Rimuovere utenti da un gruppo IAM
I membri del gruppo IAM, come utenti o service account, possono essere rimossi dal gruppo IAM in Cloud Identity.
Una volta che la rimozione è stata propagata tramite IAM, l'utente non può più accedere al database, a meno che non abbia ricevuto autorizzazioni di accesso da un altro gruppo o che non gli siano stati concessi direttamente privilegi di accesso. Inoltre, gli utenti rimossi da un gruppo perdono i privilegi di database del gruppo.
Se un utente del gruppo IAM non appartiene a nessun gruppo nell'istanza, Cloud SQL lo rimuove automaticamente dall'istanza. Tuttavia, se Cloud SQL rileva che un utente del gruppo IAM è proprietario di un oggetto nell'istanza, Cloud SQL non rimuove l'utente. Un amministratore deve riassegnare la proprietà dell'oggetto e rimuovere manualmente l'utente.
Visualizzare le informazioni di accesso nei log di controllo
Puoi attivare 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.
Una volta configurati, puoi visualizzare gli audit log di accesso ai dati degli accessi riusciti utilizzando Esplora log.
Per l'autenticazione dei gruppi IAM, i log di controllo mostrano l'attività e gli accessi per i singoli account utente e di servizio.
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 i problemi relativi a un accesso non riuscito
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
Per maggiori dettagli sull'errore, puoi esaminare i log degli errori di PostgreSQL. Per maggiori informazioni, consulta la sezione 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 che ricevi. Se il messaggio non indica che hai
utilizzato l'"autenticazione utente Cloud SQL IAM" o
l'"autenticazione dell'account di servizio Cloud SQL IAM", verifica che
il tipo di utente del database utilizzato per accedere 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 sia l'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 è 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 IAM o il service account previsto e che non sia scaduto.
Se i dettagli indicano una mancanza di autorizzazione, verifica che all'utente IAM o al account di servizio sia concessa l'autorizzazione cloudsql.instances.login
utilizzando il ruolo predefinito Cloud SQL Instance User
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 di IAM.
Se un accesso non riesce a causa della mancata disponibilità dell'autenticazione del database IAM, l'utente può accedere utilizzando l'utente e la password PostgreSQL predefiniti. Questo metodo di accesso consente comunque all'utente di accedere all'intero database. Verifica che la connessione sia sicura.
Risoluzione dei problemi relativi agli account utente che utilizzano l'autenticazione dei gruppi IAM
Questa sezione elenca gli scenari di risoluzione dei problemi per l'autenticazione del gruppo IAM.
Impossibile aggiungere un gruppo a un database
Quando provi ad aggiungere un gruppo a un'istanza, viene visualizzato il seguente errore:
(gcloud.sql.users.create) HTTPError 400: Invalid request: Provided CLOUD_IAM_GROUP:
Assicurati che l'indirizzo email che hai fornito sia un gruppo valido.
Se il gruppo non esiste ancora, crealo. Per saperne di più sulla creazione di gruppi, consulta Creare e gestire i gruppi Google nella console Google Cloud .
Se ricevi il seguente errore:
(gcloud.sql.users.create) HTTPError 400: Invalid request: IAM Group Authentication is disabled.
Prima di poter utilizzare l'autenticazione dei gruppi IAM, l'istanza Cloud SQL richiede il seguente aggiornamento di manutenzione:
R20240514.00_04
o versioni successive
Puoi applicare l'aggiornamento della manutenzione alla tua istanza utilizzando la manutenzione self-service. Per saperne di più, vedi Eseguire la manutenzione self-service.
Un utente IAM o un account di servizio esistente non eredita i privilegi del database concessi al proprio gruppo IAM
Se un utente IAM o un account di servizio esistente non eredita i privilegi di database corretti del proprio gruppo, completa i seguenti passaggi: