Como usar APIs de uma rede externa

Neste tutorial, demonstramos como usar APIs para serviços do Google Cloud Platform (GCP) de uma rede externa, como sua rede privada no local ou a rede de outro provedor de nuvem. Com essa abordagem, os servidores locais conectados à sua rede privada podem acessar os serviços do GCP sem usar endereços IP públicos. Neste tutorial, apresentamos um exemplo em que você usa uma rede privada na Amazon Virtual Private Cloud (Amazon VPC) para emular uma rede privada no local.

Arquitetura

No diagrama a seguir, resumimos a arquitetura geral criada neste tutorial.

  • Conecte uma rede privada na Amazon VPC a uma rede virtual em seu projeto do GCP por meio de VPN de IPsec. Se você usasse uma rede privada no local em vez da Amazon VPC, usaria o Google Cloud Interconnect para ter uma conexão de rede privada com seu projeto do GCP.

  • Use o Acesso privado do Google de projetos do GCP. Os servidores que estão sendo executados fora dos projetos do GCP não podem acessar as APIs do GCP, como o Cloud Translation, usando um endereço IP interno, mesmo quando o Private Google Access está ativado. Portanto, você usa um proxy HTTP ou HTTPS em seu projeto do GCP para transferir solicitações de API de servidores externos para serviços e APIs do Google Cloud Platform usando endereços IP internos.

arquitetura geral

Objetivos

  • Ativar o Acesso privado do Google para permitir que as instâncias de VM do Compute Engine acessem as APIs do Google Cloud Platform sem usar endereços IP públicos.

  • Configurar um proxy HTTP ou HTTPS usando uma instância do Compute Engine para permitir que os servidores na Amazon VPC acessem as APIs do Google Cloud Platform sem usar endereços IP públicos.

Custos

Além disso, você pode ser cobrado pelos serviços do Amazon Web Services (AWS), como instâncias do Amazon Elastic Compute Cloud (Amazon EC2), Amazon VPC e VPN.

Antes de começar

Antes de começar este tutorial, use o console do GCP para criar um projeto do GCP e ativar o faturamento. Não use um projeto existente porque, quando terminar, você precisará excluí-lo para evitar custos adicionais.

  1. Crie um projeto do GCP para o tutorial.

    ACESSAR A PÁGINA "GERENCIAR RECURSOS"

  2. Verifique se o faturamento foi ativado para o projeto.

    Saiba como ativar o faturamento

  3. Ativar a tradução.

    HABILITAR A Tradução

    A API Compute Engine é ativada automaticamente em novos projetos.

  4. No console do GCP, abra a página Credenciais.

    ACESSAR "CREDENCIAIS"

  5. Em Criar credenciais, selecione Chave de API e clique em Fechar.

  6. Anote a string da chave de API exibida no console.

Como conectar a Amazon VPC à sua rede virtual do GCP

Neste tutorial, você usa a Amazon VPC para emular seu data center local. Para estabelecer a Amazon VPC, siga as instruções em Como usar o Cloud VPN com o Amazon Web Services, nas seções "VPN IPsec com base em política: configuração – AWS" e "VPN IPsec com base em política: configuração – IU do GCP".

  • Use a VPC padrão com o endereço de rede 172.31.0.0/16 CIDR.
  • Use a sub-rede padrão com o endereço de rede 172.31.0.0/16 CIDR.
  • Crie uma conexão VPN com a AWS usando o endereço IP estático aws-vpn como um gateway de VPN do Compute Engine.

Você usa a VPN IPsec para conectar a Amazon VPC à rede virtual do GCP criada no GCP.

