Como ativar o IAP para apps locais

Neste guia, você aprenderá como proteger um app local baseado em HTTP fora do Google Cloud usando o Identity-Aware Proxy (IAP), por meio da implantação de um conector.

Para mais informações sobre como o IAP protege apps e recursos locais, consulte a visão geral do IAP para apps locais.

Antes de começar

Antes de começar, os seguintes itens são necessários:

  • Ter o SDK do Google Cloud instalado.
  • Ter um app local baseado em HTTP que possa ser acessado por meio de um nome de host de DNS e aceite tráfego HTTPS. Esse app também precisa ter a própria instância do IAP.
  • Se o aplicativo não estiver acessível publicamente, estabeleça uma conexão entre o Google Cloud e o aplicativo local usando o Cloud Interconnect.
  • Ter um membro do Cloud Identity com o papel proprietário no seu projeto do Google Cloud.
  • Ter um projeto do Google Cloud com o faturamento ativado.
  • Ter o nome do host de DNS que será usado como o ponto de entrada do tráfego para o Google Cloud. Por exemplo, www.hr-domain.com.
  • Ter o nome do host de DNS do seu app local. Por exemplo, hr-internal.domain.com.
  • Ter um certificado SSL ou TLS para o nome do host de DNS que será usado como ponto de entrada do tráfego para o Google Cloud. É possível usar um certificado autogerenciado ou gerenciado pelo Google que você já tenha. Se você ainda não tem um certificado, crie um usando a Let's Encrypt (Vamos criptografar, em inglês).

Como ativar as APIs obrigatórias

Para configurar um conector do IAP, ative as seguintes APIs:

  1. Ative a API do Compute Engine.

    Ativar a API do Compute Engine

  2. Ative a API do Google Kubernetes Engine.

    Ativar a API do Google Kubernetes Engine

  3. Ative a API do Cloud Deployment Manager V2.

    Ativar a API do Cloud Deployment Manager V2

Como criar uma implantação de conector do IAP

Um conector do IAP é um modelo doDeployment Manager. Quando implantado, esse modelo gera os recursos e as regras de roteamento necessários para encaminhar solicitações autorizadas e autenticadas pelo IAP para seu app local. Nas seções a seguir, você verá como configurar e implantar um conector do IAP.

Como definir permissões

Para implantar um conector do IAP, é necessário que a conta do agente de serviço de APIs do Google do seu projeto tenha o papel de administrador do Kubernetes Engine. Essa conta de serviço permite que o Deployment Manager crie um cluster do Google Kubernetes Engine (GKE) e todos os recursos a serem executados nele.

Para conceder o papel de administrador do Kubernetes Engine à conta, faça o seguinte:

  1. Acessar a página do IAM.
    Acessar a página "IAM"
  2. Edite as permissões do membro PROJECT_NUMBER@cloudservices.gserviceaccount.com clicando em Editar membro .
  3. Clique em Adicionar outro papel e selecione Kubernetes > Administrador do Kubernetes Engine na lista suspensa Papel.
  4. Clique em Salvar.

Sua conta do agente de serviço das APIs do Google agora tem os papéis de editor e administrador do Kubernetes Engine para seu projeto.

Como criar um recurso de certificado SSL

É necessário ter um novo recurso de certificado SSL para configurar o proxy do balanceador de carga HTTP(S) do conector do IAP.

Para criá-lo com a ferramenta de linha de comando gcloud usando seu certificado SSL ou TLS e chave privada, faça o seguinte:

  1. Crie um recurso de certificado SSL usando compute ssl-certificates create.

    gcloud compute ssl-certificates create CERTIFICATE_NAME --private-key=PRIVATE_KEY_FILE.pem
    --certificate=CERTIFICATE_FILE.pem
    
  2. Se preferir, confirme se seu novo recurso de certificado SSL está disponível.

    1. Acesse a página "Balanceamento de carga".
      Acessar a página "Balanceamento de carga"
    2. Abaixo da lista de balanceadores de carga, clique no menu Avançado.
    3. Clique em Certificados.

Como fazer o download e configurar um conector do IAP

Para atender às suas necessidades de implantação, é necessário atualizar o modelo configurável do Deployment Manager usado pelo conector do IAP. Para fazer o download e configurar seu modelo, siga estas etapas:

  1. Faça o download do modelo ao clonar o repositório com o conector do IAP no GitHub (em inglês).

  2. Abra a pasta em que o repositório clonado está e atualize os campos obrigatórios no arquivo iap-connector.yaml. Para informações sobre regras de roteamento, consulte a visão geral do IAP para apps locais.

         resources:
         - name: iap-connector
           type: iap-connector.py
           properties:
             zone: ZONE
             serviceAccountName: PROJECT_NUMBER@cloudservices.gserviceaccount.com
             routing:
             - name: BACKEND_SERVICE_NAME
               mapping:
               - name: host
                 source: SOURCE
                 destination: DESTINATION_URL
             tls:
             - CERTIFICATE_NAME
    
    Campos obrigatórios:

    • zone: a zona em que o conector do IAP será implantado. Por exemplo, us-central1-a.
    • serviceAccountName: o nome da conta do agente de serviço de APIs do Google que recebeu o papel de administrador do Kubernetes Engine.
    • routing.mapping.source: o URL das solicitações que chegam ao Google Cloud. Esse URL é por onde o tráfego entra no ambiente.
    • routing.mapping.destination: o URL do app local para onde o IAP encaminha o tráfego depois do usuário ter sido autorizado e autenticado. O IAP encaminha o tráfego para esse URL usando TLS e o aplicativo hospedado nesse local é necessário para fornecer um endpoint HTTPS.
    • tls: o nome do seu recurso de certificado SSL.
    • routing.name: o nome do novo serviço de back-end por trás do balanceador de carga HTTP(S).

    Campos opcionais:

    • initialNodeCount: o número inicial de nós que você quer no cluster. Por padrão, a contagem inicial é de 3.
    • imageVersion: a versão da imagem do Ambassador (em inglês) a ser executada. Por padrão, essa versão é a 0.39.0.
    • replicas: o número inicial de réplicas para a implantação do Ambassador. Por padrão, esse número é 3.

    Para a especificação do conector do IAP, consulte o arquivo iap-connector.py.schema (em inglês).

  3. Salve seu arquivo iap-connector.yaml atualizado.

