Como configurar o Acesso privado do Google para hosts locais

O Acesso privado do Google permite que hosts locais acessem APIs e serviços do Google usando um endereço IP particular interno em vez de um endereço IP público e externo em um Cloud VPN ou conexão Cloud Interconnect.

As APIs Cloud e Developer e os serviços que os hosts locais podem acessar usando o Acesso privado do Google são os seguintes.

Alcançados com o Acesso privado do Google e com proteção de controles de serviço da VPC:

  • BigQuery
  • Dataflow (somente para o Cloud Storage)
  • Dataproc (somente criar chamada de instância)
  • Cloud Deployment Manager
  • API Cloud Storage JSON

Alcançados usando o Acesso privado do Google, mas sem a proteção de controles de serviço da VPC:

  • Cloud DNS
  • Logging
  • Monitoring
  • Pub/Sub
  • Relatório de erros do Resource Manager
  • Error Reporting
  • API Cloud Runtime Configuration

Neste documento, descrevemos como ativar o Acesso privado do Google para hosts locais.

Requisitos

Veja a seguir os requisitos para o Acesso privado do Google:

  • Você precisa ativar as APIs que quer acessar por meio da página "APIs e serviços" no Console do Google Cloud.
  • Configure rotas para que o tráfego das APIs do Google seja encaminhado pela Cloud VPN ou pela conexão do Cloud Interconnect, regras do firewall para permitir o tráfego de saída e o DNS para que o tráfego para as APIs Google seja resolvido para o intervalo IP adicionado às suas rotas. O restante deste documento descreve esse processo.

Como configurar rotas

Use o Anúncio de rota personalizada do roteador do Cloud para anunciar os endereços IP das APIs restritas do Google por meio do Cloud Router em sua rede local. O intervalo de IPs das APIs restritas do Google é 199.36.153.4/30. Embora esse seja tecnicamente um intervalo de IP público, o Google não o anuncia publicamente. Esse intervalo de IPs só pode ser acessado por hosts que acessam os projetos do Google Cloud por meio de intervalos de IP internos, como um Cloud VPN ou uma conexão do Cloud Interconnect.

Para especificar divulgações em um roteador do Cloud atual:

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.
    • Origem: selecione Intervalo de IP personalizado para especificar um intervalo de IP personalizado.
    • Intervalo de endereços IP: especifique 199.36.153.4/30.
    • Descrição: adicione uma descrição de Restricted Google APIs IPs.
  9. 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 atuais serão substituídas. O exemplo a seguir atualiza o Cloud Router my-router para anunciar todas as sub-redes e o intervalo de IPs 199.36.153.4/30 de APIs restritas do Google:

        gcloud compute routers update my-router \
            --advertisement-mode custom \
            --set-advertisement-groups all_subnets \
            --set-advertisement-ranges 199.36.153.4/30
        

    A sinalização --set-advertisement-groups aceita grupos definidos pelo Google que o Cloud Router divulga dinamicamente. É possível remover a sinalização --set-advertisement-groups para excluir divulgações de sub-rede. Para ver uma lista de todos os grupos de divulgações, consulte a sinalização advertisement-groups na documentação do SDK do Google.

  • 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 acrescenta o IP personalizado Restricted Google APIs IPs às divulgações do Cloud Router:

        gcloud beta compute routers update my-router \
            --add-advertisement-ranges Restricted Google APIs IPs
        

Para especificar divulgações em uma sessão do BGP atual:

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, clique em 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.
    • Origem: selecione Intervalo de IP personalizado para especificar um intervalo de IP personalizado.
    • Intervalo de endereços IP: especifique 199.36.153.4/30.
    • Descrição: adicione uma descrição de Restricted Google APIs IPs.
  9. 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 atuais 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 199.36.153.4/30:

        gcloud beta compute routers update-bgp-peer my-router \
            --peer-name my-bgp-session \
            --advertisement-mode custom \
            --set-advertisement-groups all_subnets \
            --set-advertisement-ranges 199.36.153.4/30
        

    A sinalização "--set-advertisement-groups" aceita grupos definidos pelo Google que a sessão do BGP anuncia dinamicamente. É possível remover a sinalização --set-advertisement-groups para excluir divulgações de sub-rede. Para ver uma lista de todos os grupos de divulgações, consulte a sinalização advertisement-groups na documentação do SDK do Google.

  • 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 acrescenta os IPs 199.36.153.4/30 das APIs do Google restritas às divulgações do Cloud Router:

        gcloud beta compute routers update-bgp-peer my-router \
            --peer-name my-bgp-session \
            --add-advertisement-ranges 199.36.153.4/30
        

