Configurar instâncias novas e atuais para autenticação do banco de dados do IAM

Esta página tem procedimentos para criar ou editar instâncias do Cloud SQL para permitir que usuários, contas de serviço ou grupos configurados 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 quatro bancos de dados de sistema:

  • information_schema: fornece acesso a metadados do banco de dados e informações sobre o servidor MySQL.
  • mysql: o esquema do sistema. Esse arquivo contém tabelas que armazenam informações exigidas pelo servidor MySQL durante a execução.
  • performance_schema: um recurso para monitorar a execução do MySQL Server em um nível baixo.
  • sys: contém um conjunto de objetos que ajuda os DBAs e os desenvolvedores a interpretar os dados coletados pelo esquema de desempenho.

Antes de começar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Verifique se você tem os papéis Administrador do Cloud SQL e Leitor do Compute na sua conta de usuário.

    Acessar a página IAM

    Saiba mais sobre papéis e permissões

Configurar novas instâncias para autenticação do banco de dados do IAM

Para configurar uma nova instância do Cloud SQL para autenticação do banco de dados do IAM, você deve ativar a flag cloudsql_iam_authentication. Depois de ativar essa flag, é possível adicionar usuários do IAM, ou grupos à instância do Cloud SQL.

Para configurar uma nova instância do Cloud SQL para usar a autenticação do banco de dados do IAM:

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Clique em Criar instância.
  3. Clique em Escolher MySQL.
  4. Insira um nome para o código da instância.
  5. 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).
  6. Digite a senha do usuário raiz.
  7. No menu Versão do banco de dados, selecione uma versão do banco de dados.
  8. 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.
  9. Na seção Personalizar a instância, clique em Mostrar opções de configuração e expanda Sinalizações.
  10. Clique em Adicionar sinalização.
  11. No menu Escolher uma flag, selecione a flag cloudsql_iam_authentication. Verifique se Ativado está selecionado como o valor dessa sinalização e clique em Concluído.
  12. Defina outras configurações da instância, conforme necessário. Para mais informações sobre as configurações, consulte Configurações.
  13. 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 .
  • MYSQL_VERSION: a versão do MySQL (como MYSQL_5_7 ou MYSQL_8_0).
  • NUMBER_OF_CORES: o número de cores 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=MYSQL_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.

resource "google_sql_database_instance" "default" {
  name             = "mysql-db-auth-instance-name-test"
  region           = "us-west4"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-f1-micro"
    database_flags {
      name  = "cloudsql_iam_authentication"
      value = "on"
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally
  # delete this instance by use of Terraform whereas
  # `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

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

  1. Inicie o Cloud Shell.
  2. 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.

  1. 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 de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. 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

  1. 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.

  2. 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!".

  3. 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:

  1. Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply
  1. 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 sensíveis ou de identificação pessoal (PII) no seu nome da instância ele é 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 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 tipo enumerado da versão do banco de dados. Por exemplo: MYSQL_8_0
  • PASSWORD: a senha do usuário raiz
  • MACHINE_TYPE: string de tipo enumerado do tipo de máquina (camada), como: db-custom-[CPUS]-[MEMORY_MBS]

Método HTTP e URL:

POST https://sqladmin.googleapis.com/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/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"
}
Para verificar como a solicitação da API REST adjacente é criada nesta tarefa, consulte APIs Explorer nas instâncias: página adicional.

REST v1beta4

Não inclua informações sensíveis ou de identificação pessoal (PII) no seu nome da instância ele é 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 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 tipo enumerado da versão do banco de dados. Por exemplo: MYSQL_8_0
  • PASSWORD: a senha do usuário raiz
  • MACHINE_TYPE: string de tipo enumerado 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"
}
Para verificar como a solicitação da API REST adjacente é criada nesta tarefa, consulte APIs Explorer nas instâncias: página adicional.

Configurar instâncias atuais para autenticação do banco de dados do IAM

Para configurar uma instância do Cloud SQL para autenticação do banco de dados do IAM, você precisa: ativar a flag cloudsql_iam_authentication. Depois de ativar essa flag, é possível adicionar usuários do IAM, ou grupos à instância do Cloud SQL.

Para configurar uma instância do Cloud SQL para usar a autenticação do banco de dados do IAM:

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página Visão geral de uma instância, clique no nome dela.
  3. Clique em Editar.
  4. Na seção Personalizar sua instância, expanda Sinalizações.
  5. Clique em Adicionar sinalização.
  6. No menu Escolher uma flag, selecione a flag cloudsql_iam_authentication. Verifique se Ativado está selecionado como o valor dessa sinalização e clique em Concluído.
  7. Defina outras configurações da instância, conforme necessário. Para mais informações sobre as configurações, consulte Configurações.
  8. 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 tipo enumerado da versão do banco de dados. Por exemplo: MYSQL_8_0
  • PASSWORD: a senha do usuário raiz
  • MACHINE_TYPE: string de tipo enumerado do tipo de máquina (camada), como: db-custom-[CPUS]-[MEMORY_MBS]

Método HTTP e URL:

POST https://sqladmin.googleapis.com/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/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 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 tipo enumerado da versão do banco de dados. Por exemplo: MYSQL_8_0
  • PASSWORD: a senha do usuário raiz
  • MACHINE_TYPE: string de tipo enumerado 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