Como configurar o IAP para Compute Engine

Neste guia, você aprenderá como configurar uma instância do Compute Engine com o Identity-Aware Proxy (IAP). Se sua instância do Compute Engine já está configurada e você apenas precisa ativar o IAP, consulte Como ativar o IAP para o Compute Engine.

Objetivos

Neste tutorial, você aprenderá a:

  • criar um modelo de instância do Compute Engine e um grupo de instâncias gerenciadas (MIG);
  • conseguir um nome de domínio e um certificado;
  • criar um balanceador de carga HTTPS com um certificado;
  • ativar o IAP;
  • testar o funcionamento do IAP.

Custos

Neste tutorial, há componentes faturáveis do Google Cloud, entre eles:

  • Compute Engine
    • Quatro máquinas virtuais (VMs, na sigla em inglês)
  • Rede
    • Regra de encaminhamento global do balanceador de carga
    • Tráfego de entrada

Para ter uma estimativa dos custos com base no uso previsto, acesse a calculadora de preços.

Usuários novos do Cloud Platform podem ter direito a uma avaliação gratuita.

Antes de começar

Antes de iniciar este tutorial, realize estas ações:

  1. Selecione ou crie um projeto do Google Cloud.
    ACESSAR A PÁGINA "PROJETOS"

  2. Ative o faturamento no projeto. Saiba como Modificar as configurações de faturamento de um projeto.

Etapa 1: criar um modelo do Compute Engine

No Console do Cloud, acesse a página Compute Engine > Criar um modelo de instância e selecione o projeto em você quer criar o modelo.

ACESSAR A PÁGINA "CRIAR UM MODELO DE INSTÂNCIA"

Use os valores padrão, exceto estes:

  • Tipo de máquina:
    • micro (f1-micro)
  • Escopos de acesso:
    • Definir o acesso para cada API
    • Compute Engine: somente leitura
  • Firewall:
    • Permitir tráfego HTTP
  • Na seção Gerenciamento, em Automação > Script de inicialização, copie e cole o script a seguir:
    apt-get -y update
    apt-get -y install git
    apt-get -y install virtualenv
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    cd python-docs-samples/iap
    virtualenv venv -p python3
    source venv/bin/activate
    pip install -r requirements.txt
    cat example_gce_backend.py |
      sed -e "s/YOUR_BACKEND_SERVICE_ID/$(gcloud compute backend-services describe my-backend-service --global --format="value(id)")/g" |
      sed -e "s/YOUR_PROJECT_ID/$(gcloud config get-value account | tr -cd "[0-9]")/g" > real_backend.py
    gunicorn real_backend:app -b 0.0.0.0:80
    

Ao terminar de atualizar valores, clique em Criar para criar o modelo.

Etapa 2: criar um grupo de instâncias gerenciadas

No Console do Cloud, acesse a página Compute Engine > Criar um novo grupo de instâncias e selecione o projeto em que você quer criar o grupo de instâncias gerenciadas.

ACESSAR A PÁGINA "CRIAR UM GRUPO DE INSTÂNCIAS"

Use os valores padrão, exceto estes:

  • Nome: my-managed-instance-group
  • Local: várias zonas
  • Modelo de instância: selecione o modelo de instância que você criou na etapa 1
  • Número de instâncias: 3
  • Verificação de integridade: selecione Criar verificação de integridade e insira os seguintes valores:

    • Nome: my-health-check
    • Protocolo: HTTP

    Para usar a nova verificação de integridade, clique em Salvar e continuar.

Quando terminar de atualizar os valores, clique em Criar para criar o grupo de instâncias gerenciadas (MIG, na sigla em inglês).

Etapa 3: conseguir um nome de domínio e um certificado

Para usar o balanceador de carga com tráfego HTTPS, você precisará de um nome de domínio e um certificado assinado. Você pode registrar um domínio no Google Domains ou usar o registro de domínios de sua escolha. Registre seu domínio antes de continuar este guia.

Configurar seu certificado

Let's Encrypt (em inglês) é uma autoridade de certificação (CA, na sigla em inglês) gratuita e sem fins lucrativos. Usando os serviços dela, você criará um certificado que identifica seu site para seus usuários.

Sua CA precisa verificar se você tem o nome de domínio que registrou. Nas etapas abaixo, você criará uma VM para autenticar seu domínio na CA.