Como configurar regras de firewall

Você precisa configurar seu firewall local para que o tráfego dos seus hosts locais atinja 199.36.153.4/30.

Como configurar DNS

Para usar os endereços IP restritos das APIs Google, configure seu próprio servidor DNS para resolver *.googleapis.com como um CNAME para restricted.googleapis.com. Há duas maneiras de fazer isso, cada uma com suas próprias limitações na versão Beta. As duas maneiras de fazer isso são as zonas de DNS privado do Cloud DNS e o BIND personalizado.

Como configurar o DNS com o Cloud DNS

Se você estiver na versão Beta particular para o DNS privado do Cloud DNS, use o Cloud DNS para ativar a resolução de DNS para o Acesso privado do Google.

gcloud


    gcloud alpha dns managed-zones create apis \
        --visibility private \
        --networks https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK] \
        --dns-name googleapis.com
    
    gcloud dns record-sets transaction start -z apis
    
    gcloud dns record-sets transaction add --name=*.googleapis.com. \
        --type=CNAME restricted.googleapis.com. --zone apis --ttl 300
    
    gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone apis --ttl 300
    
    gcloud dns record-sets transaction execute --zone apis
    

Como configurar o DNS com o BIND

Se você usa o BIND para resolução de DNS local, é possível configurá-lo para usar zonas de política de resposta (RPZ). Veja um exemplo de configuração do BIND:

  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; }; };

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

        include "/etc/bind/named.conf.default-zones";

    allow-query { any;};

    response-policy { zone "googleapis.zone"; };

    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 restricted.googleapis.com. restricted.googleapis.com CNAME rpz-passthru.

Caso de uso: conectividade da API Cloud Storage e configuração da política em um cenário de nuvem híbrida

Considere a situação do diagrama abaixo, em que você quer ter o seguinte comportamento:

  • Os hosts locais podem acessar as APIs Cloud Storage de modo privado, mas só podem acessar os intervalos de armazenamento no projeto em questão.
  • O projeto "sensitive-buckets" só pode ser acessado nas VMs da rede VPC e nos aplicativos locais com conexão privada.
Acesso privado do Google para caso de uso de nuvem híbrida (clique para ampliar)

Veja as etapas necessárias para essa configuração:

  1. Anunciar IPs restritos de APIs Google pelo Cloud Router

    Se você tiver um Cloud Router existente em que está atualizando a divulgação para acessar as APIs do Google, poderá configurar o acesso para um único ponto específico ou para todos os pares de um Cloud Router atual.

    Para configurar um único ponto específico de um Cloud Router atual

        gcloud compute routers update-bgp-peer [CLOUD_ROUTER] \
            --region=[CLOUD_ROUTER_REGION] \
            --peer-name=[BGP_PEER] \
            --advertisement-mode=custom \
            --set-advertisement-groups=all_subnets \
            --set-advertisement-ranges=199.36.153.4/30=access-to-secure-gcp-apis
        

    Para configurá-lo para todos os pares em um Cloud Router atual

        gcloud compute routers update [CLOUD_ROUTER] \
        --region=[CLOUD_ROUTER_REGION] \
        --add-advertisement-ranges=199.36.153.4/30=access-to-secure-gcp-apis
        

    Se você não tem um Cloud Router e precisa configurar o acesso às APIs Google privadas:

        gcloud compute routers create [CLOUD_ROUTER] \
            --region=[CLOUD_ROUTER_REGION] \
            --advertisement-mode=custom \
            --set-advertisement-groups=all_subnets \
            --set-advertisement-ranges=199.36.153.4/30=access-to-secure-gcp-apis
        
  2. Configure seu aplicativo local e DNS de modo que as solicitações de armazenamento das APIs do Google sejam feitas e resolvidas para storage.restricted.gooogleapis.com.

  3. Configure o VPC Service Controls de acordo com o guia do usuário. Para o VPC Service Controls, isso significa entrar em contato com o engenheiro de clientes e fornecer informações sobre os projetos que você quer proteger.

A seguir