Esta página tem procedimentos para criar ou editar instâncias do Cloud SQL para permitir que utilizadores, contas de serviço ou grupos configurados para usar a autenticação de base de dados do IAM do Cloud SQL. Para saber mais sobre a integração da IAM do Cloud SQL, consulte o artigo Autenticação da IAM.
Uma instância recém-criada tem uma base 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.
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 as funções de administrador do Cloud SQL e leitor do Compute na sua conta de utilizador.
Saiba mais acerca das funções e autorizações.
- Nova arquitetura de rede SQL: pode ter até 1000 instâncias por projeto.
- Arquitetura de rede SQL antiga: pode ter até 100 instâncias por projeto.
- Usar ambas as arquiteturas: o seu limite vai estar entre 100 e 1000, consoante a distribuição das suas instâncias pelas duas arquiteturas.
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Clique em Criar instância.
- Clique em Escolher PostgreSQL.
- Introduza um nome para o ID da instância. Não inclua informações confidenciais nem de identificação pessoal no nome da instância, uma vez que é visível externamente. Não tem de incluir o ID do projeto no nome da instância. O ID do projeto é incluído automaticamente quando adequado (por exemplo, nos ficheiros de registo).
- Introduza uma palavra-passe para o administrador predefinido.
- No menu Versão da base de dados, selecione uma versão da base de dados.
- Na secção Escolha a região e a disponibilidade zonal, selecione a região e a zona para a sua instância. Coloque a instância na mesma região que os recursos que acedem à mesma. Não é possível modificar a região selecionada no futuro. Normalmente, não precisa de especificar uma zona.
- Na secção Personalize a sua instância, clique em Mostrar opções de configuração e, de seguida, expanda Flags.
- Clique em Adicionar indicador.
- No menu Escolha uma bandeira, selecione a bandeira
cloudsql.iam_authentication
. Certifique-se de que Ativado está selecionado como o valor desta flag e, de seguida, clique em Concluído. - Configure outras definições da instância, conforme necessário. Para mais informações sobre as definições, consulte o artigo Definições.
- Clique em Criar instância.
- INSTANCE_NAME: o nome da nova instância.
- POSTGRES_VERSION: a versão do PostgreSQL (como 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. Tem de ser fornecida uma unidade de tamanho (por exemplo, 3072 MiB ou 9 GiB).
- ZONE: zona do Compute Engine preferencial (como us-central1-a ou us-central1-b).
- PASSWORD: crie uma palavra-passe para o utilizador raiz.
- 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
- INSTANCE_ID: o ID de instância pretendido
- REGION: a região pretendida, como us-east-1
- PROJECT_ID: o ID do projeto
- LOCATION_ID: o ID da localização
- DATABASE_VERSION: string enum da versão da base de dados.
Por exemplo:
POSTGRES_12
- PASSWORD: a palavra-passe do utilizador de raiz
- MACHINE_TYPE: string enum do tipo de máquina (nível), como:
db-custom-[CPUS]-[MEMORY_MBS]
- INSTANCE_ID: o ID de instância pretendido
- REGION: a região pretendida, como us-east-1
- PROJECT_ID: o ID do projeto
- LOCATION_ID: o ID da localização
- DATABASE_VERSION: string enum da versão da base de dados.
Por exemplo:
POSTGRES_12
- PASSWORD: a palavra-passe do utilizador de raiz
- MACHINE_TYPE: string enum do tipo de máquina (nível), como:
db-custom-[CPUS]-[MEMORY_MBS]
-
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.
- Clique em Edit.
- Na secção Personalize a sua instância, expanda Flags.
- Clique em Adicionar indicador.
- No menu Escolha uma bandeira, selecione a bandeira
cloudsql.iam_authentication
. Certifique-se de que Ativado está selecionado como o valor desta flag e, de seguida, clique em Concluído. - Configure outras definições da instância, conforme necessário. Para mais informações sobre as definições, consulte o artigo Definições.
- Clique em Guardar.
- INSTANCE_NAME: o nome da nova instância.
- PROJECT_ID: o ID do projeto
- LOCATION_ID: o ID da localização
- INSTANCE_ID: o ID de instância pretendido
- REGION: a região pretendida
- DATABASE_VERSION: string enum da versão da base de dados.
Por exemplo:
POSTGRES_12
- PASSWORD: a palavra-passe do utilizador de raiz
- MACHINE_TYPE: string enum do tipo de máquina (nível), como:
db-custom-[CPUS]-[MEMORY_MBS]
- PROJECT_ID: o ID do projeto
- LOCATION_ID: o ID da localização
- INSTANCE_ID: o ID de instância pretendido
- REGION: a região pretendida
- DATABASE_VERSION: string enum da versão da base de dados.
Por exemplo:
POSTGRES_12
- PASSWORD: a palavra-passe do utilizador de raiz
- MACHINE_TYPE: string enum do tipo de máquina (nível), como:
db-custom-[CPUS]-[MEMORY_MBS]
- Saiba mais acerca da autenticação da base de dados do IAM.
- Saiba como configurar inícios de sessão de réplicas de leitura para a autenticação de base de dados do IAM.
- Saiba como criar utilizadores e contas de serviço que usam a autenticação de base de dados da IAM do Cloud SQL.
- Saiba como iniciar sessão numa base de dados do Cloud SQL através da autenticação de base de dados do IAM.
- Saiba como gerir utilizadores e contas de serviço para a autenticação de base de dados do IAM.
O número máximo de instâncias que pode ter num único projeto depende da arquitetura de rede dessas instâncias:
Apresente um registo de apoio ao cliente para pedir um aumento. As réplicas de leitura são contabilizadas como instâncias.
Configure novas instâncias para a autenticação de base de dados do IAM
Para configurar uma nova instância do Cloud SQL para a autenticação de base de dados do IAM,
tem de ativar a flag cloudsql.iam_authentication
.
Depois de ativar esta flag, pode adicionar utilizadores do IAM, contas de serviço ou grupos à instância do Cloud SQL.
Para configurar uma nova instância do Cloud SQL para usar a autenticação de base de dados da IAM:
Consola
gcloud
Executar
gcloud sql instances create
com o parâmetro --database-flags
definido como
cloudsql.iam_authentication=on
.
Substitua o seguinte:
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 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
Não inclua informações confidenciais nem de identificação pessoal (IIP) no nome da instância, uma vez que é visível externamente.
Não tem de incluir o ID do projeto no nome da instância. O ID do projeto é incluído automaticamente quando necessário (por exemplo, nos ficheiros de registo).
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/locations/LOCATION_ID/instances
Corpo JSON do pedido:
{ "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 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": "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/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Não inclua informações confidenciais nem de identificação pessoal (IIP) no nome da instância, uma vez que é visível externamente.
Não tem de incluir o ID do projeto no nome da instância. O ID do projeto é incluído automaticamente quando necessário (por exemplo, nos ficheiros de registo).
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/locations/LOCATION_ID/instances
Corpo JSON do pedido:
{ "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 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": "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" }
Configure instâncias existentes para a autenticação de base de dados do IAM
Para configurar uma instância do Cloud SQL existente para a autenticação de base de dados do IAM, tem de
ativar a flag cloudsql.iam_authentication
.
Depois de ativar esta flag, pode adicionar utilizadores do IAM, contas de serviço ou grupos à instância do Cloud SQL.
Para configurar uma instância do Cloud SQL existente para usar a autenticação de base de dados da IAM:
Consola
gcloud
Para informações sobre a instalação e o início da utilização da CLI gcloud, consulte o artigo Instale a CLI gcloud. Para obter informações sobre como iniciar a Cloud Shell, consulte o artigo Use a Cloud Shell.
Para este procedimento, use
gcloud
sql instances patch
.
Substitua o seguinte:
gcloud sql instances patch INSTANCE_NAME \ --database-flags=cloudsql.iam_authentication=on
Esta ação repõe todas as outras definições de flags da base de dados existentes. Para mais orientações sobre a definição de flags de base de dados, consulte o artigo Defina uma flag de base de dados.
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/locations/LOCATION_ID/instances
Corpo JSON do pedido:
{ "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 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": "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/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/locations/LOCATION_ID/instances
Corpo JSON do pedido:
{ "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 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": "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" }