Como implantar um conector do IAP

  1. Para implantar o conector do IAP e o respectivo cluster do Google Kubernetes Engine, execute o comando a seguir na gcloud:

    gcloud deployment-manager deployments create NAME_OF_DEPLOYMENT --config=iap-connector.yaml
    
  2. Se preferir, monitore a implantação no Console do Google Cloud:

    1. Acesse a página do Deployment Manager.
      Acessar a página do Deployment Manager
    2. Selecione o nome da sua implantação para ver o status dela. Se a implantação do conector do IAP ainda for muito recente, possivelmente será necessário aguardar alguns minutos até que ela seja concluída para poder ver o status.
  3. Se preferir, consulte o status do seu cluster do Google Kubernetes Engine na página de clusters do Kubernetes.
    Acessar a página de clusters do Kubernetes

  4. A implantação cria um balanceador de carga HTTP(S) do Cloud Load Balancing. Associe seu domínio de origem ao endereço IPv4 público do balanceador de carga, atualizando os registros de recursos DNS no seu gerenciador de domínio.

    Para saber o endereço IPv4 público, faça o seguinte:

    1. Acesse a página "Balanceamento de carga".
      Acessar a página "Balanceamento de carga"
    2. Clique no Nome do recurso do balanceador de carga que foi gerado.

      O endereço IPv4 está em Front-end, associado ao nome do seu certificado.

O tráfego de solicitações da Web para o app agora está sendo encaminhado do conector do IAP para seu app local.

Como configurar a tela de consentimento do OAuth

Se você ainda não configurou a tela de consentimento do OAuth do seu projeto, precisará fazê-lo. É necessário usar um endereço de e-mail e o nome do produto para isso.

  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.

Como configurar o acesso do IAP

  1. Acesse a página do Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"
  2. Selecione o projeto que você quer proteger com o IAP.
  3. Marque a caixa de seleção ao lado do recurso em que você quer adicionar membros.
  4. No painel lateral à direita, clique em Adicionar membro.
  5. Na caixa de diálogo Adicionar membros que é exibida, insira os endereços de e-mail de grupos ou indivíduos que terão o papel Usuário do app da Web protegido pelo IAP no projeto.

    Os seguintes tipos de contas podem ser membros:

    • Conta do Google: user@gmail.com
    • grupo do Google: admins@googlegroups.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do espaço de trabalho do Google: example.com

    Inclua uma Conta do Google a que você tenha acesso.

  6. Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista suspensa Papéis.
  7. Clique em Salvar.

Como ativar o IAP

  1. Na página do Identity-Aware Proxy, em Recursos HTTPS, encontre o nome da implantação do conector do IAP. Para ativar o IAP,
  2. Na janela Ativar IAP que é exibida, clique em Ativar para confirmar que você quer proteger seu app local com o IAP. Depois disso, será necessário usar credenciais de login para todas as conexões com o balanceador de carga. O acesso será concedido apenas às contas com o papel usuário do app da Web protegido pelo IAP no projeto.
  3. Para confirmar se o IAP está ativado, acesse o URL interno do seu app local. Nesse caso, será exibido um prompt de autenticação.

Agora, o IAP autentica e autoriza todo o tráfego para seu app local.

Como proteger o tráfego de saída

Depois da implantação, o conector do IAP encaminha as solicitações para seu back-end local. Como a política de acesso do IAM é aplicada no conector do IAP, verifique se o IAP autenticou e autorizou todas as solicitações para seu back-end.

Para confirmar que o tráfego de saída passou pelo conector do IAP, verifique as solicitações a um cabeçalho assinado por IAP. As solicitações autenticadas e autorizadas pelo IAP têm um cabeçalho de JWT assinado por IAP anexado a elas.

Como atualizar a implantação do conector do IAP

Siga o processo abaixo para atualizar as regras de roteamento do conector do IAP e enviá-las ao cluster do GKE que foi implantado. Para mais informações, consulte Como atualizar uma implantação.

  1. Atualize seu arquivo iap-connector.yaml com os novos parâmetros de roteamento.
  2. Execute o comando gcloud a seguir:

    gcloud deployment-manager deployments update NAME_OF_DEPLOYMENT
    

Como excluir a implantação do conector do IAP

Excluir a implantação do conector desativa o IAP e deixa o app sem um sistema de autenticação do acesso. Todos os recursos criados pela implantação são removidos, incluindo as regras de roteamento.

Para excluir a implantação do conector do IAP, faça o seguinte:

  1. Acesse a página do Deployment Manager.
    Acessar a página do Deployment Manager
  2. Na lista de implantações, marque a caixa de seleção ao lado da sua implantação do IAP.
  3. No topo da página, clique em Excluir.

Se você precisar criar novamente a implantação excluída, use o arquivo de configuração original. Uma implantação recriada é considerada como nova e, portanto, utiliza recursos novos.