Ativar o IAP para o GKE

Esta página explica como proteger uma instância do Google Kubernetes Engine (GKE) com o Identity-Aware Proxy (IAP).

Vista geral

A CNA está integrada através do Ingress para o GKE. Esta integração permite-lhe controlar o acesso ao nível do recurso para os funcionários em vez de usar uma VPN.

Num cluster do GKE, o tráfego de entrada é processado pelo balanceamento de carga de HTTP(S), um componente do Cloud Load Balancing. O balanceador de carga HTTP(S) é normalmente configurado pelo controlador de entrada do Kubernetes. O controlador de entrada recebe informações de configuração de um objeto Ingress do Kubernetes associado a um ou mais objetos Service. Cada objeto Service contém informações de encaminhamento que são usadas para direcionar um pedido recebido para uma porta e um pod específicos.

A partir da versão 1.10.5-gke.3 do Kubernetes, pode adicionar a configuração do balanceador de carga associando um serviço a um objeto BackendConfig. O BackendConfig é uma definição de recurso personalizado (CRD) que é definida no repositório kubernetes/ingress-gce.

O controlador de entrada do Kubernetes lê as informações de configuração do BackendConfig e configura o equilibrador de carga em conformidade. Um BackendConfig contém informações de configuração específicas do Cloud Load Balancing e permite-lhe definir uma configuração separada para cada serviço de back-end do HTTP(S) Load Balancing.

Antes de começar

Para ativar o IAP para o GKE, precisa do seguinte:

  • Um Google Cloud projeto da consola com a faturação ativada.
  • Um grupo de uma ou mais instâncias do GKE, publicado por um equilibrador de carga HTTPS. O balanceador de carga deve ser criado automaticamente quando cria um objeto Ingress num cluster do GKE.
  • Um nome de domínio registado no endereço do seu equilibrador de carga.
  • Código da app para verificar se todos os pedidos têm uma identidade.

O IAP usa um cliente OAuth gerido pela Google para autenticar os utilizadores. Apenas os utilizadores na organização podem aceder à aplicação com a funcionalidade de IAP. Se quiser permitir o acesso a utilizadores externos à sua organização, consulte o artigo Ative o IAP para aplicações externas.

Ativar CNA

Se não tiver configurado o ecrã de consentimento OAuth do seu projeto, é-lhe pedido que o faça. Para configurar o ecrã de consentimento OAuth, consulte o artigo Configurar o ecrã de consentimento OAuth.

Se estiver a executar clusters do GKE na versão 1.24 ou posterior, pode configurar o IAP e o GKE através da API Kubernetes Gateway. Para o fazer, conclua os passos seguintes e, em seguida, siga as instruções em Configurar CAsI. Não configure o dispositivo BackendConfig.

Configurar o acesso à IAP

  1. Aceda à página Identity-Aware Proxy.
    Aceda à página Identity-Aware Proxy
  2. Selecione o projeto que quer proteger com o IAP.
  3. Selecione a caixa de verificação junto ao recurso ao qual quer conceder acesso.

    Se não vir um recurso, certifique-se de que o recurso foi criado e que o controlador de entrada do Motor de Cálculo do Google BackendConfig está sincronizado.

    Para verificar se o serviço de back-end está disponível, execute o seguinte comando gcloud:

    gcloud compute backend-services list
  4. No painel do lado direito, clique em Adicionar diretor.
  5. Na caixa de diálogo Adicionar responsáveis apresentada, introduza os endereços de email dos grupos ou indivíduos que devem ter a função Utilizador da app Web protegida pelo IAP para o projeto.

    Os seguintes tipos de principais podem ter esta função:

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

    Certifique-se de que adiciona uma Conta Google à qual tem acesso.

  6. Selecione Cloud IAP > Utilizador da app Web protegida pelo IAP na lista pendente Funções.
  7. Clique em Guardar.

Configurar o BackendConfig

Pode configurar um BackendConfig para IAP adicionando um bloco iap.

Adicionar um bloco iap ao BackendConfig

Para configurar o BackendConfig para IAP, tem de especificar o valor enabled. Certifique-se de que tem a autorização compute.backendServices.update e adicione o bloco iap ao BackendConfig.

Para as versões 1.16.8-gke.3 e superiores do GKE, use a versão da API cloud.google.com/v1. Se estiver a usar uma versão anterior do GKE, use cloud.google.com/v1beta1.

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: CONFIG_DEFAULT
  namespace: my-namespace
spec:
  iap:
    enabled: true

Associe uma porta de serviço a um BackendConfig

Também tem de associar portas de serviço ao seu BackendConfig para acionar a ativação da IAP. Uma forma de fazer esta associação é definir todas as portas do serviço como predefinição para o BackendConfig, o que pode fazer adicionando a seguinte anotação ao recurso do serviço:

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

Valide o BackendConfig

Para testar a configuração, execute kubectl get event. Se vir a mensagem "no BackendConfig for service port exists", significa que associou com êxito uma porta de serviço ao seu BackendConfig, mas não foi encontrado o recurso BackendConfig. Este erro pode ocorrer se não tiver criado o recurso BackendConfig, o tiver criado no espaço de nomes errado ou tiver escrito incorretamente a referência na anotação do serviço.

Desativar o IAP

Para desativar as CNA, tem de definir enabled como false no BackendConfig. Se eliminar o bloco IAP do BackendConfig, as definições persistem. Por exemplo, se a IAP estiver ativada e eliminar o bloqueio, a IAP continua ativada.

O que se segue?