gcloud

  1. Abra o Cloud Shell:

    ATIVAR o Cloud Shell

  2. Crie uma rede virtual do GCP:

    gcloud compute networks create "aws-vpn" --subnet-mode "auto"
    gcloud compute addresses create "aws-vpn" --region "asia-east1"
    

  3. Siga as instruções em Como usar o Cloud VPN com o Amazon Web Services.

  4. Para mostrar a configuração da VPN no Console do GCP, abra a página da VPN:

    ABRIR "VPN"

    Sua configuração de VPN no console do GCP terá uma aparência semelhante à imagem a seguir. A marca de seleção verde indica que o endereço IP do terminal remoto para aws-vpn está configurado corretamente.

    Configuração de VPN no console do GCP

Console

  1. No console do GCP, acesse a página Redes VPC.

    ABRIR "REDES VPC"

  2. Clique em Criar rede VPC.

  3. Defina as opções a seguir, deixando as outras como padrão:

    • Nome: aws-vpn
    • Sub-redes: Automatic
  4. Clique em Criar.

  5. Acesse a página Endereços IP externos:

    ABRIR "ENDEREÇOS IP EXTERNOS"

  6. Clique em Reservar endereços estáticos.

  7. Defina as opções a seguir, deixando as outras como padrão:

    • Nome: aws-vpn
    • Região: asia-east1
  8. Clique em Reservar.

  9. Siga as instruções em Como usar o Cloud VPN com o Amazon Web Services.

  10. Para mostrar a configuração da VPN no Console do GCP, abra a página da VPN:

    ABRIR "VPN"

    Sua configuração de VPN no console do GCP terá uma aparência semelhante à imagem a seguir. A marca de seleção verde indica que o endereço IP do terminal remoto para aws-vpn está configurado corretamente.

    Configuração de VPN no console do GCP

Como configurar a tabela de roteamento da Amazon VPC

Para permitir que as instâncias do Amazon EC2 acessem a rede virtual do GCP em seu projeto, siga estas etapas:

  1. No Console de Gerenciamento da AWS, clique na guia Tabela de rotas.

  2. Selecione Propagação de rotas e clique em Editar.

  3. Selecione Propagar em seu intervalo de IP particular de rede VPC e clique em Salvar.

Como ativar o Acesso privado do Google

Você ativa o Acesso privado do Google na sub-rede conectada à Amazon VPC.

gcloud

  1. Execute o comando a seguir no Cloud Shell:

    gcloud compute networks subnets update aws-vpn \
        --enable-private-ip-google-access --region asia-east1

Console

  1. No console do GCP, acesse a página Redes VPC:

    ABRIR "REDES VPC"

  2. Selecione a sub-rede aws vpn na região asia-east1.

  3. Clique em Editar.

  4. Na caixa Acesso privado do Google, selecione Ativado e clique em Salvar.

Como configurar regras de firewall

A próxima etapa é adicionar regras de firewall que permitam a conexão de proxy da Amazon VPC e uma conexão SSH de todas as redes externas. A conexão SSH é usada apenas para configurar a instância do proxy HTTP ou HTTPS. Para configurar o proxy sem fazer login manualmente na instância, você pode usar um script de inicialização. Nesse caso, não será necessário criar a regra de firewall da conexão SSH.

gcloud

  1. No Cloud Shell, adicione uma regra de firewall para o proxy:

    gcloud compute firewall-rules create "aws-vpn-allow-proxy" \
      --description "Allow Google private access from AWS VPC" \
      --network "aws-vpn" --allow tcp:8118 \
      --source-ranges "172.31.0.0/16" --target-tags "api-proxy"
    

    Quando a regra de firewall é criada, a saída a seguir é exibida:

    Creating firewall...done.
    NAME                 NETWORK  SRC_RANGES     RULES     SRC_TAGS  TARGET_TAGS
    aws-vpn-allow-proxy  aws-vpn  172.31.0.0/16  tcp:8118            api-proxy
    

  2. Se você não estiver usando um script de inicialização, adicione uma regra de firewall para a conexão SSH:

    gcloud compute firewall-rules create "aws-vpn-allow-ssh" \
      --description "Allow SSH from anywhere" \
      --network "aws-vpn" --allow tcp:22  --source-ranges "0.0.0.0/0"
    

    Quando a regra de firewall é criada, a saída a seguir é exibida:

    Creating firewall...done.
    NAME               NETWORK  SRC_RANGES  RULES   SRC_TAGS  TARGET_TAGS
    aws-vpn-allow-ssh  aws-vpn  0.0.0.0/0   tcp:22
    

