Como ativar o Cloud IAP para GKE

Nesta página, você verá como proteger uma instância do Google Kubernetes Engine com o Cloud Identity-Aware Proxy (Cloud IAP). Para ativar o Cloud IAP, conclua as seguintes tarefas:

  • Configure a tela de consentimento OAuth do seu aplicativo.
  • Configure o acesso do Cloud IAP.
  • Crie credenciais do OAuth.
  • Configure o BackendConfig.

Visão geral

O Cloud IAP é integrado por meio do Ingress ao GKE. Isso permite controlar o acesso dos funcionários em nível de aplicativo, em vez de usar uma VPN.

Em um cluster do GKE, o tráfego de entrada é processado pelo Balanceamento de carga HTTP(S), um componente do Cloud Load Balancing. O balanceador de carga HTTP(S) é normalmente configurado pelo controlador de entrada do Kubernetes. Esse controlador recebe informações de configuração de um objeto Ingress (em inglês) do Kubernetes associado a um ou mais objetos Service (em inglês). Cada objeto de serviço contém informações de encaminhamento que são usadas para direcionar uma solicitação de entrada para um determinado pod e porta.

A partir do Kubernetes versão 1.10.5-gke.3, adicione configurações do balanceador de carga associando um serviço a um objeto BackendConfig. O BackendConfig é uma definição de recurso personalizada determinada no repositório kubernetes/ingress-gce (ambos os links em inglês). Essa definição também é conhecida como CRD, na sigla em inglês.

O controlador do Kubernetes Ingress lê as informações de configuração do BackendConfig e configura o balanceador de carga de acordo. Um BackendConfig contém informações de configuração específicas do Cloud Load Balancing e permite que você defina uma configuração separada para cada serviço de back-end de balanceamento de carga HTTP(S).

Antes de começar

Para ativar o Cloud IAP para GKE, você precisará destes elementos:

  • Um projeto do Console do Google Cloud Platform com faturamento ativado.
  • Um grupo de uma ou mais instâncias do GKE, disponibilizadas por um balanceador de carga HTTPS. O balanceador de carga precisa ser criado automaticamente quando você cria um objeto de entrada em um cluster do GKE.
  • Um nome de domínio registrado no endereço do balanceador de carga.
  • O código do aplicativo para verificar se todas as solicitações têm uma identidade.

Como ativar o Cloud IAP

Como configurar a tela de consentimento OAuth

Se você não configurou a tela de consentimento OAuth do seu projeto, precisará fazer isso. Um endereço de e-mail e um nome de produto são exigidos para a tela de consentimento OAuth.
  1. Acesse a tela de consentimento do 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 de um grupo do Google que você possui.
  3. Digite o Nome do aplicativo que você quer exibir.
  4. Adicione os detalhes opcionais que você quiser.
  5. Clique em Salvar.

Para alterar as informações na tela de consentimento OAuth no futuro, como o nome do produto ou o endereço de e-mail, repita as etapas acima para configurar a tela de consentimento.

Configurar o acesso do Cloud IAP

  1. Acesse a página Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"
  2. Selecione o projeto que você quer proteger com o Cloud IAP.
  3. Marque a caixa de seleção ao lado do recurso a 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:

    • Contas do Google: usuário@gmail.com
    • Grupos do Google: admins@googlegroups.com
    • Contas de serviço: server@example.gserviceaccount.com
    • Domínios do G Suite: example.com

    Não se esqueça de adicionar 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 criar credenciais do OAuth

  1. Acesse a página Credenciais.
    Acessar a página "Credenciais"
  2. Na lista suspensa Criar credenciais, selecione ID do cliente OAuth.
  3. Em Tipo de aplicativo, selecione Aplicativo da Web.
  4. Adicione um Nome e URLs de redirecionamento autorizados no formato your_domain/_gcp_gatekeeper/authenticate, em que your_domain é um domínio a partir do qual você quer acessar seu serviço de back-end ativado para o Cloud IAP.
  5. Quando terminar de adicionar os URLs de redirecionamento autorizados, clique em Criar e em OK na janela Cliente OAuth exibida.
  6. Selecione o cliente novamente. Adicione o URL de redirecionamento universal ao campo URIs de redirecionamento autorizado no formato https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect, em que CLIENT_ID é o ID do cliente OAuth.
  7. Em IDs do cliente OAuth 2.0, ao lado das credenciais geradas, clique em Fazer o download do JSON no lado direito. Você usará essas credenciais em uma etapa posterior.

