Como configurar o IAP para Compute Engine


Neste guia, você verá como configurar uma instância do Compute Engine com o Identity-Aware Proxy (IAP). Se você já tem sua instância do Compute Engine configurada e só 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 Google Cloud, acesse a página Compute Engine > Criar um modelo de instância e selecione o projeto em que você quer criar um 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:
    # Copyright 2021 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #      http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    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
    

Depois de concluir a atualização dos valores, clique em Criar para criar o modelo.

Etapa 2: criar um grupo de instâncias gerenciadas

No console do Google Cloud, acesse a página Compute Engine > Criar um novo grupo de instâncias e selecione o projeto em que você quer criar um 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: para alterar o número de instâncias, primeiro é necessário desativar o escalonamento automático.
  • Modo de escalonamento automático: não faça escalonamento automático
  • 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

Criar um certificado que identifique seu site para os usuários. Para informações sobre como criar um certificado, consulte Como usar certificados SSL gerenciados pelo Google.

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 Google 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. Altere 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 saber mais, consulte Sobre os registros A.

Testar o servidor

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

  1. No console do Google 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 Google 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 de aplicativo externo exibida, insira um Nome para o 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.

  13. Clique em Criar. A página Balanceamento de carga será exibida, e o novo balanceador de carga será criado na lista de balanceadores de carga.

  14. Depois que o console do Google 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. Altere 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 saber mais, 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 Google 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 seguintes valores:
    • 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. Acesse Rede VPC > Regras de firewall no console do Google Cloud.
    ACESSAR A PÁGINA "REGRAS DE FIREWALL"
  2. Marque a caixa de seleção ao lado das seguintes regras:
    • default-allow-http
    • default-allow-https
    • default-allow-internal
  3. Clique em Excluir.
  4. Clique em Criar regra de firewall e defina os seguintes valores:
    • Nome: allow-iap-traffic
    • Destinos: todas as instâncias na rede
    • Intervalos de IP de origem (pressione Enter depois de colar cada valor na caixa). Os intervalos de IP estão na lista de permissões porque é um pré-requisito para a comunicação do balanceador de carga com os back-ends.
      • 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 Google Cloud, acesse a página Segurança > Identity-Aware Proxy e selecione o projeto em que 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. Go to the OAuth consent screen.
      Configure consent screen
    2. Under Support email, select the email address you want to display as a public contact. The email address must belong to the currently logged in user account or to a Google Group for which the currently logged in user is a manager or owner.
    3. Enter the Application name you want to display.
    4. Add any optional details you'd like.
    5. Click Save.

    To change information on the OAuth consent screen later, such as the product name or email address, repeat the preceding steps to configure the consent screen.

  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 principais à lista de acesso

Em seguida, adicione principais à lista de acesso do IAP para seu projeto.

  1. Na página IAM e administrador > Identity-Aware Proxy, na seção Acessoà direita, clique em Adicionar.
  2. Insira os principais a que você quer conceder acesso, incluindo você, e atribua a eles o papel Usuário do app da Web protegido pelo IAP. Os principais podem ser:
    • Contas do Google: user@gmail.com
    • Grupos do Google: admins@googlegroups.com
    • Contas de serviço: server@example.gserviceaccount.com
    • Domínios do espaço de trabalho do Google: example.com

Etapa 6: testar o IAP

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

  1. No seu navegador da Web, navegue até seu domínio.
    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.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

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 Google Cloud, acesse a página Gerenciar recursos.

    Acessar "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 Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Marque a caixa de seleção de a instância que você quer excluir.
  3. Para excluir a instância, clique em Mais ações, clique em Excluir e siga as instruções.

Como excluir regras de firewall para a rede padrão

Para excluir uma regra de firewall:

  1. No Console do Google Cloud, acesse a página Firewall.

    Acessar o Firewall

  2. Marque a caixa de seleção para a regra de firewall que você quer excluir.
  3. Para excluir a regra de firewall, clique em Excluir.

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.