Como conectar o cliente do SQL Server usando a imagem do Docker do proxy do Cloud SQL Auth

Nesta página, descrevemos como usar a imagem do Docker do proxy do Cloud SQL Auth para conectar um cliente sqlcmd à instância do Cloud SQL a partir de uma máquina cliente que executa a instância do Linux ou do Compute Engine Linux.

Antes de começar

Você precisa:

Conectar um cliente sqlcmd usando a imagem do Docker do proxy do Cloud SQL Auth

Para se conectar usando a imagem do Docker do proxy do Cloud SQL Auth:

  1. Enable the Cloud SQL Admin API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Se você usa uma instância do Compute Engine, é necessário prepará-la:
    1. Exiba as propriedades dessa instância:
      gcloud compute instances describe [GCE_INSTANCE_NAME]
    2. Verifique os escopos ativados nela.

      A autenticação com escopos requer os seguintes escopos:

      • https://www.googleapis.com/auth/sqlservice.admin
      • https://www.googleapis.com/auth/devstorage.read_write

      Como alternativa, o escopo https://www.googleapis.com/auth/cloud-platform ativa todas as APIs do Google Cloud Platform.

      Se sua instância do Compute Engine não tiver os escopos adequados, você pode atualizar a instância para incluí-los. Para mais informações, consulte a documentação do Compute Engine.

    3. Abra uma conexão de terminal com a instância, seguindo as instruções em Como conectar-se a instâncias do Linux.
  3. Instale o cliente sqlcmd na instância do Compute Engine ou na máquina cliente, se isso ainda não foi feito.
  4. Se necessário, instale o cliente Docker:
    curl https://get.docker.com | sh
    sudo usermod -aG docker $USER

    Se você usa uma instância do Compute Engine otimizada para contêineres, ela já tem o cliente Docker instalado.

  5. Instale a imagem do Docker do proxy Cloud SQL Auth pelo Google Container Registry.
    docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.21.1
  6. Se você estiver executando a imagem do Docker do proxy do Cloud SQL Auth em uma máquina local (e não em uma instância do Compute Engine) ou se a instância do Compute Engine não tiver os escopos apropriados, crie uma conta de serviço do Google Cloud Platform.
    1. No console Google Cloud , acesse a página Contas de serviço.

      Acesse as Contas de serviço

    2. Selecione o projeto que contém a instância do Cloud SQL.
    3. Clique em Criar conta de serviço.
    4. Preencha o campo Nome da conta de serviço.
    5. Altere o ID da conta de serviço para um valor exclusivo e facilmente reconhecível, depois clique em Criar e continuar.
    6. Clique no campo Selecionar papel e escolha um dos seguintes papéis:
      • Cloud SQL > Cliente do Cloud SQL
      • Cloud SQL > Editor do Cloud SQL
      • Cloud SQL > Administrador do Cloud SQL
    7. Clique em Concluído para terminar a criação da conta de serviço.
    8. Clique no menu de ações da sua nova conta de serviço e selecione Gerenciar chaves.
    9. Clique no menu suspenso Adicionar chave e clique em Criar nova chave.
    10. Confirme se o tipo de chave é JSON e clique em Criar.

      O arquivo da chave privada é transferido para sua máquina. Você pode movê-lo para outro local. Mantenha-o seguro.

    Forneça o caminho para o arquivo de chave como "PATH_TO_KEY_FILE" quando iniciar o proxy do Cloud SQL Auth.

  7. Acesse a página "Instâncias do Cloud SQL" no Google Cloud console.

    Acesse Instâncias do Cloud SQL

  8. Selecione a instância para abrir a respectiva página Detalhes da instância e copie o Nome da conexão da instância.

    Por exemplo, myproject:us-central1:myinstance.

  9. Inicie o proxy de autenticação do Cloud SQL.

    Dependendo da linguagem e do ambiente, inicie o proxy de autenticação do Cloud SQL usando os soquetes TCP ou Unix. Os soquetes Unix não são compatíveis com aplicativos desenvolvidos na linguagem de programação Java ou com o ambiente Windows.

    Soquetes TCP

    docker run -d \
      -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json \
      -p 127.0.0.1:1433:1433 \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.21.1 \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME>

    Se você usa as credenciais fornecidas pela instância do Compute Engine, não inclua o parâmetro --credentials-file e a linha -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json.

    Sempre especifique o prefixo 127.0.0.1 em -p para que o proxy de autenticação do Cloud SQL não seja exposto fora do host local. O "0.0.0.0" no parâmetro das instâncias é necessário para tornar a porta acessível de fora do contêiner do Docker.

    Soquetes Unix

    docker run -d -v /cloudsql:/cloudsql \
      -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.21.1 //
      --unix-socket=/cloudsql \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME> 

    Se você usa as credenciais fornecidas pela instância do Compute Engine, não inclua o parâmetro --credentials-file e a linha -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json.

    Se você usa uma imagem otimizada para contêiner, utilize um diretório gravável em vez de /cloudsql. Por exemplo:

    -v /mnt/stateful_partition/cloudsql:/cloudsql

    É possível especificar mais de uma instância, separadas por vírgulas. Também é possível usar metadados do Compute Engine para determinar dinamicamente a quais instâncias se conectar. Saiba mais sobre os parâmetros de proxy.

  10. Inicie o cliente:

    A string de conexão que você usa depende de como a inicialização do proxy de autenticação do Cloud SQL foi feita, ou seja, usando um soquete TCP ou o Docker.

    Soquetes TCP

    1. Inicie o cliente sqlcmd:
      sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD

      Quando você se conecta usando soquetes TCP, o proxy de autenticação do Cloud SQL é acessado por meio de 127.0.0.1.

    2. Se solicitado, digite a senha.
    3. Será exibido o prompt sqlcmd.
Precisa de ajuda? Para receber ajuda na solução de problemas do proxy, consulte Solução de problemas de conexões do proxy de autenticação do Cloud SQL ou a página Suporte do Cloud SQL.

Manter a imagem do Docker do proxy do Cloud SQL Auth atualizada

A imagem Docker do proxy de autenticação do Cloud SQL é baseada em uma versão específica do proxy. Quando uma nova versão do proxy de autenticação do Cloud SQL estiver disponível, extraia a nova versão da imagem Docker do proxy de autenticação do Cloud SQL para manter o ambiente atualizado. Você pode ver qual é a versão atual na página de versões do proxy do Cloud SQL Auth no GitHub.

A seguir