In questa pagina viene descritto come aggiungere e gestire utenti, account di servizio e gruppi per: un'istanza Cloud SQL che utilizza l'autenticazione IAM dei database.
Per saperne di più 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.
- Install the Google Cloud CLI.
-
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.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Assicurati di disporre del ruolo Amministratore Cloud SQL per il tuo account utente.
- Abilita autenticazione database IAM sull'istanza Cloud SQL.
- Assegna gli IAM
cloudsql.instanceUser
necessari alle entità IAM come utenti IAM, account di servizio, o gruppi con accedi all'istanza Cloud SQL. - Se aggiungi un singolo utente o account di servizio individuale all'account all'istanza Cloud SQL, dovrai assegnare IAM singolarmente a ciascun account utente e di servizio.
- Se stai aggiungendo un gruppo, devi avere di assegnare il ruolo IAM al gruppo come membri il gruppo eredita automaticamente le autorizzazioni IAM associati al ruolo IAM. Per saperne di più sulla creazione di gruppi in Cloud Identity, consulta Creare e gestire gruppi Google nella console Google Cloud.
- Puoi concedere il ruolo su un progetto che contiene istanze Cloud SQL, utilizzando pagina della console Google Cloud, gcloud CLI, Terraform o l'API Cloud SQL Admin. Per ulteriori informazioni, consulta Aggiungere un'associazione di criteri IAM a un utente, un account di servizio o un gruppo.
- Se utilizzi un account di servizio, assicurati di aver aggiunto account di servizio per ogni servizio che richiede l'accesso ai database nel progetto.
Per ulteriori informazioni sulla creazione di account di servizio, consulta Crea gli account di servizio.
Aggiungere un'associazione di criteri IAM a un utente, un account di servizio o un gruppo
Questa procedura aggiunge un'associazione di criteri al criterio IAM di un un progetto specifico, una volta assegnato un ID progetto e l'associazione. Il comando binding è composto da un membro, un ruolo e una condizione facoltativa.
Il nome utente del database deve essere l'indirizzo email dell'utente IAM, per
esempio example-user@example.com
. Deve essere tutto minuscolo e utilizzare 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.
- (Facoltativo) Se vuoi connetterti utilizzando il proxy di autenticazione Cloud SQL o Connettori di linguaggio Cloud SQL, quindi seleziona anche Client Cloud SQL.
- Fai clic su Salva.
gcloud
Corsa
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 per il quale vuoi autorizzare da utilizzare.
- USERNAME: l'indirizzo email dell'utente.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USERNAME \ --role=roles/cloudsql.instanceUser
Se vuoi connetterti utilizzando il proxy di autenticazione Cloud SQL o i connettori di linguaggio Cloud SQL,
quindi esegui
gcloud projects add-iam-policy-binding
di nuovo 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 per il quale vuoi autorizzare l'utente.
- SERVICE_ACCT: l'indirizzo email del servizio .
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT \ --role=roles/cloudsql.instanceUser
Se vuoi connetterti utilizzando il proxy di autenticazione Cloud SQL o i connettori di linguaggio Cloud SQL,
quindi esegui
gcloud projects add-iam-policy-binding
di nuovo con il flag --role=roles/cloudsql.client
Aggiungere un'associazione di criteri a un gruppo Cloud Identity
Sostituisci quanto segue:
- PROJECT_ID: l'ID del progetto che vuoi autorizzare. membri del gruppo da utilizzare.
- GROUP_EMAIL_ADDRESS: l'indirizzo email del gruppo. Per
ad esempio
example-group@example.com
.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=group:GROUP_EMAIL_ADDRESS \ --role=roles/cloudsql.instanceUser
A tutti i membri del gruppo specificato viene concesso l'autorizzazione Utente istanza Cloud SQL e accedere alle istanze di questo progetto.
Se vuoi connetterti utilizzando il proxy di autenticazione Cloud SQL o i connettori di linguaggio Cloud SQL,
quindi esegui
gcloud projects add-iam-policy-binding
di nuovo con il flag --role=roles/cloudsql.client
Terraform
Aggiungere l'associazione di criteri richiesta all'utente IAM utilizzare una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove 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 in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome del file deve contenere
.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. Opzione consigliata quando 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
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
Elimina le modifiche
Per eliminare le modifiche:
- Per disabilitare la protezione dall'eliminazione, imposta il file di configurazione Terraform
Argomento
deletion_protection
perfalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente
inserendo
yes
alla richiesta:terraform apply
-
Rimuovi le risorse applicate in precedenza con la tua configurazione Terraform eseguendo questo comando e inserendo
yes
al prompt:terraform destroy
Terraform
Aggiungere l'associazione di criteri richiesta all'utente IAM utilizzare una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove 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 in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome del file deve contenere
.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. Opzione consigliata quando 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
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
Elimina le modifiche
Per eliminare le modifiche:
- Per disabilitare la protezione dall'eliminazione, imposta il file di configurazione Terraform
Argomento
deletion_protection
perfalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente
inserendo
yes
alla richiesta:terraform apply
-
Rimuovi le risorse applicate in precedenza con la tua configurazione Terraform eseguendo questo comando e inserendo
yes
al prompt:terraform destroy
REST
Concedi i cloudsql.instanceUser
e le 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 queste norme
modifica non avrà effetto finché non imposti il criterio aggiornato.
{ "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 account utente o di servizio IAM a un'istanza Cloud SQL
Devi creare un nuovo account utente per ogni singolo utente IAM o l'account di servizio che stai aggiungendo all'istanza Cloud SQL per per accedere ai database. Se aggiungi un gruppo IAM, non è necessario creare un account utente per ogni membro del gruppo.
Il nome utente del database deve essere
Indirizzo email dell'utente IAM in lettere minuscole.
Ad esempio, example-user@example.com
.
Quando si utilizzano comandi REST, il nome utente deve essere inserito tra virgolette perché contiene
caratteri speciali (@
e .
). Gli account di servizio utilizzano il formato
service-account-name@project-id.iam.gserviceaccount.com
.
Per aggiungere un singolo account utente o di servizio IAM, devi aggiungere un nuovo account utente e seleziona 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. L'opzione Aggiungi un account utente a si apre la scheda dell'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 Entità.
- Fai clic su Aggiungi. L'account utente o di servizio si trova ora nella cartella dall'elenco di account.
Se l'utente non ha IAM
cloudsql.instanceUser
assegnato dopo la creazione dell'account utente, Icona accanto al nome utente.Per concedere le autorizzazioni di accesso all'utente, fai clic su e seleziona Aggiungi ruolo IAM. Se l'icona non viene più visualizzata, all'account utente viene assegnato il ruolo IAM che l'autorizzazione di accesso.
gcloud
Creare un account utente
Utilizza l'indirizzo email, ad esempio example-user@example.com
, per identificare l'utente.
Sostituisci quanto segue:
- USERNAME: l'indirizzo email dell'utente.
- INSTANCE_NAME: il nome dell'istanza che vuoi autorizzare a cui l'utente può 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 che vuoi autorizzare l'account di servizio a cui accedere.
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 con Autenticazione del database IAM abilitata, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove 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 in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome del file deve contenere
.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. Opzione consigliata quando 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
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
Elimina le modifiche
Per eliminare le modifiche:
- Per disabilitare la protezione dall'eliminazione, imposta il file di configurazione Terraform
Argomento
deletion_protection
perfalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente
inserendo
yes
alla richiesta:terraform apply
-
Rimuovi le risorse applicate in precedenza con la tua configurazione Terraform eseguendo questo comando e inserendo
yes
al prompt:terraform destroy
REST v1
Creare un account utente
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: ID progetto
- INSTANCE_ID: l'ID dell'istanza a cui stai aggiungendo l'utente
- USERNAME: l'indirizzo email dell'utente
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 dell'account di servizio
- PROJECT_ID: ID progetto
- INSTANCE_ID: l'ID istanza per l'istanza a cui stai aggiungendo l'account di servizio
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: ID progetto
- INSTANCE_ID: l'ID dell'istanza a cui stai aggiungendo l'utente
- USERNAME: l'indirizzo email dell'utente
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 dell'account di servizio
- PROJECT_ID: ID progetto
- INSTANCE_ID: l'ID istanza per l'istanza a cui stai aggiungendo l'account di servizio
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 gruppo IAM a un'istanza Cloud SQL
Per utilizzare l'autenticazione di gruppo IAM e aggiungere un gruppo IAM a un per l'istanza Cloud SQL, utilizza una delle procedure in questa sezione. Dopo aver aggiunto il gruppo IAM, devi aggiungere i singoli membri del gruppo all'istanza. Per ulteriori informazioni, consulta Aggiungere automaticamente i membri di un gruppo a un'istanza Cloud SQL.
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. L'opzione Aggiungi un account utente a si apre la scheda dell'istanza instance_name.
- Fai clic sul pulsante di opzione Cloud IAM.
- Aggiungi l'indirizzo email del gruppo che vuoi aggiungere nel Entità.
- Fai clic su Aggiungi. Ora il gruppo è presente nell'elenco degli utenti.
Se il gruppo non ha
cloudsql.instanceUser
il ruolo IAM assegnato dopo la creazione dell'account utente. poi accanto al gruppo.Per concedere le autorizzazioni di accesso ai membri del gruppo, fai clic su e 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.
gcloud
Sostituisci quanto segue:
- 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 in cui vuoi aggiungere il gruppo.
Esegui questo comando:
gcloud sql users create GROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group
Terraform
Per aggiungere account utente e di servizio IAM su un'istanza con Autenticazione del database IAM abilitata, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove 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 in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome del file deve contenere
.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. Opzione consigliata quando 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
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
Elimina le modifiche
Per eliminare le modifiche:
- Per disabilitare la protezione dall'eliminazione, imposta il file di configurazione Terraform
Argomento
deletion_protection
perfalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente
inserendo
yes
alla richiesta:terraform apply
-
Rimuovi le risorse applicate in precedenza con la tua configurazione Terraform eseguendo questo comando e inserendo
yes
al prompt:terraform destroy
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: ID progetto
- INSTANCE_ID: l'ID istanza per l'istanza che stai aggiungendo Cloud Identity Raggruppa su
- GROUP_EMAIL: l'indirizzo email del gruppo Cloud Identity
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 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": "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" }
REST v1beta4
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: ID progetto
- INSTANCE_ID: l'ID istanza per l'istanza che stai aggiungendo Cloud Identity Raggruppa su
- GROUP_EMAIL: l'indirizzo email del gruppo Cloud Identity
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 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": "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" }
Aggiungi 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 account di servizio) di quel gruppo ereditano le autorizzazioni per eseguire l'autenticazione nell'istanza. Non è necessario aggiungere il gruppo singolarmente all'istanza Cloud SQL. Dopo il membro di un gruppo accede e si autentica correttamente all'istanza per la prima volta, Cloud SQL crea un account utente o un account di servizio di gruppo membro del gruppo. Puoi visualizzare il membro del gruppo elencato nell'istanza dopo il primo accesso riuscito.
Per ulteriori informazioni sull'accesso, consulta Accedere con l'autenticazione del database IAM.
Gestisci i membri del gruppo su un'istanza Cloud SQL
Quando aggiungi un gruppo IAM a un'istanza Cloud SQL, membri (account utente o di servizio) di quel gruppo ereditano per eseguire l'autenticazione nell'istanza. Puoi controllare l'accesso a un dell'istanza mediante la gestione del gruppo in Cloud Identity. Ad esempio, se vuoi concedere a un nuovo utente l'accesso a un'istanza, quindi aggiungere l'utente come membro del gruppo in Cloud Identity. Non è necessario rimuovere o aggiungere i membri del gruppo separatamente a livello di istanza Cloud SQL perché le modifiche all'appartenenza al gruppo propagati automaticamente all'istanza Cloud SQL. Modifiche alle iscrizioni ai gruppi, come l'aggiunta o la rimozione di un membro, richiedono 15 minuti per la propagazione. Questo in aggiunta al tempo necessario per Modifiche IAM.
La concessione o la revoca dei privilegi di database per un gruppo IAM in PostgreSQL ha effetto immediatamente. Ad esempio, se revochi l'accesso a una tabella, membri di quel gruppo IAM perderanno immediatamente l'accesso alla tabella.
È possibile che un account utente o di servizio sia membro di più gruppi IAM. Se un account utente o di servizio appartiene a più gruppi IAM su un'istanza, avranno tutte le Autorizzazioni IAM e privilegi di database combinati da ciascuno di questi gruppi IAM.
Quando aggiungi un nuovo membro (account utente o di servizio) alla piattaforma IAM gruppo in Cloud Identity e accedono correttamente all'istanza per la prima volta, ereditano i privilegi di database concessi automaticamente.
Concedi i privilegi di database a un singolo utente o account di servizio IAM
Quando un singolo utente o servizio IAM viene aggiunto Cloud SQL, al nuovo account non vengono concessi privilegi qualsiasi 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 i privilegi utilizzando l'istruzione GRANT. Consulta le pagina di riferimento GRANT per un elenco completo i privilegi che puoi concedere a utenti e account di servizio. Esegui GRANT dal dall'interfaccia a riga di comando.
Sostituisci quanto segue:
- USERNAME: l'indirizzo email dell'utente. Devi usare le virgolette
intorno all'email perché contiene caratteri speciali (
@
e.
) - TABLE_NAME: il nome della tabella che vuoi assegnare all'utente a cui accedono.
grant select on TABLE_NAME to "USERNAME";
Concedi i privilegi di database a un gruppo IAM
Quando utilizzi l'autenticazione di gruppo IAM, concedi i privilegi di database a IAM gruppi di lavoro anziché concedere privilegi a singoli utenti o account di servizio. Per impostazione predefinita, quando aggiungi un gruppo IAM a un'istanza Cloud SQL, il gruppo non dispone di privilegi di database.
Per assegnare i privilegi del database al gruppo IAM, utilizza l'istruzione GRANT. Dopo il primo accesso all'istanza Cloud SQL, ogni membro del gruppo (inclusi utenti e account di servizio) ereditano i privilegi di database concessi al gruppo automaticamente.
Sostituisci quanto segue:
- 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
. Racchiudi il nome del gruppo tra virgolette perché la stringa contiene caratteri speciali (@
e.
) - TABLE_NAME: il nome della tabella che vuoi assegnare all'utente a cui accedono.
Esegui GRANT dalla riga di comando psql
.
grant select on TABLE_NAME to "GROUP_NAME";
Per ulteriori informazioni sulla concessione dei privilegi, consulta GRANT nella documentazione di PostgreSQL.
I privilegi di database che concedi al gruppo IAM prendono l'effetto immediato.
Visualizzare gli utenti, gli account di servizio e i gruppi aggiunti a un'istanza Cloud SQL
Per visualizzare gli utenti, gli account di servizio e i gruppi IAM che hanno aggiunto alla tua istanza Cloud SQL, esegui questi comandi.
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. La pagina mostra un elenco di utenti IAM, account di servizio e i gruppi di Cloud Identity aggiunti alla tua istanza.
- (Facoltativo) Per visualizzare un elenco di utenti o account di servizio IAM che hanno già eseguito l'accesso all'istanza, fai clic su Gruppo IAM autenticato. .
gcloud
Sostituisci INSTANCE_NAME con il nome dell'istanza con 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 per l'istanza Cloud SQL.
- Gli account utente che sono membri di un gruppo sono di tipo
CLOUD_IAM_GROUP_USER
. - Gli account di servizio che sono membri di un gruppo sono di tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Gli account utente che sono singoli account utente per l'autenticazione dei database IAM hanno il tipo
CLOUD_IAM_USER
. - Gli account di servizio che sono singoli account di servizio di autenticazione dei database IAM sono del tipo
di
CLOUD_IAM_SERVICE_ACCOUNT
.
REST v1
La seguente richiesta utilizza users.list per elencare gli utenti che hanno account in Cloud SQL in esecuzione in un'istanza Compute Engine.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: ID progetto
- INSTANCE_ID: l'ID istanza
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users/list
Per inviare la richiesta, espandi una delle seguenti opzioni:
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 per l'istanza Cloud SQL.
- Gli account utente che sono membri di un gruppo sono di tipo
CLOUD_IAM_GROUP_USER
. - Gli account di servizio che sono membri di un gruppo sono di tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Gli account utente che sono singoli account utente per l'autenticazione dei database IAM hanno il tipo
CLOUD_IAM_USER
. - Gli account di servizio che sono singoli account di servizio di autenticazione dei database IAM sono del tipo
di
CLOUD_IAM_SERVICE_ACCOUNT
.
REST v1beta4
La seguente richiesta utilizza users.list per elencare gli utenti che hanno account in Cloud SQL in esecuzione in un'istanza Compute Engine.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Per inviare la richiesta, espandi una delle seguenti opzioni:
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 per l'istanza Cloud SQL.
- Gli account utente che sono membri di un gruppo sono di tipo
CLOUD_IAM_GROUP_USER
. - Gli account di servizio che sono membri di un gruppo sono di tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Gli account utente che sono singoli account utente per l'autenticazione dei database IAM hanno il tipo
CLOUD_IAM_USER
. - Gli account di servizio che sono singoli account di servizio di autenticazione dei database IAM sono del tipo
di
CLOUD_IAM_SERVICE_ACCOUNT
.
Rimuovere un singolo account utente o di servizio IAM da un'istanza Cloud SQL
Per rimuovere un singolo account utente o di servizio che non fa parte di un gruppo dall'istanza Cloud SQL, elimini questo account utilizzando il seguente comando:
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 in corrispondenza dell'utente che ti interessa. da rimuovere.
- Seleziona Rimuovi. Revoca l'accesso solo a questa istanza.
gcloud
Revocare un utente
Utilizza l'indirizzo email, ad esempio example-user@example.com
, per identificare l'utente.
Sostituisci quanto segue:
- USERNAME: l'indirizzo email.
- INSTANCE_NAME: il nome dell'istanza di cui vuoi rimuovere da cui proviene l'utente.
gcloud sql users delete USERNAME \ --instance=INSTANCE_NAME
Eliminare l'account di servizio individuale
Sostituisci quanto segue:
- SERVICE_ACCT: l'indirizzo email dell'account di servizio.
- INSTANCE_NAME: il nome dell'istanza di cui vuoi rimuovere da cui proviene l'utente.
gcloud sql users delete SERVICE_ACCT \ --instance=INSTANCE_NAME
REST v1
La seguente richiesta utilizza 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 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" }
Rimuovi membri del gruppo IAM da un'istanza Cloud SQL
Esistono due modi per rimuovere i membri di un gruppo IAM da un Istanza Cloud SQL:
- Rimozione automatica
- Rimozione manuale
Rimozione automatica
Per rimuovere un membro del gruppo IAM, devi rimuovere la propria appartenenza ai gruppi IAM applicabili e Cloud Identity. Una volta che gli utenti del gruppo IAM hanno perso l'iscrizione a tutti i gruppi applicabili in Cloud Identity, Cloud SQL rimuove automaticamente dall'istanza questi utenti del gruppo. L'unica eccezione a questa rimozione è il raggruppamento che possiedono oggetti di database. Questi utenti del gruppo devono essere rimossi manualmente.
Modifiche alle iscrizioni ai gruppi, ad esempio l'aggiunta o la rimozione di un membro, la propagazione richiede circa 15 minuti. Questo insieme di requisiti tempo necessario per le modifiche IAM.
Rimozione manuale
Nei casi in cui un utente del gruppo IAM non possa essere rimosso automaticamente, puoi rimuoverli manualmente. Non puoi rimuovere manualmente un account IAM raggruppa gli utenti da un'istanza Cloud SQL utilizzando gcloud CLI, Console Google Cloud, Terraform o l'API Cloud SQL Admin. Gli utenti del database con privilegi di super user possono invece Elimina gli utenti del gruppo IAM dall'istanza Cloud SQL utilizzando un'istruzione DROP USER da un PostgreSQL.
Dopo aver eseguito manualmente rimuovi un utente del gruppo IAM dall'istanza Cloud SQL e assicurati di rimuoverli anche dal gruppo IAM in Cloud Identity per impedire ulteriori accessi a Cloud SQL in esecuzione in un'istanza Compute Engine.
Elimina un gruppo IAM da un'istanza Cloud SQL
Puoi eliminare i gruppi IAM aggiunti da per l'istanza Cloud SQL. Dopo aver eliminato un gruppo IAM dell'istanza, tutti gli utenti Account di servizio che appartengono al gruppo IAM perdere i privilegi di database concessi ai ruoli IAM gruppo. Inoltre, si applicano le seguenti condizioni:
- Gli utenti e gli account di servizio che appartengono
gruppo sono comunque in grado di accedere fino a quando
Autorizzazione IAM
cloudsql.instances.login
viene rimosso dal gruppo. - Se l'eliminazione di un gruppo determina la presenza dell'utente del gruppo IAM o account di servizio che non appartengono ad altri gruppi nell'istanza, Cloud SQL rimuove l'utente del gruppo IAM. o account di servizio dall'istanza.
- Tuttavia, se un utente del gruppo IAM possiede un oggetto di database devi riassegnare la proprietà dell'oggetto prima di poter inserire l'utente manualmente.
Se elimini tutti i gruppi IAM da un file di Cloud SQL all'istanza di servizio, tutti gli utenti e gli account di servizio del gruppo IAM perdono tutti i privilegi per il database. Inoltre, si applicano le seguenti condizioni:
- Tutti gli utenti del gruppo IAM e gli account di servizio non sono in grado di l'accesso all'istanza.
- Cloud SQL rimuove inoltre tutti gli utenti del gruppo IAM e automaticamente gli account di servizio dell'istanza.
- Tuttavia, se un utente del gruppo IAM possiede un oggetto di database devi riassegnare la proprietà dell'oggetto prima di poter inserire l'utente manualmente.
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 in corrispondenza del gruppo che ti interessa. da rimuovere.
- Seleziona Rimuovi. Revoca l'accesso solo a questa istanza.
gcloud
Per eliminare un gruppo Cloud Identity da un'istanza, utilizza il metodo
gcloud sql users delete
.
Sostituisci quanto segue:
- GROUP_NAME: la prima parte dell'indirizzo email del
gruppo Cloud Identity. Per
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 Gruppo Cloud Identity che vuoi eliminare.
gcloud sql users delete GROUP_NAME \ --instance=INSTANCE_NAME
Rimuovi le autorizzazioni di accesso IAM da un gruppo IAM
Se revochi il ruolo cloudsql.instanceUser
da un gruppo IAM,
tutti i membri del gruppo perderanno la possibilità di accedere a qualsiasi
nel progetto. Gli utenti o gli account di servizio possono accedere 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, consulta Revocare un singolo ruolo.
Rimuovi gli utenti da un gruppo IAM
I membri dei gruppi IAM, come utenti o account di servizio, possono essere rimosso dal gruppo IAM in Cloud Identity.
Dopo che la rimozione è stata propagata tramite IAM, l'utente può non accedono più al database a meno che non abbiano ricevuto autorizzazioni di accesso da un altro gruppo oppure vengono concessi direttamente i privilegi di accesso. Inoltre, gli utenti sono stati rimossi da un perdono i privilegi di database del gruppo.
Se un utente del gruppo IAM non appartiene ad alcun gruppo nell'istanza: Cloud SQL rimuove automaticamente l'utente l'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.
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, visualizza gli audit log di accesso ai dati di accessi riusciti utilizzando Esplora log.
Per l'autenticazione di gruppo IAM, gli audit log mostrano l'attività e gli accessi di 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 un errore di accesso
Quando un tentativo di accesso non va a buon fine, PostgreSQL restituisce un messaggio di errore minimo per 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, vedi Visualizzazione dei log.
Ad esempio, per l'errore precedente, la seguente voce di log spiega l'azione che puoi svolgere 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
ha utilizzato l'autenticazione utente IAM di Cloud SQL o
"L'autenticazione dell'account di servizio IAM di Cloud SQL" verifica che
il tipo di utente del database utilizzato per accedere è 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
Email dell'utente IAM.
Se hai utilizzato l'autenticazione del database IAM, controlla i dettagli del messaggio di errore. Puoi trovare
nel log degli errori del database. Se indica il token di accesso (OAuth
2.0) che hai inviato perché la password non era valida, puoi usare
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 destinato all'utente o al servizio IAM previsto dell'account e non sia scaduto.
Se i dettagli indicano una mancanza di autorizzazione, verifica la proprietà IAM
all'account utente o di servizio viene concessa l'autorizzazione cloudsql.instances.login
utilizzando
il ruolo Cloud SQL Instance User
predefinito o il ruolo personalizzato
Criterio IAM del progetto dell'istanza. Utilizza IAM
Strumento per la risoluzione dei problemi relativi ai criteri per ulteriore assistenza.
Se un accesso non va a buon fine perché l'autenticazione del database IAM non è disponibile, l'utente può accedere utilizzando il metodo utente e password PostgreSQL predefiniti. Questo metodo di accesso offre comunque l'accesso utente all'intero database. Verifica che la connessione sia protetta connessione.
Risolvere i problemi relativi agli account utente che utilizzano l'autenticazione di gruppo IAM
Questa sezione elenca gli scenari di risoluzione dei problemi per l'autenticazione di gruppi IAM.
Impossibile aggiungere un gruppo a un database
Quando tenti di aggiungere un gruppo a un'istanza, ricevi il seguente errore:
(gcloud.sql.users.create) HTTPError 400: Invalid request: Provided CLOUD_IAM_GROUP: EMAIL, does not exist.
Assicurati che l'indirizzo email che hai fornito sia un gruppo valido.
Se il gruppo non esiste ancora, crealo. Per ulteriori informazioni sulla creazione di gruppi, consulta Creare e gestire 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 di gruppo IAM, l'istanza Cloud SQL richiede il seguente aggiornamento di manutenzione:
R20240514.00_04
o versioni successive
Puoi applicare l'aggiornamento di manutenzione all'istanza utilizzando il self-service manutenzione. Per ulteriori informazioni, vedi Manutenzione self-service.
Un account utente o di servizio IAM esistente non eredita i privilegi di database concessi al proprio gruppo IAM
Se un account utente o di servizio IAM esistente non eredita i valori corretti privilegi di database del gruppo, quindi completa i seguenti passaggi:
Nella console Google Cloud, vai alla pagina IAM.
Verifica che l'account sia un membro del gruppo è stato aggiunto all'istanza Cloud SQL.
Elenca gli utenti e gli account di servizio nell'istanza.
gcloud sql users list --instance=INSTANCE_NAME
Nell'output, controlla se l'account utente o di servizio è elencato come
CLOUD_IAM_USER
oCLOUD_IAM_SERVICE_ACCOUNT
.Se l'account utente o di servizio è elencato come account
CLOUD_IAM_USER
oCLOUD_IAM_SERVICE_ACCOUNT
, e poi rimuovere l'account dall'istanza. L'account che stai rimuovendo è un singolo account IAM che non eredita il database privilegi del gruppo.Accedi di nuovo all'istanza con l'account utente o di servizio.
Se accedi di nuovo all'istanza, l'account viene creato nuovamente con tipo di account
CLOUD_IAM_GROUP_USER
oCLOUD_IAM_GROUP_SERVICE_ACCOUNT
.
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.