In questa pagina viene descritto come aggiungere un account utente o di servizio che utilizza Autenticazione IAM di database in un database e come gestire questi account utente e di servizio. 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.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
- Assicurati di disporre del ruolo Amministratore Cloud SQL per il tuo account utente.
- Abilita autenticazione database IAM sull'istanza Cloud SQL.
- Assicurati di concedere l'accesso IAM agli utenti che ne hanno bisogno ogni progetto che contiene database a cui gli utenti devono accedere. Consulta Concessione, modifica e revoca dell'accesso alle risorse.
- Assicurati di aver aggiunto un parametro account di servizio per ogni servizio che richiede l'accesso ai database nel progetto.
- Se utilizzi l'autenticazione di gruppi IAM, assicurati di aver creato Cloud Identity che richiede l'accesso ai database nel tuo progetto.
Aggiungere un account utente o di servizio IAM a un'istanza di database
Devi creare un nuovo utente del database per ogni utente IAM che vuoi
hanno accesso all'istanza del database. Il nome utente del database deve essere
Indirizzo email dell'utente IAM, ad esempio test-user@example.com
.
@
e .
).
Gli account di servizio utilizzano il formato service-account-name@project-id.iam.gserviceaccount.com
.
Per aggiungere un account utente o di servizio IAM, aggiungi un nuovo utente del database 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. Ora l'utente si trova nell'elenco degli utenti.
Se l'utente non è assegnato all'utente istanza Cloud SQL un ruolo, un ruolo Icona a sinistra del nome utente.
Per concedere i privilegi di accesso all'utente, fai clic su e seleziona Aggiungi ruolo IAM. L'icona non viene più visualizzata. La l'utente ora è un membro del ruolo.
gcloud
Creare un account utente
Utilizza l'indirizzo email, ad esempio test-user@example.com
, per identificare l'utente.
Sostituisci quanto segue:
- USERNAME: l'indirizzo email dell'utente.
- INSTANCE_NAME: il nome dell'istanza 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 (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, nel file di configurazione Terraform imposta la classe
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: il tuo ID progetto
- instance-id: l'ID dell'istanza a cui stai aggiungendo l'utente.
- username: l'indirizzo email dell'utente
- operation-id: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "username", "type": "CLOUD_IAM_USER" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Creare un account di servizio
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- service-acct: l'indirizzo email del tuo account di servizio
- project-id: il tuo ID progetto
- instance-id: l'ID istanza per l'istanza a cui stai aggiungendo l'account di servizio
- operation-id: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "service-acct", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
Creare un account utente
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID dell'istanza a cui stai aggiungendo l'utente.
- username: l'indirizzo email dell'utente
- operation-id: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "username", "type": "CLOUD_IAM_USER" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Creare un account di servizio
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- service-acct: l'indirizzo email del tuo account di servizio
- project-id: il tuo ID progetto
- instance-id: l'ID istanza per l'istanza a cui stai aggiungendo l'account di servizio
- operation-id: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "service-acct", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Aggiungi un gruppo all'istanza di database
Per configurare l'autenticazione di gruppo IAM per la tua istanza:
Se non hai ancora creato un gruppo di Cloud Identity, crea quella nel progetto in cui gestisci le istanze Cloud SQL. Per Per ulteriori informazioni, consulta la Panoramica di Cloud Identity.
Esegui questo comando per aggiungere il gruppo all'istanza Cloud SQL.
Console
L'aggiunta di gruppi a un'istanza non è disponibile tramite Console Google Cloud durante l'anteprima.
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
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID dell'istanza che stai aggiungendo Cloud Identity Raggruppa su
- GROUP_EMAIL: l'indirizzo email del gruppo
- OPERATION_ID: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Corpo JSON della richiesta:
{ "name": "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: il tuo ID progetto
- INSTANCE_ID: l'ID dell'istanza che stai aggiungendo Cloud Identity Raggruppa su
- GROUP_EMAIL: l'indirizzo email del gruppo Cloud Identity
- OPERATION_ID: l'ID dell'operazione
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Corpo JSON della richiesta:
{ "name": "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 utenti o account di servizio di un gruppo a un'istanza di database
L'aggiunta di un gruppo Cloud Identity a un'istanza non comporta l'aggiunta automatica membri del gruppo come utenti dell'istanza. Quando un membro accede al per la prima volta, viene creato un account utente o di servizio in esecuzione in un'istanza Compute Engine.
Per saperne di più, consulta Accedere con l'autenticazione del database IAM.
Gestisci gli utenti o gli account di servizio in un gruppo su un'istanza
Puoi controllare l'accesso a un'istanza gestendo l'appartenenza al gruppo gruppo Cloud Identity. Per ulteriori informazioni, vedi Panoramica di Cloud Identity.
Un utente può essere membro di più Cloud Identity gruppi. Se un utente appartiene a più gruppi di Cloud Identity su un istanza, dispone di tutte le autorizzazioni IAM e di tutti i privilegi del database combinati da ciascuno di questi gruppi.
Modifiche alle iscrizioni ai gruppi, come l'aggiunta di un account la propagazione richiede circa 15 minuti. Questo insieme di requisiti tempo necessario per le modifiche IAM.
Dopo la propagazione delle modifiche, l'account utente o di servizio deve disconnettersi e accedere nuovamente affinché le modifiche per applicare le modifiche. la concessione o la revoca dei privilegi di database per un gruppo in MySQL tuttavia, hanno effetto immediato. Ad esempio, se revochi l'accesso a una tabella, i membri di quel gruppo di Cloud Identity perdono immediatamente l'accesso alla tabella senza dover uscire e accedere nuovamente.
Quando si aggiunge un'altra Cloud Identity a un'istanza, gli utenti devono esci e accedi nuovamente per ricevere le autorizzazioni dal nuovo gruppo.
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 test-user@example.com
. Devono essere inserite tra virgolette perché contengono
(@
e .
).
Console
-
Nella console Google Cloud, vai alla pagina IAM.
- Fai clic su Aggiungi.
- In Nuovi membri, inserisci un indirizzo email. Puoi aggiungere singoli utenti, account di servizio o gruppi come membri, ma ogni progetto deve avere almeno un'entità come membro.
- In Ruolo, vai a Cloud SQL e Seleziona Utente istanza Cloud SQL e Client Cloud SQL.
- Per singoli utenti e account di servizio, seleziona Client Cloud SQL.
- Fai clic su Salva.
gcloud
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 cui 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
Esegui l'
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 cui vuoi autorizzare da utilizzare.
- SERVICE_ACCT: l'indirizzo email del servizio .
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT \ --role=roles/cloudsql.instanceUser
Esegui l'
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.
L'autenticazione dei gruppi IAM è disponibile in Anteprima.
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 (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, nel file di configurazione Terraform imposta la classe
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:test-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" "group:example-group@example.com" ] } { "role": "roles/cloudsql.client", "members": [ "user:test-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" ] }
Concedi i privilegi di database all'utente IAM
Quando un utente IAM viene aggiunto a un'istanza di database, il nuovo utente non vengono concessi privilegi su nessun database, per impostazione predefinita.Per concedere all'utente l'accesso o altri privilegi, utilizza l'istruzione GRANT. Consulta
la pagina di riferimento GRANT per un elenco completo
i privilegi che puoi concedere a utenti e account di servizio. Esegui GRANT dal
riga di comando mysql
.
Sostituisci quanto segue:
@
e stringa di dominio troncati.
Ad esempio, se l'indirizzo email dell'utente IAM è
test-user@example.com
, il nome utente sarà
test-user
. Per un account di servizio, si tratta dell'indirizzo email
l'account di servizio senza
Dominio @project-id.iam.gserviceaccount.com
.
grant select on DATABASE_NAME.TABLE_NAME to "USERNAME";
Concedi i privilegi di database a un gruppo
Quando utilizzi l'autenticazione di gruppo IAM, concedi i privilegi di database a Cloud Identity anziché concedere privilegi a singoli utenti. Per impostazione predefinita, quando aggiungi un gruppo Cloud Identity a un'istanza Cloud SQL, Il gruppo Cloud Identity non dispone di privilegi.
Assegnare i privilegi del database agli utenti all'interno di Cloud Identity usa l'istruzione GRANT.
Sostituisci quanto segue:
- GROUP_NAME: la prima parte dell'indirizzo email di Cloud Identity
gruppo. Ad esempio, utilizzando l'indirizzo email
example-group@example.com
, il nome del gruppo Cloud Identity èexample-group
. - HOSTNAME: la seconda parte dell'indirizzo email rappresenta la
del gruppo Cloud Identity. Ad esempio, utilizzando l'indirizzo email
example-group@example.com
, il nome host èexample.com
. - DATABASE_NAME: il nome del database che ospita la tabella.
- TABLE_NAME: il nome della tabella che vuoi assegnare a cui accedono i membri del gruppo Cloud Identity.
Esegui GRANT dalla riga di comando mysql
.
grant select on DATABASE_NAME.TABLE_NAME to "GROUP_NAME"@"HOSTNAME";
I privilegi di database che concedi al gruppo Cloud Identity l'effetto immediato.
Per ulteriori informazioni sulla concessione dei privilegi, consulta GRANT nella documentazione MySQL.
Visualizza gruppi, utenti IAM e account di servizio
Per visualizzare i gruppi di Cloud Identity aggiunti alla tua istanza, esegui questo comando.
Console
La visualizzazione dei gruppi in un'istanza non è disponibile tramite la console Google Cloud durante l'anteprima.
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
.
Rimuovi un account utente o di servizio IAM dal database
Per rimuovere un account utente o di servizio dal database, devi eliminare l'account dall'istanza:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Users (Utenti) dal menu di navigazione SQL.
- Fai clic 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 test-user@example.com
, per identificare l'utente.
Sostituisci quanto segue:
- USERNAME: l'indirizzo email senza @nome di dominio.
- INSTANCE_NAME: il nome dell'istanza di cui vuoi rimuovere l'elemento da cui proviene l'utente.
gcloud sql users delete USERNAME \ --instance=INSTANCE_NAME
Eliminare l'account di servizio
Sostituisci quanto segue:
- SERVICE_ACCT: l'indirizzo email dell'account di servizio.
- INSTANCE_NAME: il nome dell'istanza di cui vuoi rimuovere l'elemento 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" }
Elimina utenti o account di servizio per l'autenticazione di gruppo IAM
Non puoi utilizzare gcloud CLI per eliminare gli account utente o di servizio creati con l'autenticazione di gruppo IAM. Cloud SQL crea questi account automaticamente dopo che l'account utente o di servizio accede per la prima volta.
L'unico modo per eliminare questi account è utilizzare il client MySQL con un utente a cui sono assegnati i privilegi di super user.
Per generare una query per l'eliminazione di account utente o di servizio, consulta Documentazione MySQL.
Elimina un gruppo da un'istanza
Se elimini un gruppo Cloud Identity da un'istanza, tutti gli utenti e gli account di servizio che appartengono al gruppo di Cloud Identity perdono qualsiasi privilegi di database concessi al gruppo Cloud Identity. La Gli utenti e gli account di servizio che appartengono al gruppo Cloud Identity possono ancora accedere finché le autorizzazioni di accesso IAM non sono rimosso dal gruppo.
Console
L'eliminazione di gruppi da un'istanza non è disponibile tramite la console Google Cloud durante l'anteprima.
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
. - HOSTNAME: la seconda parte dell'indirizzo email rappresenta la
del gruppo Cloud Identity. Ad esempio, utilizzando
indirizzo email
example-group@example.com
, il nome host èexample.com
. - INSTANCE_NAME: il nome dell'istanza Cloud SQL con Gruppo Cloud Identity che vuoi eliminare.
gcloud sql users delete GROUP_NAME \ --host=HOSTNAME \ --instance=INSTANCE_NAME
Rimuovi le autorizzazioni di accesso IAM da un gruppo
Se revochi il ruolo cloudsql.instanceUser
da un gruppo Cloud Identity:
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 Cloud Identity
dispone ancora delle autorizzazioni di accesso.
Per revocare un ruolo da un gruppo Cloud Identity, consulta Revocare un singolo ruolo.
Rimuovere utenti da un gruppo
Gli utenti possono essere rimossi da un gruppo di Cloud Identity.
Dopo che la rimozione è stata propagata tramite IAM, l'utente potrebbe essere ancora in grado di accedere a un database se l'utente dispone delle autorizzazioni IAM appropriate. Tuttavia, al momento dell'accesso di nuovo, gli utenti non disporranno più dei privilegi di database appartenenti al gruppo di Cloud Identity da cui sono state rimosse.
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. L'autenticazione del gruppo IAM è in Anteprima.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, MySQL restituisce un messaggio di errore minimo per per motivi di sicurezza. Ad esempio:
$MYSQL_PWD=`gcloud-access-token mysql` --enable-cleartext-plugin --ssl-ca=server-ca.pem
--ssl-cert=client-cert.pem --ssl-key=client-key.pem --host=ip_address --user=testuser
Access denied for user 'testuser'@'...' (using password: NO)
Puoi esaminare i log degli errori MySQL 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 un utente IAM, verifica che il nome utente del database sia
Indirizzo email dell'utente IAM senza @
e dominio. Per un
account di servizio, verifica che si tratti dell'email dell'account di servizio senza
@project-id.iam.gserviceaccount.com
.
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 MySQL 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, potresti ricevere 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 la Panoramica di Cloud Identity.
Un account utente o di servizio IAM esistente non eredita i privilegi di database concessi al suo gruppo
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.