Adicionar domínios autorizados

Para acessar seu aplicativo de mais domínios no futuro, siga o processo abaixo:

  1. Acesse a página Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"
  2. Clique em Mais ao lado do recurso a que você quer adicionar um domínio e, em seguida, clique em Editar cliente OAuth.
  3. Na janela Credenciais, em URIs de redirecionamento autorizados, adicione os domínios no formato your_domain/_gcp_gatekeeper/authenticate.
  4. Ao terminar de adicionar os domínios, clique em Salvar. Agora é possível acessar o aplicativo nesses domínios com o Cloud IAP ativado.

Como configurar o BackendConfig

Para configurar o BackendConfig para Cloud IAP, crie uma chave secreta do Kubernetes e adicione um bloco iap ao BackendConfig.

Como criar uma chave secreta do Kubernetes

O BackendConfig usa uma chave secreta do Kubernetes para incorporar o cliente OAuth criado anteriormente. Os secrets e outros objetos do Kubernetes são gerenciados usando a interface de linha de comando (CLI) kubectl. Para criar uma chave secreta, execute o seguinte comando, em que client_id_key e client_secret_key são as chaves do arquivo JSON que você conseguiu por download ao criar as credenciais do OAuth acima:

kubectl create secret generic my-secret --from-literal=client_id=client_id_key \
    --from-literal=client_secret=client_secret_key

O comando acima exibe a saída para confirmar quando a chave secreta é criada com sucesso:

secret "my-secret" created

Como adicionar um bloco iap ao BackendConfig

Para configurar o BackendConfig para Cloud IAP, especifique os valores enabled e secretName. Não é possível ativar o Cloud IAP e o Cloud CDN em um BackendConfig. Se o BackendConfig não tiver um bloco do Cloud IAP, todas as configurações do Cloud IAP atuais no serviço de back-end serão herdadas. Para ativar o Cloud IAP, você precisa ter a permissão compute.backendServices.update e adicionar o bloco iap ao BackendConfig, em que my_secret é o nome do secret do Kubernetes que você criou:

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: config-default
  namespace: my-namespace
spec:
  iap:
    enabled: true
    oauthclientCredentials:
      secretName: my_secret

Você também precisa associar as portas de serviço ao BackendConfig para acionar a ativação do Cloud IAP. Uma maneira de fazer isso é tornar padrão todas as portas de serviço do seu BackendConfig. Para isso, adicione a seguinte anotação ao seu recurso de serviço.

metadata:
  annotations:
    beta.cloud.google.com/backend-config: '{"default": "config-default"}'

Para testar a configuração, execute o kubectl get event. Quando a mensagem no BackendConfig for service port exists é exibida, o BackendConfig da porta de serviço está especificado na anotação Service, mas o recurso BackendConfig não foi encontrado. Isso poderá ocorrer se você não tiver criado o recurso de BackendConfig, se tiver criado no namespace incorreto ou se tiver digitado a referência na anotação Service incorretamente.

Se o secretName fornecido não existir ou não estiver estruturado corretamente, uma das seguintes mensagens de erro será exibida:

  • BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found. Para resolver esse erro, verifique se você criou a chave secreta do Kubernetes corretamente, conforme descrito acima.
  • BackendConfig default/config-default is not valid: secret "foo" missing client_secret data. Para resolver esse erro, verifique se você criou as credenciais do OAuth corretamente e citou as chaves client_id e client_secret corretas no JSON do qual fez o download.

Quando a sinalização enabled está definida como true e o secretName está definido corretamente, o Cloud IAP está configurado para o recurso selecionado.

Como desativar o Cloud IAP

Para desativar o Cloud IAP, defina enabled como false no BackendConfig. Se você excluir o bloco do Cloud IAP do BackendConfig, as configurações serão mantidas. Por exemplo, se o Cloud IAP estiver ativado com secretName: my_secret e você excluir o bloco, o Cloud IAP ainda será ativado com as credenciais do OAuth armazenadas em my_secret.

A seguir

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

Enviar comentários sobre…

Documentação do Identity-Aware Proxy