Configurar um IP privado

Nesta página, você verá como configurar uma instância do Cloud SQL para usar IP particular.

Para informações sobre como o IP particular funciona, bem como sobre os requisitos de ambiente e gerenciamento, consulte IP particular.

Antes de começar

Requisitos de API e IAM

  • Você precisa ativar a API Service Networking no projeto.
  • Se você estiver usando uma rede VPC compartilhada, também precisará ativar essa API no projeto host.

  • Para gerenciar uma conexão de acesso a serviços particulares, o usuário precisa ter as permissões do IAM a seguir. Se você não tiver as permissões necessárias, é possível que receba erros de permissões insuficientes.
    • compute.networks.list
    • compute.addresses.create
    • compute.addresses.list
    • servicenetworking.services.addPeering

    Se você estiver usando uma rede VPC compartilhada, também precisará adicionar seu usuário ao projeto host e atribuir as mesmas permissões a ele no projeto host.

Acesso privado a serviços

Ao criar uma nova rede VPC no projeto, é necessário configurar o acesso a serviços particulares para alocar um intervalo de endereços IP e criar uma conexão de serviço particular. Isso permite que os recursos na rede VPC se conectem às instâncias do Cloud SQL. O console fornece um assistente para ajudar você a definir essa configuração.

Como configurar uma instância para usar IP particular

Ao criar uma instância do Cloud SQL, é possível configurá-la para usar o IP particular. Essa configuração também pode ser feita em uma instância atual.

Como configurar o IP particular para uma nova instância

Para configurar uma instância do Cloud SQL para usar IP particular ao criar uma instância:

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. Expanda Mostrar opções de configuração.
  4. Expanda Conexões.
  5. Selecione IP privado.

    Uma lista suspensa exibirá as redes VPC disponíveis no projeto. Se o projeto for o de serviço de uma VPC compartilhada, as redes VPC do projeto host também serão exibidas.

  6. Selecione a rede VPC a ser usada.
  7. Se você vir uma mensagem indicando que precisa configurar uma conexão de serviço particular, faça o seguinte:

    1. Clique em Configurar conexão.
    2. Na seção Alocar um intervalo de IP, selecione uma destas opções:
      • Selecione um ou mais intervalos de IP ou crie um novo no menu suspenso. A lista suspensa inclui intervalos alocados anteriormente. Selecione Alocar um novo intervalo de IP e insira um novo intervalo e nome.
      • Use um intervalo de IP alocado automaticamente na sua rede..
    3. Clique em Continuar.
    4. Clique em Criar conexão.
    5. Verifique se você vê a mensagem Private service connection for network VPN_NAME has been successfully created.
  8. Opcionalmente, é possível especificar um intervalo de IP alocado para as suas instâncias usarem em conexões.
    1. Expanda Mostrar opção de intervalo de IP alocado.
    2. Selecione um intervalo de IP no menu suspenso.
  9. Conclua a configuração da instância.
  10. Clique em Criar instância.

gcloud

Verifique se o projeto está configurado para acesso a serviços particulares.

Crie sua instância do Cloud SQL usando o parâmetro --network para especificar o nome da rede VPC escolhida e a sinalização --no-assign-ip para desativar o IP público.

O valor do parâmetro --network estará no formato projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME. O PROJECT_ID é o ID do projeto da rede VPC. Se a rede VPC for compartilhada, precisará ser o ID do projeto host da VPC compartilhada.

Opcionalmente, especifique o nome de um intervalo de endereços particular usando o parâmetro --allocated-ip-range-name. Se especificado, isso define um nome de intervalo alocado e um intervalo de endereços particular é criado para a instância principal. Por exemplo, google-managed-services-default. O nome do intervalo precisa obedecer a RFC-1035 e ter de 1 a 63 caracteres. (gcloud alpha sql instances create).

Se a rede VPC for compartilhada, no seguinte comando gcloud, PROJECT_ID será o ID do projeto de serviço da VPC compartilhada.

gcloud beta sql instances create INSTANCE_ID \
--project=PROJECT_ID \
--network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME \
--no-assign-ip \
--allocated-ip-range-name=RANGE_NAME

REST v1

Crie uma instância nova com um endereço IP privado:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância
  • vpc-name: o nome da rede VPC que você quer usar para a instância.
  • allocated-ip-range: opcional. Se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. O nome do intervalo precisa obedecer a RFC-1035 e ter de 1 a 63 caracteres.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

Corpo JSON da solicitação:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "projects/project-id/global/networks/vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

REST v1beta4

Crie uma instância nova com um endereço IP privado:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância
  • vpc-name: o nome da rede VPC que você quer usar para a instância.
  • allocated-ip-range: opcional. Se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. O nome do intervalo precisa obedecer a RFC-1035 e ter de 1 a 63 caracteres.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances

Corpo JSON da solicitação:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "projects/project-id/global/networks/vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

Como configurar o IP particular para uma instância atual

Configurar uma instância atual do Cloud SQL para usar IP particular faz com que ela seja reiniciada, resultando em tempo de inatividade.

Configurar o uso de IP privado em uma instância atual:

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Clique no nome da instância para abrir a página Visão geral correspondente.
  3. Selecione Conexões no menu de navegação do SQL.
  4. Marque a caixa de seleção IP particular.

    Uma lista suspensa exibirá as redes disponíveis no projeto.

  5. Selecione a rede VPC a ser usada:
  6. Se você vir a mensagem Conexão de serviço particular obrigatória, siga estas instruções:

    1. Clique em Configurar conexão.
    2. Na seção Alocar um intervalo de IP, escolha uma destas opções:
      • Selecione um ou mais intervalos de IP ou crie um novo no menu suspenso. A lista suspensa inclui intervalos alocados anteriormente. Selecione Alocar um novo intervalo de IP e insira um novo intervalo e nome.
      • Use um intervalo de IP alocado automaticamente na sua rede.
    3. Clique em Continuar.
    4. Clique em Criar conexão.
    5. Verifique se o status da Conexão de serviço particular da rede VPC_NETWORK_NAME foi criado.
  7. Clique em Salvar.

gcloud

Verifique se o projeto está configurado para acesso a serviços particulares.

Atualize a instância do Cloud SQL usando o parâmetro --network para especificar o nome da rede VPC selecionada.

gcloud beta sql instances patch INSTANCE_ID \
--project=PROJECT_ID \
--network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME \
--no-assign-ip

REST v1

Crie uma instância nova com um endereço IP privado:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância
  • vpc-name: o nome da rede VPC que você quer usar para a instância.
  • allocated-ip-range: opcional. Se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. O nome do intervalo precisa obedecer a RFC-1035 e ter de 1 a 63 caracteres.

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances/instance-id

Corpo JSON da solicitação:

