Nesta página, você verá procedimentos para criar ou editar instâncias do Cloud SQL para permitir que usuários ou contas de serviço configuradas usem a autenticação do banco de dados do IAM do Cloud SQL. Para saber mais sobre a integração do IAM do Cloud SQL, consulte Autenticação do IAM.
Uma instância recém-criada tem um banco de dados postgres
.
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.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Verifique se você tem os papéis Administrador do Cloud SQL e Leitor do Compute na
sua conta de usuário.
Saiba mais sobre papéis e permissões
Configurar novas instâncias para autenticação do banco de dados do IAM
O Cloud SQL usa uma sinalização para ativar e desativar as conexões de usuário do IAM em uma instância. Neste procedimento, ative essa sinalização.
Para configurar uma nova instância que use a autenticação do banco de dados do IAM do Cloud SQL, siga estas instruções:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Clique em Criar instância.
- Clique em Escolher PostgreSQL.
- Insira um nome para o código da instância. Não inclua informações confidenciais ou de identificação pessoal no nome da sua instância. ela é visível externamente. Não é necessário incluir o ID do projeto no nome da instância. O ID do projeto é incluído automaticamente quando apropriado (por exemplo, nos arquivos de registro).
- Digite uma senha para o usuário postgres padrão.
- No menu suspenso Versão do banco de dados, selecione uma versão do banco de dados.
- Na seção Escolher região e disponibilidade por zona, selecione a região e a zona da instância. Coloque a instância na mesma região que os recursos que a acessam. A região selecionada não poderá ser modificada no futuro. Normalmente, não é preciso especificar uma zona.
- Na seção Personalizar a instância, clique em Mostrar opções de configuração e expanda Sinalizações.
- Clique em Adicionar sinalização.
- No menu suspenso Escolher uma sinalização, selecione a sinalização
cloudsql.iam_authentication
. Verifique se Ativado está selecionado como o valor dessa sinalização e clique em Concluído. - Defina outras configurações da instância, conforme necessário. Para mais informações sobre as configurações, consulte Configurações.
- Clique em Criar instância.
gcloud
Execute
gcloud sql instances create
com o parâmetro --database-flags
definido como
cloudsql.iam_authentication=on
.
Substitua:
- INSTANCE_NAME: o nome da nova instância;
- POSTGRES_VERSION: a versão do PostgreSQL (por exemplo, POSTGRES_9_6, POSTGRES_10, POSTGRES_11 ou POSTGRES_12).
- NUMBER_OF_CORES: o número de núcleos na máquina;
- AMOUNT_OF_MEMORY: a quantidade de memória na máquina; Uma unidade de tamanho precisa ser fornecida (como 3.072 MiB ou 9 GiB);
- ZONE: zona preferencial do Compute Engine, como us-central1-a ou us-central1-b;
- PASSWORD: cria uma senha para o usuário raiz.
gcloud sql instances create INSTANCE_NAME \ --database-version=POSTGRES_VERSION \ --cpu=NUMBER_OF_CORES \ --memory=AMOUNT_OF_MEMORY \ --zone=ZONE_NAME \ --root-password=PASSWORD \ --database-flags=cloudsql.iam_authentication=on
Terraform
Para criar uma instância com a autenticação do banco de dados do IAM ativada, use um recurso do Terraform.
Aplique as alterações
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tf
recém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
Excluir as alterações
Para excluir as mudanças, faça o seguinte:
- Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
-
Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo
yes
no prompt:terraform destroy
REST v1
Não inclua informações confidenciais ou de identificação pessoal (PII, na sigla em inglês) no nome da sua instância porque elas são visíveis externamente.
Não é necessário incluir o ID do projeto no nome da instância. O ID do projeto é incluído automaticamente quando necessário (por exemplo, nos arquivos de registro).
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- INSTANCE_ID: o ID da instância buscada
- REGION: a região pretendida, como us-east-1
- PROJECT_ID: o ID do projeto
- LOCATION_ID: o ID do local
- DATABASE_VERSION: string de enum da versão do banco de dados.
Por exemplo:
POSTGRES_12
- PASSWORD: a senha do usuário raiz
- MACHINE_TYPE: string de enum do tipo de máquina (camada), como:
db-custom-[CPUS]-[MEMORY_MBS]
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
Corpo JSON da solicitação:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql.iam_authentication", "value": "on" } ] } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Não inclua informações confidenciais ou de identificação pessoal (PII, na sigla em inglês) no nome da sua instância porque elas são visíveis externamente.
Não é necessário incluir o ID do projeto no nome da instância. O ID do projeto é incluído automaticamente quando necessário (por exemplo, nos arquivos de registro).
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- INSTANCE_ID: o ID da instância buscada
- REGION: a região pretendida, como us-east-1
- PROJECT_ID: o ID do projeto
- LOCATION_ID: o ID do local
- DATABASE_VERSION: string de enum da versão do banco de dados.
Por exemplo:
POSTGRES_12
- PASSWORD: a senha do usuário raiz
- MACHINE_TYPE: string de enum do tipo de máquina (camada), como:
db-custom-[CPUS]-[MEMORY_MBS]
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
Corpo JSON da solicitação:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql.iam_authentication", "value": "on" } ] } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Configurar instâncias atuais para autenticação do banco de dados do IAM do Cloud SQL
Para configurar a autenticação do banco de dados do IAM em uma instância atual:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Para abrir a página Visão geral de uma instância, clique no nome dela.
- Clique em Editar.
- Na seção Personalizar sua instância, expanda Sinalizações.
- Clique em Adicionar sinalização.
- No menu suspenso Escolher uma sinalização, selecione a sinalização
cloudsql.iam_authentication
. Verifique se Ativado está selecionado como o valor dessa sinalização e clique em Concluído. - Defina outras configurações da instância, conforme necessário. Para mais informações sobre as configurações, consulte Configurações.
- Clique em Salvar.
gcloud
Para informações sobre como instalar e dar os primeiros passos com a CLI gcloud, consulte Instalar a CLI gcloud. Para mais informações sobre como iniciar o Cloud Shell, consulte Usar o Cloud Shell.
Para este procedimento, use
gcloud
sql instances patch
.
Substitua:
- INSTANCE_NAME: o nome da nova instância;
gcloud sql instances patch INSTANCE_NAME \ --database-flags=cloudsql.iam_authentication=on
Isso redefine todas as outras configurações de sinalização de banco de dados existentes. Para mais informações sobre a configuração de flags de banco de dados, consulte Definir uma flag de banco de dados.
REST v1
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto
- LOCATION_ID: o ID do local
- INSTANCE_ID: o ID da instância buscada
- REGION: a região desejada
- DATABASE_VERSION: string de enum da versão do banco de dados.
Por exemplo:
POSTGRES_12
- PASSWORD: a senha do usuário raiz
- MACHINE_TYPE: string de enum do tipo de máquina (camada), como:
db-custom-[CPUS]-[MEMORY_MBS]
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
Corpo JSON da solicitação:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql.iam_authentication", "value": "on" } ] } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto
- LOCATION_ID: o ID do local
- INSTANCE_ID: o ID da instância buscada
- REGION: a região desejada
- DATABASE_VERSION: string de enum da versão do banco de dados.
Por exemplo:
POSTGRES_12
- PASSWORD: a senha do usuário raiz
- MACHINE_TYPE: string de enum do tipo de máquina (camada), como:
db-custom-[CPUS]-[MEMORY_MBS]
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
Corpo JSON da solicitação:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql.iam_authentication", "value": "on" } ] } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
A seguir
- Saiba mais sobre a autenticação do banco de dados do IAM.
- Saiba como configurar logins de réplica de leitura para autenticação do banco de dados do IAM.
- Veja como criar usuários e contas de serviço que usam a autenticação de banco de dados do IAM do Cloud SQL.
- Veja como fazer login em um banco de dados do Cloud SQL usando a autenticação de banco de dados do IAM.
- Saiba como gerenciar usuários e contas de serviço para autenticação do banco de dados do IAM.