Esta página descreve como adicionar e gerir utilizadores, contas de serviço e grupos numa instância do Cloud SQL que usa a autenticação de base de dados da IAM.
Para mais informações sobre a integração do IAM, consulte o artigo Autenticação do IAM.
Antes de começar
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- Certifique-se de que tem a função de administrador do Cloud SQL na sua conta de utilizador.
- Ative a autenticação de base de dados da IAM na sua instância do Cloud SQL.
- Atribua a função de
cloudsql.instanceUser
IAM necessária a principais do IAM, como utilizadores do IAM, contas de serviço, ou grupos para iniciar sessão na instância do Cloud SQL. - Se estiver a adicionar um utilizador individual ou uma conta de serviço individual à instância do Cloud SQL, tem de atribuir a função do IAM individualmente a cada utilizador e conta de serviço.
- Se estiver a adicionar um grupo, tem de atribuir a função do IAM ao grupo, uma vez que os membros do grupo herdam automaticamente as autorizações do IAM associadas à função do IAM. Para mais informações sobre a criação de grupos no Cloud Identity, consulte o artigo Crie e faça a gestão de grupos Google na Google Cloud consola.
- Pode conceder a função num projeto que contenha instâncias do Cloud SQL através da página do IAM da Google Cloud consola, da CLI gcloud, do Terraform ou da API Cloud SQL Admin. Para mais informações, consulte o artigo Adicione uma associação de políticas de IAM a um utilizador, uma conta de serviço ou um grupo.
- Se estiver a usar uma conta de serviço, certifique-se de que adicionou uma conta de serviço para cada serviço que requer acesso a bases de dados no projeto.
-
Na Google Cloud consola, aceda à página IAM.
- Clique em Adicionar.
- Em Novos membros, introduza um endereço de email. Pode adicionar utilizadores individuais, contas de serviço ou grupos como membros, mas todos os projetos têm de ter, pelo menos, um principal como membro.
- Em Função, navegue para Cloud SQL e selecione Utilizador da instância do Cloud SQL.
- Opcional: se quiser estabelecer ligação através do proxy Auth do Cloud SQL ou dos conectores de linguagem do Cloud SQL, selecione também Cliente do Cloud SQL.
- Clique em Guardar.
- PROJECT_ID: o ID do projeto que quer autorizar o utilizador a usar.
- USERNAME: o endereço de email do utilizador.
- PROJECT_ID: o ID do projeto que quer autorizar o utilizador a usar.
- SERVICE_ACCT: o endereço de email da conta de serviço.
- PROJECT_ID: o ID do projeto que quer autorizar os membros do grupo a usar.
- GROUP_EMAIL_ADDRESS: o endereço de email do grupo. Por exemplo,
example-group@example.com
. - Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
- Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Aplique a configuração do Terraform atualizada executando o seguinte comando e
introduzindo
yes
no comando:terraform apply
-
Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform destroy
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
- Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Aplique a configuração do Terraform atualizada executando o seguinte comando e
introduzindo
yes
no comando:terraform apply
-
Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform destroy
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Selecione Utilizadores no menu de navegação do SQL.
- Clique em Adicionar conta de utilizador. É aberto o separador Adicionar uma conta de utilizador à instância instance_name.
- Clique no botão de opção Cloud IAM.
- Adicione o endereço de email do utilizador ou da conta de serviço que quer adicionar no campo Principal.
- Clique em Adicionar. O utilizador ou a conta de serviço encontra-se agora na lista de contas de utilizador.
Se o utilizador não tiver a função
cloudsql.instanceUser
IAM atribuída após a criação da conta de utilizador, é apresentado um íconejunto ao nome de utilizador.
Para conceder autorizações de início de sessão ao utilizador, clique no ícone e, de seguida, selecione Adicionar função do IAM. Se o ícone já não aparecer, significa que à conta de utilizador foi atribuída a função do IAM que lhe concede a autorização de início de sessão.
- USERNAME: o endereço de email do utilizador.
- INSTANCE_NAME: o nome da instância à qual quer autorizar o utilizador a aceder.
- SERVICE_ACCT: o endereço de email da conta de serviço.
- INSTANCE_NAME: o nome da instância à qual quer autorizar a conta de serviço a aceder.
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
- Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Aplique a configuração do Terraform atualizada executando o seguinte comando e
introduzindo
yes
no comando:terraform apply
-
Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform destroy
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância à qual está a adicionar o utilizador
- USERNAME: o endereço de email do utilizador
- SERVICE_ACCT: o email da conta de serviço
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância à qual está a adicionar a conta de serviço
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância à qual está a adicionar o utilizador
- USERNAME: o endereço de email do utilizador
- SERVICE_ACCT: o email da conta de serviço
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância à qual está a adicionar a conta de serviço
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Selecione Utilizadores no menu de navegação do SQL.
- Clique em Adicionar conta de utilizador. É aberto o separador Adicionar uma conta de utilizador à instância instance_name.
- Clique no botão de opção Cloud IAM.
- Adicione o endereço de email do grupo que quer adicionar no campo Principal.
- Clique em Adicionar. O grupo está agora na lista de utilizadores.
Se o grupo não tiver a
cloudsql.instanceUser
função do IAM atribuída após a criação da conta de utilizador, é apresentado um íconejunto ao grupo.
Para conceder autorizações de início de sessão aos membros do grupo, clique no ícone e, de seguida, selecione Adicionar função do IAM. Se o ícone deixar de aparecer, significa que todos os membros do grupo têm atribuída a função que concede a autorização de início de sessão.
- GROUP_EMAIL_ADDRESS: o endereço de email do grupo do Cloud Identity que quer adicionar à instância. Por exemplo, example-group@example.com.
- INSTANCE_NAME: o nome da instância onde quer adicionar o grupo.
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
- Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Aplique a configuração do Terraform atualizada executando o seguinte comando e
introduzindo
yes
no comando:terraform apply
-
Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform destroy
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância à qual está a adicionar o grupo do Cloud ID
- GROUP_EMAIL: o endereço de email do grupo do Cloud ID
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância à qual está a adicionar o grupo do Cloud ID
- GROUP_EMAIL: o endereço de email do grupo do Cloud ID
Adicione estes utilizadores a um grupo.
Adicione o grupo à sua instância.
Atribua ao grupo autorizações do IAM suficientes para permitir que os membros do grupo se liguem às suas instâncias. Estas alterações podem demorar algum tempo a propagarem-se. Para mais informações sobre os tempos de propagação, consulte o artigo Propagação de alterações de acesso.
Atribua privilégios da base de dados aos utilizadores do IAM que está a migrar para o grupo.
Depois de as alterações de associação ao grupo e as autorizações do IAM serem aplicadas, elimine o utilizador do IAM existente da sua instância. Na próxima vez que o utilizador do IAM iniciar sessão com êxito, o utilizador é recriado como um utilizador do grupo do IAM que pode usar a autenticação do grupo do IAM.
- USERNAME: o endereço de email do utilizador. Tem de usar aspas em torno do email porque contém carateres especiais (
@
e.
) - TABLE_NAME: o nome da tabela à qual quer dar acesso ao utilizador.
- GROUP_NAME: o endereço de email do grupo do Cloud Identity, incluindo o
@
e o nome do domínio. Por exemplo, se o endereço de email do grupo do IAM forexample-group@example.com
, o nome do grupo éexample-group@example.com
. Tem de usar aspas à volta do nome do grupo porque a string contém carateres especiais (@
e.
) - TABLE_NAME: o nome da tabela à qual quer dar acesso ao utilizador.
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Selecione Utilizadores no menu de navegação do SQL. A página apresenta uma lista de utilizadores do IAM, contas de serviço e grupos do Cloud ID que foram adicionados à sua instância.
- Opcional: para ver uma lista de utilizadores de IAM ou contas de serviço que já iniciaram sessão na instância, clique em Membros autenticados do grupo de IAM.
- As contas de utilizador que são membros de um grupo têm o tipo de
CLOUD_IAM_GROUP_USER
. - As contas de serviço que são membros de um grupo têm o tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - As contas de utilizador que são contas de utilizador de autenticação de base de dados do IAM individuais têm o tipo de
CLOUD_IAM_USER
. - As contas de serviço que são contas de serviço de autenticação de base de dados IAM individuais têm o tipo
CLOUD_IAM_SERVICE_ACCOUNT
. - PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- As contas de utilizador que são membros de um grupo têm o tipo de
CLOUD_IAM_GROUP_USER
. - As contas de serviço que são membros de um grupo têm o tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - As contas de utilizador que são contas de utilizador de autenticação de base de dados do IAM individuais têm o tipo de
CLOUD_IAM_USER
. - As contas de serviço que são contas de serviço de autenticação de base de dados IAM individuais têm o tipo
CLOUD_IAM_SERVICE_ACCOUNT
. - project-id: o ID do seu projeto
- instance-id: o ID de instância pretendido
- As contas de utilizador que são membros de um grupo têm o tipo de
CLOUD_IAM_GROUP_USER
. - As contas de serviço que são membros de um grupo têm o tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - As contas de utilizador que são contas de utilizador de autenticação de base de dados do IAM individuais têm o tipo de
CLOUD_IAM_USER
. - As contas de serviço que são contas de serviço de autenticação de base de dados IAM individuais têm o tipo
CLOUD_IAM_SERVICE_ACCOUNT
. -
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Selecione Utilizadores no menu de navegação do SQL.
- Clique em junto ao utilizador que quer remover.
- Selecione Remover. Isto revoga o acesso apenas a esta instância.
- USERNAME: o endereço de email.
- INSTANCE_NAME: o nome da instância da qual quer remover o utilizador.
- SERVICE_ACCT: o endereço de email da conta de serviço.
- INSTANCE_NAME: o nome da instância da qual quer remover o utilizador.
- PROJECT_ID: o ID do seu projeto
- INSTANCE_ID: o ID de instância pretendido
- USERNAME: o endereço de email do utilizador ou da conta de serviço
- PROJECT_ID: o ID do seu projeto
- INSTANCE_ID: o ID de instância pretendido
- USERNAME: o endereço de email do utilizador ou da conta de serviço
- Remoção automática
- Remoção manual
Use o procedimento de remoção automática de membros do grupo IAM para remover todos os utilizadores que usam o nome de domínio antigo da instância.
Volte a criar a conta iniciando sessão na instância do Cloud SQL como cada membro do grupo do IAM e usando a conta com o novo nome do domínio. Para mais informações, consulte o artigo Adicione automaticamente membros de um grupo a uma instância do Cloud SQL.
Use o procedimento de remoção de grupos do IAM para remover todos os grupos que usam o nome de domínio antigo da instância.
Use o procedimento de criação de grupos da IAM para adicionar o grupo com o novo domínio à instância.
Conceda novamente os privilégios da base de dados ao grupo de IAM.
- Os utilizadores e as contas de serviço que pertencem ao grupo de IAM
ainda podem iniciar sessão até que a
autorização de IAM
cloudsql.instances.login
seja removida do grupo. - Se a eliminação de um grupo resultar na não associação do utilizador do grupo IAM ou das contas de serviço a outros grupos na instância, o Cloud SQL remove o utilizador do grupo IAM ou as contas de serviço da instância.
- No entanto, se um utilizador do grupo IAM for proprietário de um objeto de base de dados na instância, tem de reatribuir a propriedade do objeto antes de poder eliminar o utilizador manualmente.
- Todos os utilizadores do grupo IAM e as contas de serviço não conseguem iniciar sessão na instância.
- O Cloud SQL também remove automaticamente todos os utilizadores do grupo do IAM e as contas de serviço da instância.
- No entanto, se um utilizador do grupo IAM for proprietário de um objeto de base de dados na instância, tem de reatribuir a propriedade do objeto antes de poder eliminar o utilizador manualmente.
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Selecione Utilizadores no menu de navegação do SQL.
- Clique em junto ao grupo que quer remover.
- Selecione Remover. Isto revoga o acesso apenas a esta instância.
- GROUP_NAME: a primeira parte do endereço de email do grupo do Cloud Identity. Por exemplo, se usar o endereço de email
example-group@example.com
, o nome do grupo do Cloud Identity éexample-group
. - INSTANCE_NAME: o nome da instância do Cloud SQL com o grupo do Cloud Identity que quer eliminar.
Na Google Cloud consola, aceda à página IAM.
Verifique se a conta é membro do grupo adicionado à instância do Cloud SQL.
Liste os utilizadores e as contas de serviço na instância.
gcloud sql users list --instance=INSTANCE_NAME
Na saída, verifique se o utilizador ou a conta de serviço está listada como um
CLOUD_IAM_USER
ou umCLOUD_IAM_SERVICE_ACCOUNT
.Se o utilizador ou a conta de serviço estiver listado como
CLOUD_IAM_USER
ouCLOUD_IAM_SERVICE_ACCOUNT
, remova a conta da instância. A conta que está a remover é uma conta IAM individual que não herda privilégios da base de dados do grupo.Inicie sessão novamente na instância com o utilizador ou a conta de serviço.
Se iniciar sessão novamente na instância, a conta é recriada com o tipo de conta correto:
CLOUD_IAM_GROUP_USER
ouCLOUD_IAM_GROUP_SERVICE_ACCOUNT
.- Saiba mais acerca da autenticação da base de dados do IAM.
- Saiba como iniciar sessão numa base de dados do Cloud SQL.
- Saiba como configurar instâncias para a autenticação de base de dados do IAM.
Para mais informações sobre como criar contas de serviço, consulte o artigo Crie contas de serviço.
Adicione uma associação de política IAM a um utilizador, uma conta de serviço ou um grupo
Este procedimento adiciona uma associação de políticas à política de IAM de um projeto específico, dado um ID do projeto e a associação. O comando de associação consiste num membro, numa função e numa condição opcional.
O nome de utilizador da base de dados tem de ser o endereço de email do utilizador do IAM, por exemplo, example-user@example.com
. Tem de estar tudo em minúsculas e usar aspas, porque contém carateres especiais (@
e .
).
Consola
gcloud
Execute
gcloud projects add-iam-policy-binding
com a flag --role=roles/cloudsql.instanceUser
.
Adicione uma associação de políticas a uma conta de utilizador
Substitua o seguinte:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USERNAME \ --role=roles/cloudsql.instanceUser
Se quiser estabelecer ligação através do proxy Auth do Cloud SQL ou dos conectores de linguagem do Cloud SQL,
execute
gcloud projects add-iam-policy-binding
novamente com a flag --role=roles/cloudsql.client
Adicione uma associação de políticas a uma conta de serviço
Substitua o seguinte:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT \ --role=roles/cloudsql.instanceUser
Se quiser estabelecer ligação através do proxy Auth do Cloud SQL ou dos conectores de linguagem do Cloud SQL,
execute
gcloud projects add-iam-policy-binding
novamente com a flag --role=roles/cloudsql.client
Adicione uma associação de políticas a um grupo do Cloud Identity
Substitua o seguinte:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=group:GROUP_EMAIL_ADDRESS \ --role=roles/cloudsql.instanceUser
Todos os membros do grupo especificado recebem a função de utilizador da instância do Cloud SQL e podem iniciar sessão em instâncias neste projeto.
Se quiser estabelecer ligação através do proxy Auth do Cloud SQL ou dos conectores de linguagem do Cloud SQL,
execute
gcloud projects add-iam-policy-binding
novamente com a flag --role=roles/cloudsql.client
Terraform
Para adicionar a associação de políticas necessária ao utilizador do IAM e às contas de serviço, use um recurso do Terraform.
Aplique as alterações
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
Eliminar as alterações
Para eliminar as alterações, faça o seguinte:
Terraform
Para adicionar a associação de políticas necessária ao utilizador do IAM e às contas de serviço, use um recurso do Terraform.
Aplique as alterações
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
Eliminar as alterações
Para eliminar as alterações, faça o seguinte:
REST
Conceda as funções cloudsql.instanceUser
e cloudsql.client
a ambos os tipos de contas editando a política de associação JSON ou YAML
devolvida pelo comando get-iam-policy
. Tenha em atenção que esta alteração à política não entra em vigor até definir a política atualizada.
{ "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" ] }
Adicione um utilizador da IAM individual ou uma conta de serviço a uma instância do Cloud SQL
Tem de criar uma nova conta de utilizador para cada utilizador da IAM individual ou conta de serviço que está a adicionar à instância do Cloud SQL para aceder a bases de dados. Se estiver a adicionar um grupo do IAM, não precisa de criar uma conta de utilizador para cada membro desse grupo.
O nome de utilizador da base de dados tem de ser o endereço de email do utilizador do IAM e estar em minúsculas.
Por exemplo, example-user@example.com
.
Quando usar comandos REST, o nome de utilizador tem de usar aspas porque contém carateres especiais (@
e .
). As contas de serviço usam o formato service-account-name@project-id.iam.gserviceaccount.com
.
Para adicionar um utilizador do IAM individual ou uma conta de serviço, adicione uma nova conta de utilizador e selecione o IAM como método de autenticação:
Consola
gcloud
Crie uma conta de utilizador
Use o email, como example-user@example.com
, para identificar o utilizador.
Substitua o seguinte:
gcloud sql users create USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user
Crie uma conta de serviço
Substitua o seguinte:
gcloud sql users create SERVICE_ACCT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account
Terraform
Para adicionar utilizadores e contas de serviço do IAM numa instância com a autenticação da base de dados do IAM ativada, use um recurso do Terraform.
Aplique as alterações
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
Eliminar as alterações
Para eliminar as alterações, faça o seguinte:
REST v1
Crie uma conta de utilizador
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Corpo JSON do pedido:
{ "name": "USERNAME", "type": "CLOUD_IAM_USER" }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" }
Crie uma conta de serviço
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Corpo JSON do pedido:
{ "name": "SERVICE_ACCT", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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
Crie uma conta de utilizador
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Corpo JSON do pedido:
{ "name": "USERNAME", "type": "CLOUD_IAM_USER" }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" }
Crie uma conta de serviço
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Corpo JSON do pedido:
{ "name": "SERVICE_ACCT", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" }
Adicione um grupo do IAM a uma instância do Cloud SQL
Para usar a autenticação de grupos do IAM e adicionar um grupo do IAM a uma instância do Cloud SQL, use um dos procedimentos nesta secção. Depois de adicionar o grupo do IAM, não tem de adicionar os membros individuais do grupo à instância. Para mais informações, consulte o artigo Adicione automaticamente membros de um grupo a uma instância do Cloud SQL.
Os nomes dos grupos do IAM têm as mesmas limitações de comprimento que os identificadores do PostgreSQL e só podem ter 63 carateres.
Se tiver um grupo do IAM com um nome que exceda a limitação do comprimento do nome de utilizador de um motor de base de dados, pode continuar a usá-lo para a autenticação de grupos do IAM aninhando-o num grupo do IAM principal com um nome que esteja em conformidade com a limitação do comprimento. O grupo IAM principal tem de ser adicionado à instância antes de o grupo aninhado poder ser usado.
Consola
gcloud
Substitua o seguinte:
Execute o seguinte comando:
gcloud sql users create GROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group
Terraform
Para adicionar utilizadores e contas de serviço do IAM numa instância com a autenticação da base de dados do IAM ativada, use um recurso do Terraform.
Aplique as alterações
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
Eliminar as alterações
Para eliminar as alterações, faça o seguinte:
REST v1
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Corpo JSON do pedido:
{ "name": "GROUP_EMAIL", "type": "CLOUD_IAM_GROUP" }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Corpo JSON do pedido:
{ "name": "GROUP_EMAIL", "type": "CLOUD_IAM_GROUP" }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" }
Adicione automaticamente membros de um grupo a uma instância do Cloud SQL
Quando adiciona um grupo do IAM a uma instância do Cloud SQL, todos os membros (utilizadores e contas de serviço) desse grupo herdam as autorizações do IAM para autenticar na instância. Não precisa de adicionar o membro do grupo individualmente à instância do Cloud SQL. Depois de um membro do grupo iniciar sessão e autenticar com êxito na instância principal pela primeira vez, o Cloud SQL cria uma conta de utilizador do grupo ou uma conta de serviço do grupo para esse membro do grupo. Pode ver o membro do grupo apresentado na instância após o primeiro início de sessão bem-sucedido.
Após a comutação por falha, desde que a instância de comutação por falha tenha os grupos adequados, os utilizadores do grupo do IAM podem continuar a iniciar sessão e a ser criados.
Para mais informações sobre o início de sessão, consulte o artigo Iniciar sessão através da autenticação da base de dados da IAM.
Migre os utilizadores do IAM existentes para usar a autenticação de grupos do IAM
Os utilizadores de IAM existentes do tipo CLOUD_IAM_USER
ou CLOUD_IAM_SERVICE_ACCOUNT
não usam a autenticação de grupos de IAM.
Pode migrar estes utilizadores para usarem a autenticação de grupos da IAM.
Faça a gestão dos membros do grupo numa instância do Cloud SQL
Quando adiciona um grupo do IAM a uma instância do Cloud SQL, todos os membros (utilizadores ou contas de serviço) desse grupo herdam a autorização do IAM para autenticar na instância. Pode controlar o acesso a uma instância gerindo o grupo no Cloud Identity. Por exemplo, se quiser dar acesso a um novo utilizador a uma instância, adicione o utilizador como membro de um grupo no Cloud ID. Não precisa de remover nem adicionar membros do grupo separadamente ao nível da instância do Cloud SQL, porque as alterações à associação ao grupo são propagadas automaticamente do grupo para a instância do Cloud SQL. As alterações à lista de membros do grupo, como a adição ou a remoção de um membro, demoram cerca de 15 minutos a propagar-se. O atraso na propagação de 15 minutos do Cloud SQL ocorre em paralelo com o tempo necessário para que as alterações à IAM sejam propagadas.
A concessão ou a revogação de privilégios da base de dados para um grupo do IAM no PostgreSQL entra em vigor imediatamente. Por exemplo, se revogar o acesso a uma tabela, os membros desse grupo do IAM perdem o acesso a essa tabela instantaneamente.
É possível que um utilizador ou uma conta de serviço seja membro de vários grupos do IAM. Se um utilizador ou uma conta de serviço pertencer a vários grupos do IAM numa instância, tem todas as autorizações do IAM e privilégios da base de dados combinados de cada um desses grupos do IAM.
Quando adiciona um novo membro (utilizador ou conta de serviço) ao grupo do IAM no Cloud Identity e este inicia sessão na instância com êxito pela primeira vez, herda automaticamente os privilégios da base de dados concedidos ao grupo.
Conceda privilégios de base de dados a um utilizador da IAM individual ou a uma conta de serviço
Quando um utilizador ou um serviço do IAM individual é adicionado a uma instância do Cloud SQL, essa nova conta não recebe privilégios em nenhuma base de dados por predefinição. Só podem executar consultas em relação a objetos da base de dados cujo acesso tenha sido concedido a PUBLIC.Se precisarem de acesso adicional, podem ser concedidos mais privilégios através da declaração GRANT. Consulte a página de referência do comando GRANT para ver uma lista completa dos privilégios que pode conceder a utilizadores e contas de serviço. Execute GRANT a partir da linha de comandos.
Substitua o seguinte:
grant select on TABLE_NAME to "USERNAME";
Conceda privilégios da base de dados a um grupo de IAM
Quando usa a autenticação de grupos do IAM, concede privilégios da base de dados a grupos do IAM em vez de conceder privilégios a utilizadores individuais ou contas de serviço. Por predefinição, quando adiciona um grupo do IAM a uma instância do Cloud SQL, o grupo não tem privilégios de base de dados.
Para conceder privilégios da base de dados ao grupo do IAM, use a declaração GRANT. Depois de iniciarem sessão na instância do Cloud SQL pela primeira vez, cada membro do grupo (incluindo utilizadores e contas de serviço) herda automaticamente os privilégios da base de dados concedidos ao grupo.
Substitua o seguinte:
Execute GRANT a partir da linha de comandos psql
.
grant select on TABLE_NAME to "GROUP_NAME";
Para mais informações sobre a concessão de privilégios, consulte a página de referência GRANT na documentação do PostgreSQL.
Os privilégios da base de dados que concede ao grupo do IAM entram em vigor imediatamente.
Veja os utilizadores, as contas de serviço e os grupos da IAM adicionados a uma instância do Cloud SQL
Para ver os utilizadores, as contas de serviço e os grupos do IAM que foram adicionados à sua instância do Cloud SQL, execute os seguintes comandos.
Consola
gcloud
Substitua INSTANCE_NAME pelo nome da instância que tem os grupos que quer ver.
gcloud sql users list --instance=INSTANCE_NAME
Os grupos têm um tipo de utilizador de CLOUD_IAM_GROUP
.
O resultado também apresenta uma lista de utilizadores e contas de serviço na sua instância do Cloud SQL.
REST v1
O pedido seguinte usa o método users.list para listar os utilizadores que têm contas na instância do Cloud SQL.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users/list
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" } ] }
Os grupos têm um tipo de utilizador de CLOUD_IAM_GROUP
.
O resultado também apresenta uma lista de utilizadores e contas de serviço na sua instância do Cloud SQL.
REST v1beta4
O pedido seguinte usa o método users.list para listar os utilizadores que têm contas na instância do Cloud SQL.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" ] } }, { ... }, { ... } ] }
Os grupos têm um tipo de utilizador de CLOUD_IAM_GROUP
.
O resultado também apresenta uma lista de utilizadores e contas de serviço na sua instância do Cloud SQL.
Remova um utilizador da IAM individual ou uma conta de serviço de uma instância do Cloud SQL
Para remover um utilizador individual ou uma conta de serviço que não seja membro de um grupo da instância do Cloud SQL, elimine essa conta através do seguinte comando:
Consola
gcloud
Revogue um utilizador
Use o email, como example-user@example.com
, para identificar o utilizador.
Substitua o seguinte:
gcloud sql users delete USERNAME \ --instance=INSTANCE_NAME
Elimine a conta de serviço individual
Substitua o seguinte:
gcloud sql users delete SERVICE_ACCT \ --instance=INSTANCE_NAME
REST v1
O pedido seguinte usa o método users.delete para eliminar a conta de utilizador especificada.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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
O pedido seguinte usa o método users.delete para eliminar a conta de utilizador especificada.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" }
Remova membros do grupo do IAM de uma instância do Cloud SQL
Existem duas formas de remover membros de um grupo da IAM de uma instância do Cloud SQL:
Remoção automática
Para remover um membro do grupo do IAM, tem de remover a respetiva associação dos grupos do IAM aplicáveis no Cloud Identity. Depois de os utilizadores do grupo IAM perderem a associação a todos os grupos aplicáveis no Cloud Identity, o Cloud SQL remove automaticamente esses utilizadores do grupo da instância. A única exceção a esta remoção são os utilizadores do grupo que são proprietários de objetos da base de dados. Estes utilizadores do grupo têm de ser removidos manualmente.
As alterações à lista de membros do grupo, como a adição ou a remoção de um membro, demoram cerca de 15 minutos a propagar-se. O atraso de propagação de 15 minutos do Cloud SQL ocorre em paralelo com o tempo necessário para que as alterações da IAM sejam propagadas.
Altere o nome de domínio para membros de grupos do IAM existentes numa instância do Cloud SQL
Se alterar o nome do domínio de uma organização no Cloud Identity, as alterações não são aplicadas automaticamente aos membros do grupo do IAM na instância do Cloud SQL.
Por exemplo, se alterar user@example.com
para user@new-example.com
no Cloud Identity,
user@example.com
permanece na instância do Cloud SQL, apesar de o
nome de domínio ter sido alterado no Cloud Identity.
Para alterar o nome do domínio dos membros do grupo do IAM, faça o seguinte:
Para alterar o nome do domínio dos grupos do IAM, faça o seguinte:
Remoção manual
Nos casos em que não é possível remover automaticamente um utilizador do grupo do IAM, pode removê-lo manualmente. Não pode remover manualmente um utilizador de um grupo do IAM de uma instância do Cloud SQL através da CLI gcloud, da consola, do Terraform ou da API Cloud SQL Admin.Google Cloud Em alternativa, os utilizadores da base de dados com privilégios de superutilizador podem eliminar manualmente os utilizadores do grupo IAM da instância do Cloud SQL através de uma declaração DROP USER de um cliente PostgreSQL.
Depois de remover manualmente um utilizador do grupo IAM da instância do Cloud SQL, certifique-se de que também o remove do grupo IAM no Cloud Identity para impedir inícios de sessão adicionais na instância do Cloud SQL.
Elimine um grupo do IAM de uma instância do Cloud SQL
Pode eliminar os grupos do IAM adicionados da instância do Cloud SQL. Depois de eliminar um grupo do IAM da instância, todos os utilizadores e contas de serviço pertencentes ao grupo do IAM perdem todos os privilégios da base de dados que foram concedidos ao grupo do IAM. Além disso, aplicam-se as seguintes condições:
Se eliminar todos os grupos da IAM de uma instância do Cloud SQL, todos os utilizadores do grupo da IAM e as contas de serviço perdem todos os respetivos privilégios da base de dados. Além disso, aplicam-se as seguintes condições:
Consola
gcloud
Para eliminar um grupo do Cloud ID de uma instância, use o comando
gcloud sql users delete
.
Substitua o seguinte:
gcloud sql users delete GROUP_NAME \ --instance=INSTANCE_NAME
Remova as autorizações de início de sessão do IAM de um grupo do IAM
Se revogar a função cloudsql.instanceUser
de um grupo do IAM,
todos os membros do grupo perdem a capacidade de iniciar sessão em qualquer instância do Cloud SQL
no projeto. Os utilizadores ou as contas de serviço só podem iniciar sessão em instâncias se forem membros de outro grupo do IAM que ainda tenha autorizações de início de sessão.
Para revogar uma função de um grupo do Cloud Identity, consulte o artigo Revogue uma única função.
Remova utilizadores de um grupo do IAM
Os membros do grupo de IAM, como utilizadores ou contas de serviço, podem ser removidos do grupo de IAM no Cloud ID.
Depois de a remoção ser propagada através do IAM, o utilizador já não pode iniciar sessão na base de dados, a menos que tenha recebido autorizações de início de sessão de outro grupo ou lhe sejam concedidos diretamente privilégios de início de sessão. Além disso, os utilizadores removidos de um grupo perdem os privilégios da base de dados do grupo.
Se um utilizador do grupo IAM não pertencer a nenhum grupo na instância, o Cloud SQL remove automaticamente o utilizador da instância. No entanto, se o Cloud SQL detetar que um utilizador do grupo IAM é proprietário de um objeto na instância, o Cloud SQL não remove o utilizador. Um administrador tem de reatribuir a propriedade do objeto e remover manualmente o utilizador.
Veja informações de início de sessão nos registos de auditoria
Pode ativar os registos de auditoria para capturar inícios de sessão do IAM na base de dados. Quando existem problemas de início de sessão, pode usar os registos de auditoria para diagnosticar o problema.
Depois de configurados, pode ver os registos de auditoria de acesso a dados de inícios de sessão bem-sucedidos através do Explorador de registos.
Para a autenticação de grupos de IAM, os registos de auditoria apresentam a atividade e os inícios de sessão de utilizadores individuais e contas de serviço.
Por exemplo, um registo pode ter informações semelhantes às seguintes:
{
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: "..."
}
Resolva problemas de falha ao iniciar sessão
Quando uma tentativa de início de sessão falha, o PostgreSQL devolve uma mensagem de erro mínima por motivos de segurança. Por exemplo:
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
Pode rever os registos de erros do PostgreSQL para ver mais detalhes sobre o erro. Para mais informações, consulte Ver registos.
Por exemplo, para o erro anterior, a seguinte entrada do registo explica a ação que pode realizar para resolver o 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.
Verifique a mensagem de erro que recebe. Se a mensagem não indicar que usou a "autenticação de utilizadores do IAM do Cloud SQL" ou a "autenticação de contas de serviço do IAM do Cloud SQL", verifique se o tipo de utilizador da base de dados usado para iniciar sessão é CLOUD_IAM_USER
ou CLOUD_IAM_SERVICE_ACCOUNT
.
Pode usar a Google Cloud consola ou o comando gcloud sql
users list
para verificar esta situação.
Para um utilizador do IAM, verifique se o nome de utilizador da base de dados é o email do utilizador do IAM.
Se usou a autenticação da base de dados do IAM, verifique os detalhes da mensagem de erro. Pode encontrar a mensagem de erro no registo de erros da base de dados. Se indicar que a chave de acesso (OAuth 2.0) que enviou como palavra-passe era inválida, pode usar o comando gcloud auth application-default print-access-token
gcloud
para encontrar detalhes da chave, da seguinte forma:
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
Verifique se o token se destina ao utilizador ou à conta de serviço do IAM pretendido e se não expirou.
Se os detalhes indicarem uma falta de autorização, verifique se o utilizador ou a conta de serviço do IAM tem a autorização cloudsql.instances.login
concedida através da função Cloud SQL Instance User
predefinida ou da função personalizada na política de IAM do projeto da instância. Use a resolução de problemas de políticas do IAM para obter ajuda adicional.
Se um início de sessão falhar devido à indisponibilidade da autenticação da base de dados do IAM, o utilizador pode iniciar sessão através do nome de utilizador e da palavra-passe predefinidos do PostgreSQL. Este método de início de sessão continua a dar ao utilizador acesso a toda a base de dados. Verifique se a ligação é uma ligação segura.
Resolva problemas de contas de utilizador que usam a autenticação de grupos do IAM
Esta secção apresenta cenários de resolução de problemas para a autenticação de grupos do IAM.
Falha ao adicionar um grupo a uma base de dados
Quando tenta adicionar um grupo a uma instância, recebe o seguinte erro:
(gcloud.sql.users.create) HTTPError 400: Invalid request: Provided CLOUD_IAM_GROUP: EMAIL, does not exist.
Certifique-se de que o endereço de email que indicou é um grupo válido.
Se o grupo ainda não existir, crie-o. Para mais informações sobre a criação de grupos, consulte o artigo Crie e faça a gestão de grupos Google na Google Cloud consola.
Se receber o seguinte erro:
(gcloud.sql.users.create) HTTPError 400: Invalid request: IAM Group Authentication is disabled.
Em seguida, antes de poder usar a autenticação de grupos do IAM, a sua instância do Cloud SQL requer a seguinte atualização de manutenção:
R20240514.00_04
ou posterior
Pode aplicar a atualização de manutenção à sua instância através da manutenção autónoma. Para mais informações, consulte o artigo Realize a manutenção self-service.
Um utilizador ou uma conta de serviço do IAM existente não está a herdar os privilégios da base de dados concedidos ao respetivo grupo do IAM
Se um utilizador ou uma conta de serviço do IAM existente não estiver a herdar os privilégios da base de dados corretos do respetivo grupo, conclua os seguintes passos: