Como configurar o Acesso privado do Google para hosts locais

O Acesso privado do Google para hosts locais possibilita o acesso às APIs e os serviços do Google por meio de um túnel do Cloud VPN ou da conexão do Cloud Interconnect. Os hosts não precisam de um endereço IP externo.

O Google Cloud oferece dois intervalos de VIP (endereço IP virtual) para conectividade privada: restricted.googleapis.com (199.36.153.4/30 ) e private.googleapis.com (199.36.153.8/30 ). Para mais informações sobre cada intervalo de VIP, consulte Nomes de domínio e VIPs específicos do Acesso privado do Google.

Antes de começar

  • É preciso ativar as APIs que você quer acessar na página de APIs e serviços do Console do Google Cloud.
  • Proprietários de projetos, editores e membros do IAM com o papel de administrador de rede podem criar ou atualizar sub-redes e atribuir endereços IP. Para mais informações sobre papéis, leia a documentação sobre os papéis do IAM.
  • O Acesso privado do Google requer uma rede VPC. Redes VPC de modo automático e personalizado são compatíveis. Redes legadas não são compatíveis.
  • Para configurações de rota, firewall e DNS, escolha se prefere usar o nome de domínio e o intervalo de VIP restricted.googleapis.com (199.36.153.4/30) ou private.googleapis.com (199.36.153.8/30). Para mais informações, consulte Nomes de domínio e VIPs.
  • A rede VPC já está conectada à rede local usando um túnel do Cloud VPN ou uma conexão do Cloud Interconnect.
  • A rede VPC precisa ter uma rota para o tráfego destinado a 199.36.153.4/30 ou 199.36.153.8/30 (dependendo do VIP usado), com o gateway de Internet padrão como próximo salto. Faça isso usando a rota padrão ou uma rota estática personalizada.

Como configurar o Acesso privado do Google para hosts locais

Para configurar o Acesso privado do Google para hosts locais, é necessário concluir as seguintes tarefas:

  • Configure rotas para que o tráfego da API do Google seja encaminhado por meio da sua conexão do Cloud VPN ou do Cloud Interconnect. Para mais informações, consulte Como configurar rotas. Caso você já tenha vários túneis ou interconexões, não será possível criar rotas assimétricas entre regiões de volta à sua rede local. O Google Cloud não é compatível com elas.
  • Configure regras no seu firewall local para permitir que o tráfego dos hosts locais alcance um intervalo VIP específico. Para mais informações, consulte Como configurar regras de firewall.
  • Configure o DNS para que o tráfego para as APIs do Google resolva corrigir o nome de domínio (restricted.googleapis.com ou private.googleapis.com). Para mais informações, consulte Como configurar o DNS.

Como configurar rotas

Divulgações personalizadas do Cloud Router

Use uma divulgação de rota personalizada do Cloud Router para anunciar VIP_RANGE (199.36.153.4/30 ou 199.36.153.8/30) em sua rede local. Embora esses intervalos de endereços IP sejam públicos, o Google não divulga as rotas para eles publicamente. Esses intervalos de endereços IP só podem ser acessados por hosts locais que conseguem acessar sua rede VPC por meio de endereços IP internos, como um túnel do Cloud VPN ou uma conexão do Cloud Interconnect.

Configure uma divulgação de rota personalizada para todas as sessões do BGP no Cloud Router ou selecione apenas uma sessão do BGP (por exemplo, para um único túnel do Cloud VPN ou anexo da VLAN).

Para criar uma divulgação de rota personalizada para um determinado intervalo VIP em todas as sessões do BGP em um Cloud Router existente:

Console


  1. Acesse a página do Cloud Router no Console do Google Cloud.
    Lista do Cloud Router
  2. Selecione o roteador do Cloud a ser atualizado.
  3. Na página de detalhes do Cloud Router, selecione Editar.
  4. Expanda a seção Rotas divulgadas.
  5. Em Rotas, selecione Criar rotas personalizadas.
  6. Selecione Anunciar todas as sub-redes visíveis para o Cloud Router para continuar divulgando as sub-redes disponíveis para o Cloud Router. A ativação dessa opção imita o comportamento padrão do Cloud Router.
  7. Selecione Adicionar rota personalizada para adicionar uma rota anunciada.
  8. Configure a divulgação de rota.
  9. Origem: selecione Intervalo de IP personalizado para especificar um intervalo de IP personalizado.
  10. Intervalo de endereço IP: especifique VIP_RANGE.
  11. Descrição: adicione uma descrição para este anúncio.
  12. Quando terminar de adicionar as rotas, selecione Salvar.

gcloud


Execute o comando update usando a sinalização --set-advertisement-ranges ou --add-advertisement-ranges para especificar os intervalos de IP personalizados:

  • Para definir intervalos de IP personalizados, use a sinalização --set-advertisement-ranges. Todas as divulgações personalizadas existentes serão substituídas. O exemplo a seguir atualiza o my-router do Cloud Router para divulgar todas as sub-redes e o intervalo de IPs VIP_RANGE das APIs do Google:

    gcloud compute routers update my-router \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges VIP_RANGE
    
  • Para anexar intervalos de IP personalizados a uma divulgação atual, use a sinalização --add-advertisement-ranges. Ela exige que o modo de divulgação do Cloud Router já esteja configurado como custom. O exemplo a seguir adiciona private.googleapis.com às divulgações do Cloud Router:

    gcloud compute routers update my-router \
        --add-advertisement-ranges VIP_RANGE
    

Para criar uma divulgação de rota personalizada para um determinado intervalo VIP em uma sessão específica do BGP de um Cloud Router existente:

Console


  1. Acesse a página do Cloud Router no Console do Google Cloud.
    Lista do Cloud Router
  2. Selecione o roteador do Cloud Router que contém a sessão do BGP a ser atualizada.
  3. Na página de detalhes do Cloud Router, selecione a sessão do BGP a ser atualizada.
  4. Na página de detalhes da sessão do BGP, selecione Editar.
  5. Em Rotas, selecione Criar rotas personalizadas.
  6. Selecione Anunciar todas as sub-redes visíveis para o Cloud Router para continuar divulgando as sub-redes disponíveis para o Cloud Router. A ativação dessa opção imita o comportamento padrão do Cloud Router.
  7. Selecione Adicionar rota personalizada para adicionar uma rota anunciada.
  8. Configure a divulgação de rota.
  9. Origem: selecione Intervalo de IP personalizado para especificar um intervalo de IP personalizado.
  10. Intervalo de endereço IP: especifique VIP_RANGE.
  11. Descrição: adicione uma descrição para este anúncio.
  12. Quando terminar de adicionar as rotas, selecione Salvar.

gcloud


Execute o comando update-bgp-peer, usando a sinalização --set-advertisement-ranges ou --add-advertisement-ranges para especificar os intervalos de IP personalizados.

  • Para definir intervalos de IP personalizados, use a sinalização --set-advertisement-ranges. Todas as divulgações personalizadas existentes serão substituídas. O seguinte exemplo atualiza a sessão my-bgp-session do BGP no my-router do Cloud Router para divulgar todas as sub-redes e o intervalo de IP personalizado VIP_RANGE:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges VIP_RANGE
    
  • Para anexar intervalos de IP personalizados aos atuais, use a sinalização --add-advertisement-ranges. Ela exige que o modo de divulgação do Cloud Router já esteja configurado como custom. O exemplo a seguir adiciona VIP_RANGE às divulgações do Cloud Router:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges VIP_RANGE
    

    Para saber mais informações, consulte Divulgações de rota personalizadas.

Requisito para a rota de rede VPC

A rede VPC precisa ter uma rota para o tráfego destinado a um intervalo VIP, com o gateway de Internet padrão como próximo salto. Em uma rede VPC recém-criada, é possível usar a rota padrão. No entanto, também é possível criar uma rota estática personalizada com o intervalo VIP escolhido sendo o destino e o gateway de Internet padrão como o próximo salto. Se você remover a rota padrão, será necessário criar uma rota estática personalizada.

Como configurar regras de firewall

É preciso configurar regras de firewall locais para permitir que o tráfego dos hosts locais alcance o intervalo VIP restrito ou privado.

Como configurar DNS

Configure o DNS para resolver *.googleapis.com como um CNAME para DOMAIN_NAME (restricted.googleapis.com ou private.googleapis.com) e crie o registro A apropriado para DOMAIN_NAME.

