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 você ainda não configurou a tela de consentimento do OAuth do seu projeto, precisará fazer isso. Para configurar a tela de consentimento do OAuth, consulte Como configurar a tela de consentimento do OAuth.

Se você estiver executando clusters do GKE versão 1.24 ou mais recente, configure o IAP e o GKE usando a API Gateway do Kubernetes. Para isso, conclua as etapas a seguir e siga as instruções em Configurar o IAP. Não configure BackendConfig.

Como configurar o acesso do 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 IAP.
  3. Marque a caixa de seleção ao lado do recurso a que você quer conceder acesso.

    Se você não encontrar um recurso, verifique se ele foi criado e se o controlador de entrada do Compute Engine 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 lateral à direita, clique em Adicionar principal.
  5. Na caixa de diálogo Adicionar principais 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 principais podem ter essa função:

    • Conta do Google: user@gmail.com
    • grupo do Google: admins@googlegroups.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: 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 configurar o BackendConfig

Para configurar um BackendConfig para o IAP, adicione um bloco iap.

Como incluir um bloco iap em BackendConfig

Para configurar o BackendConfig para o IAP, especifique o valor de enabled. Verifique se você tem a permissão compute.backendServices.update e adicione o bloco iap ao BackendConfig.

Para as versões 1.16.8-gke.3 e mais recentes do GKE, use a versão da API cloud.google.com/v1. Se você estiver usando 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

Associar uma porta de serviço a um BackendConfig

Você também precisa associar as portas de serviço ao BackendConfig para acionar a ativação do IAP. Uma forma de fazer isso é tornar todas as portas de serviço como padrão para seu BackendConfig. Para isso, inclua a anotação a seguir no recurso Service:

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

Verificar o BackendConfig

Para testar a configuração, execute kubectl get event. Se aparecer a mensagem "no BackendConfig for service port exists", significará que a porta de serviço foi associada ao seu BackendConfig, mas o recurso BackendConfig não foi encontrado. Esse erro poderá ocorrer se o recurso BackendConfig ainda não tiver sido criado, se ele tiver sido criado no namespace errado ou se a referência na anotação do Service tiver sido digitada com incorretamente.

Como desativar o IAP

Para desativar o IAP, defina enabled como false no BackendConfig. Se você excluir o bloco do IAP do BackendConfig, as configurações serão mantidas. Por exemplo, se o IAP estiver ativado e você excluir o bloco, o IAP ainda será ativado.

O que se segue?