Console

  1. No console do GCP, acesse a página Regras de firewall:

    ABRIR "REGRAS DE FIREWALL"

  2. Clique em Criar regra de firewall.

  3. Defina as opções a seguir, deixando as outras como padrão:

    • Nome: aws-vpn-allow-proxy
    • Descrição: Allow Google Private Access from Amazon VPC
    • Rede: aws-vpn
    • Tags de destino: api-proxy
    • Intervalos de IPs de origem: 172.31.0.0/16
    • Protocolos e portas: tcp:8118
  4. Clique em Criar.

  5. Clique em Criar regra de firewall.

  6. Defina as opções a seguir, deixando as outras como padrão:

    • Nome: aws-vpn-allow-ssh
    • Descrição: Allow SSH from anywhere
    • Rede: aws-vpn
    • Tags de destino: api-proxy
    • Intervalos de IPs de origem: 0.0.0.0/0
    • Protocolos e portas: tcp:22
  7. Clique em Criar.

Como criar uma instância de proxy HTTP ou HTTPS

Em seguida, você precisa criar uma instância do Compute Engine, configurá-la como um proxy HTTP ou HTTPS e fazer login.

gcloud

  1. Inicie uma instância do Compute Engine:

    gcloud compute instances create "api-proxy" \
      --zone "asia-east1-a" --machine-type "n1-standard-1" \
      --subnet "aws-vpn" --private-network-ip "10.140.0.2" \
      --tags "api-proxy"
    

    Especifique o endereço IP particular da instância que você quer usar como um endereço de proxy.

  2. Faça login na instância:

    gcloud compute ssh "api-proxy" --zone "asia-east1-a"

  3. Na sessão SSH, instale o serviço privoxy:

    sudo apt-get -y install privoxy

  4. Configure o serviço privoxy:

    sudo sed -i "s/listen-address  127.0.0.1:8118/listen-address  10.140.0.2:8118/" /etc/privoxy/config
    sudo systemctl restart privoxy
    

  5. Confirme se o serviço está configurado para aceitar conexões com o endereço IP 10.140.0.2 pela porta 8118:

    sudo netstat -nlt

    A saída será semelhante a:

    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 10.140.0.2:8118         0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
    tcp6       0      0 :::22                   :::*                    LISTEN
    

Console

  1. No console do GCP, acesse a página Instâncias de VMs:

    ABRIR "INSTÂNCIAS DE VMS"

  2. Clique em Criar.

  3. Na página Criar uma instância, defina as opções a seguir, deixando as outras como padrão:

    • Nome: api-proxy
    • Zona: asia-east1-a
  4. Abra Gerenciamento, segurança, discos, redes, locação única e selecione Rede.

  5. Defina as opções a seguir, deixando as outras como padrão:

    • Tags de rede: api-proxy
    • Interface de rede > Rede: aws-vpn
    • Interface de rede > Sub-rede: aws-vpn(10.140.0.0/20)
    • Interface de rede > IP interno primário: Custom
    • Interface de rede > Endereço IP temporário e personalizado: 10.140.0.2
  6. Clique em Concluir.

  7. Clique em Criar.

  8. Selecione a instância api-proxy e clique em SSH para abrir um terminal SSH.

  9. Na sessão SSH, instale o serviço privoxy:

    sudo apt-get -y install privoxy

  10. Configure o serviço privoxy:

    sudo sed -i "s/listen-address  127.0.0.1:8118/listen-address  10.140.0.2:8118/" /etc/privoxy/config
    sudo systemctl restart privoxy
    

  11. Confirme se o serviço está configurado para aceitar conexões com o endereço IP 10.140.0.2 pela porta 8118:

    sudo netstat -nlt

    A saída será semelhante a:

    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 10.140.0.2:8118         0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
    tcp6       0      0 :::22                   :::*                    LISTEN
    

  12. Saia da instância:

    exit
    