Criar uma VM para autenticar a propriedade do domínio

No Console do Cloud, acesse a página Compute Engine > Criar uma instância.

ACESSAR A PÁGINA "CRIAR UMA INSTÂNCIA"

Use os valores padrão, exceto estes:

  • Nome: certbot-vm
  • Tipo de máquina: micro (f1-micro)
  • Escopos de acesso:
    • Definir o acesso para cada API
    • Compute Engine: leitura/gravação
  • Imagem do disco de inicialização:
    • Debian GNU/Linux 9 (Stretch)
  • Firewall:
    • Permitir tráfego HTTP
    • Permitir tráfego HTTPS

Quando terminar de atualizar valores, clique em Criar para criar a instância de VM. Anote o endereço IP externo da VM que você acabou de criar. Você precisará dele na próxima etapa.

Configurar seu domínio para apontar para a VM

Para configurar seu domínio para apontar para a VM, siga as etapas abaixo para configurar registros A:

  1. Acesse a conta do seu domínio no host de domínio.
  2. Encontre a página onde atualizar os registros DNS do seu domínio. O nome dessa página pode ser algo como "Gerenciamento de DNS", "Gerenciamento de servidor de nomes" ou "Configurações avançadas".
  3. Mude seus registros A para os seguintes valores:
    • Nome/Host/Alias: @
    • Valor: o endereço IP externo da VM que você criou para autenticar a propriedade do domínio acima.
    • TTL: o padrão do seu registrador ou 86400 (um dia).
  4. Aguarde a atualização do registro DNS. A propagação do registro adicionado pode levar até um dia.

Para mais informações, consulte Sobre os registros A.

Testar o servidor

Para testar se o servidor está funcionando corretamente, siga as etapas abaixo:

  1. No Console do Cloud, acesse a página Compute Engine > Instâncias de VM.
    ACESSAR A PÁGINA "INSTÂNCIAS DE VM"

  2. Em Conectar na certbot-vm, clique em SSH.

  3. Execute os seguintes comandos para executar um pequeno servidor da Web em sua VM:

      mkdir web
      cd web
      echo "Hello" > index.html
      sudo busybox httpd -v -f
    
  4. Use um navegador da Web para acessar o nome de domínio registrado anteriormente. O navegador exibirá Hello e sua sessão SSH mostrará uma mensagem com ... response:200. Se isso não ocorrer, aguarde alguns minutos e repita esta etapa.

  5. Após o teste ser bem-sucedido, pressione Ctrl+C para parar o servidor da Web.

Criar um certificado

Para criar um certificado, registre-se na Let's Encrypt (em inglês) executando os seguintes comandos na VM, em que YOUR_DOMAIN é seu nome de domínio, sem incluir protocolo:

sudo pkill busybox
sudo apt-get install -y certbot
sudo certbot certonly --standalone -d YOUR-DOMAIN

Durante esse processo, a Let's Encrypt poderá solicitar um endereço de e-mail para que possa enviar um lembrete quando seu certificado estiver prestes a expirar (por padrão, 3 meses após a emissão). Você também precisa concordar com os Termos de Serviço estabelecidos pela Let's Encrypt.

Quando o registro estiver concluído, você verá esta mensagem: Congratulations! Your certificate and chain have been saved at...

Adicionar o certificado ao seu projeto

Para adicionar o certificado ao seu projeto, execute os comandos a seguir na VM:

sudo su
cd /etc/letsencrypt/live/YOUR_DOMAIN
gcloud compute ssl-certificates create my-cert --certificate=fullchain.pem --private-key=privkey.pem