Use uma zona privada gerenciada do Cloud DNS com uma política de encaminhamento de entrada do Cloud DNS ou configure um servidor de nomes do DNS na rede local, como um BIND.

  • Com as zonas DNS privadas do Cloud DNS, é possível hospedar uma zona DNS acessível a partir de redes VPC autorizadas e, se você configurar o encaminhamento, a partir de determinados servidores de nomes locais. Crie uma zona particular para googleapis.com com um registro A para DOMAIN_NAME e um registro CNAME que direcione *.googleapis.com para DOMAIN_NAME. As zonas privadas do Cloud DNS não são compatíveis com substituições parciais. Isso significa que você só pode optar por redirecionar todas as solicitações para *.googleapis.com para DOMAIN_NAME. Consequentemente, não será possível usar APIs e serviços do Google que não são compatíveis com o uso do nome de domínio escolhido. Para mais informações, consulte Como gerenciar zonas.
  • Não é possível usar o BIND e o domínio restricted.googleapis.com ou private.googleapis.com no Dataflow porque a resolução de DNS do Dataflow não pode ser personalizada.

Como configurar o DNS com o Cloud DNS

Para ativar a resolução de DNS no Acesso privado do Google usando o Cloud DNS, use o procedimento a seguir:

gcloud


  1. Crie uma zona privada gerenciada e autorize seu uso pela rede VPC.

    gcloud dns managed-zones create apis \
        --visibility private \
        --networks https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK] \
        --dns-name googleapis.com \
        --description "Private Google APIs access"
    
  2. Crie uma política e ative o encaminhamento de entrada para sua rede VPC.

    gcloud beta dns policies create apipolicy \
        --networks https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK] \
        --enable-inbound-forwarding \
        --description "enable inbound forwarding for Private Google APIs"
    
  3. Inicie uma transação.

    gcloud dns record-sets transaction start -z apis
    
  4. Adicione registros de DNS.

    gcloud dns record-sets transaction add --name=*.googleapis.com. \
        --type=CNAME DOMAIN_NAME. --zone apis --ttl 300
    
    gcloud dns record-sets transaction add --name=DOMAIN_NAME \
        --type=A IP_ADDRESS_1 IP_ADDRESS_2 IP_ADDRESS_3 IP_ADDRESS_4\
        --zone apis --ttl 300
    

    O exemplo a seguir cria um registro DNS para o domínio private.googleapis.com:

    gcloud dns record-sets transaction add --name=private.googleapis.com. \
        --type=A 199.36.153.8 199.36.153.9 199.36.153.10 199.36.153.11 \
        --zone apis --ttl 300
    
  5. Execute a transação.

    gcloud dns record-sets transaction execute --zone apis
    
  6. Na sua rede local, ajuste seu DNS local para o endereço IP do encaminhador do Cloud DNS. Para encontrar o endereço IP do encaminhador, use o comando compute addresses list:

    gcloud compute addresses list --filter='name ~ ^dns-forwarding.*' \
        --format='csv[no-heading](address, subnetwork)'
    

Como configurar o DNS com o BIND

Se você usar o BIND na sua resolução de DNS local, poderá configurá-lo para redirecionar solicitações de *.googleapis.com para um nome de domínio específico usando zonas de política de resposta (RPZ), conforme mostra a configuração do BIND a seguir:

  1. Adicione as linhas abaixo a /etc/bind/named.conf:

    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    
  2. Adicione as linhas abaixo a /etc/bind/named.conf.options:

    options {
      directory "/var/cache/bind";
    
      dnssec-validation no;
    
      auth-nxdomain no;    # conform to RFC 1035
      listen-on-v6 { any; };
      listen-on { any; };
      response-policy { zone "googleapis.zone"; };
      allow-query { any;};
    };
    
  3. Adicione as linhas abaixo a /etc/bind/named.conf.local:

    include "/etc/bind/named.conf.default-zones";
    
    zone "googleapis.zone" {
      type master;
      file "/etc/bind/db.googleapis.zone";
      allow-query {none;};
    };
    
  4. Adicione as linhas abaixo a /etc/bind/db.googleapis.zone:

    $TTL 1H
    @                       SOA LOCALHOST. noreply.localhost(1 1h 15m 30d 2h)
                            NS  LOCALHOST.
    
    *.googleapis.com CNAME DOMAIN_NAME.
    DOMAIN_NAME CNAME rpz-passthru.
    

A seguir