Abilitazione di IAP per GKE

Questa pagina spiega come proteggere un'istanza Google Kubernetes Engine (GKE) con Identity-Aware Proxy (IAP).

Panoramica

IAP è integrato tramite Ingress per GKE. Questa integrazione ti consente di controllare l'accesso alle risorse per i dipendenti anziché utilizzare una VPN.

In un cluster GKE, il traffico in entrata viene gestito dal bilanciamento del carico HTTP(S), un componente di Cloud Load Balancing. Il bilanciatore del carico HTTP(S) viene in genere configurato dal controller Ingress di Kubernetes. Il controller Ingress riceve le informazioni di configurazione da un oggetto Ingress Kubernetes associato a uno o più oggetti Service. Ogni oggetto Service contiene informazioni di routing utilizzate per indirizzare una richiesta in entrata a un pod e a una porta specifici.

A partire dalla versione 1.10.5-gke.3 di Kubernetes, puoi aggiungere la configurazione per il bilanciatore del carico associando un servizio a un oggetto BackendConfig. BackendConfig è una definizione di risorsa personalizzata definita nel repository kubernetes/ingress-gce.

Il controller Ingress di Kubernetes legge le informazioni di configurazione da BackendConfig e configura il bilanciatore del carico di conseguenza. Un oggetto BackendConfig contiene informazioni di configurazione specifiche per Cloud Load Balancing e consente di definire una configurazione separata per ogni servizio di backend di bilanciamento del carico HTTP(S).

Prima di iniziare

Per abilitare IAP per GKE, devi disporre di:

  • Un progetto della console Google Cloud con fatturazione abilitata.
  • Un gruppo di una o più istanze GKE, gestito da un bilanciatore del carico HTTPS. Il bilanciatore del carico deve essere creato automaticamente quando crei un oggetto Ingress in un cluster GKE.
  • Un nome di dominio registrato all'indirizzo del bilanciatore del carico.
  • Il codice dell'app per verificare che tutte le richieste abbiano un'identità.
IAP utilizza un client OAuth gestito da Google per autenticare gli utenti. Solo gli utenti all'interno dell'organizzazione possono accedere all'applicazione abilitata per IAP. Se vuoi consentire l'accesso a utenti esterni alla tua organizzazione, consulta Abilita IAP per le applicazioni esterne.

Abilitazione di IAP

如果您尚未配置项目的 OAuth 权限请求页面,系统会提示您进行配置。如需配置 OAuth 权限请求页面,请参阅设置 OAuth 权限请求页面。

如果您运行的是 GKE 1.24 版或更高版本,则可以使用 Kubernetes Gateway API 配置 IAP 和 GKE。为此,请完成以下步骤,然后按照配置 IAP 中的说明操作。请勿配置 BackendConfig。

设置 IAP 访问权限

  1. 转到 Identity-Aware Proxy 页面。
    转到 Identity-Aware Proxy 页面
  2. 选择要使用 IAP 保护的项目。
  3. 选中要授予访问权限的资源旁边的复选框。

    如果您没有看到资源,请确保已创建资源,并且 BackendConfig 和 Compute Engine Ingress 控制器已同步。

    如需验证后端服务是否可用,请运行以下 gcloud 命令:

    gcloud compute backend-services list
  4. 在右侧面板上,点击添加主账号。
  5. 在显示的添加主账号对话框中,输入群组或个人(应拥有项目的 IAP-secured Web App User 角色)的电子邮件地址。

    以下种类的主账号可以具有此角色:

    • Google 账号:user@gmail.com
    • Google 网站论坛:admins@googlegroups.com
    • 服务账号:server@example.
    • Google Workspace 网域:example.com

    请务必添加您有权访问的 Google 账号。

  6. 从角色下拉列表中选择 Cloud IAP > 受 IAP 保护的网页应用用户。
  7. 点击保存。

配置 BackendConfig

您可以通过添加 iap 块来为 IAP 配置 BackendConfig。

将 iap 块添加到 BackendConfig

如需为 IAP 配置 BackendConfig,您需要指定 enabled 值。确保您拥有 compute.backendServices.update 权限,并将 iap 块添加到 BackendConfig。

对于 GKE 1.16.8-gke.3 版及更高版本,请使用 cloud.google.com/v1 API 版本。如果您使用的是较低的 GKE 版本,请使用 cloud.google.com/v1beta1。

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

将 Service 端口与 BackendConfig 相关联

您还需要将 Service 端口与 BackendConfig 关联以触发启用 IAP。实现此操作的一种方法是将服务的所有端口默认为 BackendConfig,您可以通过向 Service 资源添加以下注释来实现此目的。

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

验证 BackendConfig

如需测试配置,请运行 kubectl get event。如果看到消息“no BackendConfig for service port exists”,则说明您已成功将服务端口与 BackendConfig 关联,但是未找到 BackendConfig 资源。如果您没有创建 BackendConfig 资源,或在错误的命名空间中创建了该资源,或在 Service 注释中拼错了引用,则会出现此错误。

关闭 IAP

要关闭 IAP,您必须在 BackendConfig 中将 enabled 设置为 false。如果您从 BackendConfig 中删除 IAP 块,则设置将保持不变。例如,如果 IAP 已启用,而您删除了该代码块,则 IAP 仍将处于启用状态。

Passaggi successivi