{
  "settings":
  {
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

REST v1beta4

Crie uma instância nova com um endereço IP privado:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância
  • vpc-name: o nome da rede VPC que você quer usar para a instância.
  • allocated-ip-range: opcional. Se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. O nome do intervalo precisa obedecer a RFC-1035 e ter de 1 a 63 caracteres.

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Corpo JSON da solicitação:

{
  "settings":
  {
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

Como se conectar a uma instância usando o IP privado dela

Use o acesso a serviços particulares para se conectar a instâncias do Cloud SQL do Compute Engine ou do Google Kubernetes Engine na mesma rede VPC (definida aqui como origens internas) ou de fora dessa rede (uma origem externa).

Como se conectar de uma origem interna

Para se conectar a partir de uma origem no mesmo projeto do Google Cloud que sua instância do Cloud SQL, como o proxy do Cloud SQL Auth em execução em um recurso do Compute Engine, esse recurso precisa estar no mesma rede VPC da instância do Cloud SQL.

Para se conectar de uma origem sem servidor, como doAmbiente padrão do App Engine, Cloud Run, ou Cloud Functions , o aplicativo ou função se conecta diretamente à instância pelo acesso VPC sem o proxy de autenticação do Cloud SQL.

Como se conectar de uma origem externa

É possível se conectar de um cliente em uma rede externa (redes locais ou VPC) se a rede externa estiver conectada à rede VPC a qual a instância do Cloud SQL está conectada. Para permitir conexões de uma rede externa, faça o seguinte:

  1. Verifique se a rede VPC está conectada à rede externa usando um Túnel do Cloud VPN ou um anexo da VLAN para Interconexão dedicada ou Interconexão por parceiro.
  2. Verifique se as sessões do BGP nos Cloud Routers que gerenciam os túneis do Cloud VPN e os anexos do Cloud Interconnect (VLANs) receberam prefixos específicos (destinos) da rede local.

    Não é possível importar rotas padrão (destino 0.0.0.0/0) para a rede VPC do Cloud SQL porque essa rede tem uma rota padrão local própria. As rotas locais de um destino são sempre usadas, mesmo que o peering do Cloud SQL esteja configurado para importar rotas personalizadas da rede VPC.

  3. Identifique as conexões de peering produzidas pela conexão de serviços particulares: Dependendo do serviço, ela pode criar uma ou mais das seguintes conexões de peering, mas não necessariamente todas elas:
    • cloudsql-mysql-googleapis-com
    • cloudsql-postgres-googleapis-com
    • servicenetworking-googleapis-com
  4. Atualize todas as conexões de peering para ativar a opção Exportar rotas personalizadas.
  5. Identifique o intervalo alocado usado pela conexão de serviços particulares.
  6. Crie uma divulgação de rota personalizada do Cloud Router para o intervalo alocado nos Cloud Routers que gerencia sessões do BGP para os túneis do Cloud VPN ou anexos do Cloud Interconnect (VLANs).

Como se conectar usando o Cloud Shell

No momento, o Cloud Shell não aceita se conectar a uma instância do Cloud SQL que tenha apenas um endereço IP particular.

Como se conectar de endereços que não sejam RFC 1918

RFC 1918 especifica os endereços IP que são atribuídos para uso interno (ou seja, em uma organização) e não são roteados na Internet. São eles:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

As conexões com uma instância do Cloud SQL usando um endereço IP privado são autorizadas automaticamente para intervalos de endereços RFC 1918. Dessa forma, todos os clientes particulares podem acessar o banco de dados sem passar pelo proxy.

Os intervalos de endereços não RFC 1918 (aqueles que não estão no espaço RFC 1918) precisam ser configurados como redes autorizadas.

Para se conectar a partir de um endereço que não seja RFC 1918, você precisa definir a autorização de IP por instância para permitir o tráfego de intervalos de endereços não RFC 1918.

Por exemplo, use um comando gcloud como este:

gcloud sql instances patch INSTANCE_NAME \
--authorized-networks=192.88.99.0/24,11.0.0.0/24

Por padrão, o Cloud SQL não grava as rotas de sub-rede não RFC 1918 da sua VPC. É necessário atualizar o peering de rede ao Cloud SQL para exportar rotas que não sejam RFC 1918.

gcloud compute networks peerings update PEERING_CONNECTION \
--network=NETWORK \
--export-subnet-routes-with-public-ip \
--project=PROJECT_ID
  • PEERING_CONNECTION é o nome da conexão de peering produzida pela conexão de serviços particulares entre sua rede VPC e a rede produtora de serviços.
  • NETWORK é o nome da sua rede VPC.
  • PROJECT_ID é o ID do projeto da rede VPC. Use o ID do projeto de host se você estiver usando a VPC compartilhada.

Solução de problemas

Consulte solução de problemas para problemas de conectividade conhecidos e depuração de problemas de conexão para receber ajuda com o autodiagnóstico.

A seguir