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. Ative a Cloud SQL Admin API.

    Ative a 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.11.0
  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 do Google Cloud, acesse a página Contas de serviço.

      Acessar 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 console do Google Cloud.

    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.11.0 \
      --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.11.0 //
      --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. As futuras versões de proxy também serão divulgadas no fórum de anúncios do Cloud SQL nos Grupos dos Google (em inglês).

A seguir