Depois de criar o certificado, você verá uma mensagem parecida com esta: Created [https://www.googleapis.com/compute/v1/projects/example-project/global/sslCertificates/my-cert].

Antes de continuar, encerre a sessão SSH.

Etapa 4: criar um balanceador de carga

Antes de iniciar esta etapa, feche a sessão SSH iniciada na etapa anterior. Quando estiver pronto, siga as etapas abaixo para criar um balanceador de carga:

  1. No Console do Cloud, acesse a página Serviços de rede > Criar um balanceador de carga e selecione o projeto em que você quer criar um balanceador de carga.
    ACESSAR A PÁGINA "CRIAR BALANCEADOR DE CARGA"

  2. Em Balanceamento de carga HTTP(S), clique em Iniciar configuração.

  3. Selecione Da internet para minhas VMs.

  4. Na página Novo balanceador de carga HTTP(S) externo exibida, insira um Nome para seu balanceador de carga.

  5. Clique em Configuração de back-end e selecione Serviços de back-end > Criar um serviço de back-end.

  6. No painel Criar serviço de back-end, na caixa Nome, insira my-backend-service.

  7. Em Novo back-end, use os valores padrão, exceto:

    • Grupo de instâncias: my-managed-instance-group
  8. Em Verificação de integridade, selecione my-health-check.

  9. Quando terminar de atualizar os valores, clique em Criar. O painel Novo balanceador de carga HTTP(S) reaparecerá.

  10. Clique em Regras de host e de caminho para carregar os valores padrão. Você não precisa adicionar nenhuma regra.

  11. Clique em Configuração do front-end. Use os valores padrão, exceto:

    • Protocolo: HTTPS
    • Endereço IP: clique em Criar endereço IP
      • Insira um Nome a ser associado ao seu novo endereço IP estático.
      • Clique em Reservar para reservar o endereço IP estático.
    • Certificado: my-cert
  12. Quando terminar de inserir os valores de configuração de front-end, clique em Concluído. O painel Novo balanceador de carga HTTP(S) externo reaparecerá.

  13. Em Novo balanceador de carga HTTP(S) externo, clique em Criar. A página Balanceamento de carga será exibida e o novo balanceador de carga será criado na respectiva lista.

  14. Depois que o Console do Cloud criar o novo balanceador de carga, clique no nome dele e anote o endereço IP externo em Detalhes > Front-end. Você precisará dessa informação na próxima etapa.

Configurar seu domínio para apontar para o balanceador de carga

Para configurar seu domínio para apontar para o balanceador de carga, configure os registros A seguindo as etapas abaixo:

  1. Acesse a conta do seu domínio no host de domínio.
  2. Encontre a página onde atualizar os registros DNS do seu domínio. O nome dessa página pode ser algo como "Gerenciamento de DNS", "Gerenciamento de servidor de nomes" ou "Configurações avançadas".
  3. Mude seus registros A para os seguintes valores:
    • Nome/Host/Alias: @
    • Valor: o endereço IP externo do balanceador de carga que você criou acima. Não inclua a porta :443 no seu registro DNS.
    • TTL: o padrão do seu registrador ou 86400 (um dia).
  4. Aguarde a atualização do registro DNS. A propagação do registro que você acabou de adicionar pode levar até um dia.
  5. Para testar o balanceador de carga, acesse seu domínio com um protocolo https:// em um navegador da Web.
    • Se o balanceador de carga ainda não estiver configurado, você verá erros "HTTP 502".
    • Quando o balanceador de carga estiver pronto, você verá "Solicitação não autorizada".

Para mais informações, consulte Sobre os registros A.

Reiniciar suas VMs

Para autenticar corretamente as solicitações do IAP, reinicie as VMs no seu MIG, seguindo as etapas abaixo:

  1. No Console do Cloud, acesse a página Compute Engine > Grupos de instâncias.
    ACESSAR A PÁGINA "GRUPOS DE INSTÂNCIAS"
  2. Clique em my-managed-instance-group.
  3. Na parte superior da página de detalhes do grupo de instâncias, clique em Reinicialização/substituição contínua.
  4. Na página Reiniciar/substituir instâncias de my-managed-instance-group que é exibida, defina os valores a seguir:
    • Operação: reiniciar
    • Máximo indisponível: três instâncias de três instâncias
    • Tempo mínimo de espera: 0s
  5. Quando terminar de atualizar os valores, clique em Reiniciar.

Etapa 5: configurar o IAP

Configurar seu firewall

Em seguida, configure seu firewall para bloquear o acesso às VMs subjacentes e permitir somente o acesso por meio do IAP:

  1. No Console do Cloud, acesse Rede VPC > Regras de firewall.
    ACESSAR A PÁGINA "REGRAS DE FIREWALL"
  2. Marque a caixa de seleção ao lado das regras a seguir:
    • default-allow-http
    • default-allow-https
    • default-allow-internal
  3. Clique em Excluir.
  4. Clique em Criar regra de firewall e defina os valores a seguir:
    • Nome: allow-iap-traffic
    • Destinos: todas as instâncias na rede
    • Intervalos de IPs de origem (pressione Enter depois de colar cada valor na caixa):
      • 130.211.0.0/22
      • 35.191.0.0/16
    • Protocolos e portas:
      • Protocolos e portas especificados
      • tcp:80
  5. Quando terminar de atualizar os valores, clique em Criar.

Configurar o IAP

Para configurar o IAP no seu projeto, siga as etapas abaixo:

  1. No Console do Cloud, acesse a página Segurança > Proxy com reconhecimento de identidade e selecione o projeto para o qual você quer ativar o IAP.
    ACESSAR A PÁGINA "IDENTITY-AWARE PROXY"
  2. Se a tela de consentimento do OAuth ainda não tiver sido configurada no seu projeto, você será solicitado a fazê-lo:

    1. Acesse a tela de consentimento OAuth.
      Configurar tela de consentimento
    2. Em E-mail de suporte, selecione o endereço de e-mail que você quer exibir como um contato público. Ele precisa ser seu endereço de e-mail ou um Grupo do Google que você tenha.
    3. Digite o Nome do aplicativo que você quer exibir.
    4. Adicione os detalhes opcionais que você quiser.
    5. Clique em Save.

    Para alterar as informações na tela de consentimento do OAuth posteriormente, como o nome do produto ou o endereço de e-mail, repita as etapas anteriores.

  3. Ao lado de my-backend-service,

  4. Na janela Ativar IAP que aparece, marque a caixa de seleção ao lado de "Li os requisitos de configuração e configurei meu recurso do Compute Engine de acordo com a documentação".

  5. Clique em Ativar.

Adicionar membros à lista de acesso

Agora, você adicionará membros à lista de acesso do IAP no seu projeto.

  1. Na página IAM e administrador > Identity-Aware Proxy, na seção Acessoà direita, clique em Adicionar.
  2. Insira os membros que receberão acesso, incluindo você mesmo. Os membros podem ser os seguintes:
    • Contas do Google: user@gmail.com
    • Grupos do Google: admins@googlegroups.com
    • Contas de serviço: server@example.gserviceaccount.com
    • Domínios do G Suite: example.com

Etapa 6: testar o IAP

Para testar se o IAP está funcionando corretamente, siga as etapas abaixo:

  1. Acesse seu domínio em um navegador da Web.
    1. Se aparecer "Solicitação não autorizada", tente novamente em alguns minutos.
  2. Quando aparecer a tela de login do Google, conecte-se usando a Conta do Google a que você concedeu acesso na etapa anterior.
  3. Você verá uma mensagem como esta: "Hi, user@example.com. I am my-managed-instance-group-29z6."
  4. Tente atualizar a página. Seu navegador mostrará os nomes das três máquinas em seu grupo de instâncias gerenciadas. Trata-se do balanceador de carga distribuindo tráfego pelas VMs do grupo.

Parabéns! Você ativou o serviço de balanceamento de carga usando o IAP.

Como fazer a limpeza

Para evitar cobranças dos recursos usados neste tutorial na conta do Google Cloud Platform, siga estas etapas:

Depois de configurar o IAP para o Compute Engine, limpe os recursos criados no Google Cloud para que eles não sejam faturados no futuro. Nas seções a seguir, você aprenderá a excluir ou desativar esses recursos.

Como excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar a página "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir instâncias

Para excluir uma instância do Compute Engine:

  1. No Console do Cloud, acesse a página Instâncias de VM.

    Acessar a página "Instâncias de VMs"

  2. Marque a caixa de seleção para instância que você quer excluir.
  3. Clique em Excluir para remover a instância.

Como excluir regras de firewall para a rede padrão

Para excluir uma regra de firewall:

  1. No Console do Cloud, acesse a página Regras de firewall:

    Acessar a página "Regras de firewall"

  2. Clique na caixa de seleção para a regra de firewall que você quer excluir.
  3. Clique em Excluir para remover a regra de firewall.

A seguir

  • Tente modificar o app de exemplo que usamos neste tutorial para exibir outros dados.
  • Leia as práticas recomendadas para entender como criar seus próprios apps e protegê-los com o IAP.