Neste ponto, você não precisa mais da conexão SSH com a instância. Se os padrões de segurança exigirem que você remova a regra de firewall que permite a conexão SSH, faça a seguinte operação:

gcloud

  1. Exclua a regra do firewall:

    gcloud compute firewall-rules delete "aws-vpn-allow-ssh"

Console

  1. No console do GCP, acesse a página Regras de firewall:

    ABRIR "REGRAS DE FIREWALL"

  2. Selecione aws-vpn-allow-ssh.

  3. Clique em Excluir.

Como remover um endereço IP externo da instância do proxy

Você precisa impedir que a instância do proxy use acidentalmente um endereço IP público para acessar as APIs do GCP. Nesta seção, mostramos como remover o endereço IP externo da instância do proxy.

gcloud

  1. Determine o nome da configuração:

    gcloud compute instances describe api-proxy | grep -A5 accessConfigs

    Na saída de exemplo a seguir, o nome da configuração do endereço IP é external-nat.

    - accessConfigs:
    - kind: compute#accessConfig
        name: external-nat
        natIP: 104.199.157.31
        type: ONE_TO_ONE_NAT
    kind: compute#networkInterface
    

  2. Remova o endereço IP externo, especificando o nome da configuração da etapa anterior.

    gcloud compute instances delete-access-config api-proxy --access-config-name "external-nat"

Console

  1. No console do GCP, acesse a página Instâncias de VMs.

    ABRIR "INSTÂNCIAS DE VMS"

  2. Clique em api-proxy.

  3. Clique em Editar.

  4. Clique em nic0: aws-vpn.

  5. Defina as opções a seguir, deixando as outras como padrão:

    • IP externo: None
  6. Clique em Concluir.

  7. Clique em Salvar.

Como usar uma API do Google da Amazon VPC

Nesta seção, você usa o Cloud Translation para verificar se pode usar uma API do Google Cloud Platform de uma instância do Amazon EC2 em execução na Amazon VPC.

  1. Inicie uma instância do Amazon EC2 na Amazon VPC que você criou.

  2. Conecte-se à instância do Amazon EC2 usando o terminal SSH.

  3. Crie um arquivo de mensagens de solicitação de API:

    echo '{"q": ["this is a test translation via proxy"], "target": "it"}' >/tmp/translation.json

  4. Poste uma solicitação que especifique o endereço do proxy. Substitua [YOUR_API_KEY] pela string de chave da API criada anteriormente.

    API_KEY=[YOUR_API_KEY]
    curl -H 'Content-Type: application/json' --dump-header - \
      --proxy http://10.140.0.2:8118 -d @/tmp/translation.json \
      -X POST https://translation.googleapis.com/language/translate/v2?key=${API_KEY}
    

    O serviço de tradução responde da seguinte maneira:

    HTTP/1.1 200 Connection established
    Proxy-Agent: Privoxy/3.0.21
    HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 Vary: X-Origin Vary: Referer Date: Thu, 06 Jul 2017 23:44:57 GMT Server: ESF Cache-Control: private X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN X-Content-Type-Options: nosniff Accept-Ranges: none Vary: Origin,Accept-Encoding Transfer-Encoding: chunked
    { "data": { "translations": [ { "translatedText": "Questa è una traduzione del test tramite il proxy", "detectedSourceLanguage": "en" } ] } }

Como limpar

Quando você concluir este tutorial, exclua seu projeto para evitar custos adicionais.

  1. No Console do GCP, acesse a página "Projetos".

    Acessar a página Projetos

  2. Na lista de projetos, selecione um e clique em Excluir projeto.
  3. Na caixa de diálogo, digite o código do projeto e clique em Encerrar para excluí-lo.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…