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.
- Saiba como criar um Ingress para HTTPS.
- 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.
- Saiba como obter a identidade do utilizador.
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
If you haven't configured your project's OAuth consent screen, you'll be prompted to do so. To configure your OAuth consent screen, see Setting up your OAuth consent screen.
If you are running GKE clusters version 1.24 or later, you can configure
IAP and GKE by using the Kubernetes Gateway API. To do so, complete
the following steps and then follow the instructions in
Configure IAP.
Do not configure BackendConfig.
Setting up IAP access
-
Go to the
Identity-Aware Proxy page.
Go to the Identity-Aware Proxy page - Select the project you want to secure with IAP.
-
Select the checkbox next to the resource you want to grant access to.
If you don't see a resource, ensure that the resource is created and that the BackendConfig Compute Engine ingress controller is synced.
To verify that the backend service is available, run the following gcloud command:
gcloud compute backend-services list - On the right side panel, click Add principal.
-
In the Add principals dialog that appears, enter the email addresses of groups or
individuals who should have the IAP-secured Web App User role for the project.
The following kinds of principals can have this role:
- Google Account: user@gmail.com
- Google Group: admins@googlegroups.com
- Service account: server@example.gserviceaccount.com
- Google Workspace domain: example.com
Make sure to add a Google Account that you have access to.
- Select Cloud IAP > IAP-secured Web App User from the Roles drop-down list.
- Click Save.
Configuring BackendConfig
You can configure a BackendConfig for IAP by adding an iap block.
Adding an iap block to the BackendConfig
To configure the BackendConfig for IAP, you need to specify the
enabled value. Ensure
that you have the compute.backendServices.update permission and add the
iap block to BackendConfig.
For GKE versions 1.16.8-gke.3 and higher, use the cloud.google.com/v1 API version.
If you are using an earlier GKE version, use cloud.google.com/v1beta1.
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: CONFIG_DEFAULT namespace: my-namespace spec: iap: enabled: true
Associate a service port with a BackendConfig
You also need to associate Service ports with your BackendConfig to trigger turning on IAP. One way to make this association is to make all ports for the service default to your BackendConfig, which you can do by adding the following annotation to your Service resource:
metadata: annotations: beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'
Verify the BackendConfig
To test the configuration, run kubectl get event. If you see the message
"no BackendConfig for service port exists", then you successfully
associated a service port with your BackendConfig, but the BackendConfig
resource wasn't found. This error can occur if you haven't created the BackendConfig resource,
created it in the wrong namespace, or misspelled the reference in the Service annotation.
Turning IAP off
To turn IAP off, you must set enabled to
false in the BackendConfig. If you delete the IAP
block from BackendConfig, the settings will persist. For example, if IAP is
enabled and you delete the block then IAP will still be turned on.
O que se segue?
- Saiba como configurar a RFC no GKE.
- Saiba como configurar o Cloud Armor para o GKE.
- Saiba mais sobre o recurso BackendConfig.