GKE-Anwendungen und -Ressourcen mit IAP sichern.

Auf dieser Seite wird erläutert, wie eine Google Kubernetes Engine-Instanz (GKE) mit Identity-Aware Proxy (IAP) geschützt wird.

Informationen zum Sichern von Ressourcen, die sich nicht in Google Cloudbefinden, finden Sie unter Lokale Anwendungen und Ressourcen sichern.

Übersicht

IAP wird über Ingress für GKE eingebunden. Mit dieser Integration können Sie den Zugriff auf Ressourcenebene für Mitarbeiter steuern, anstatt ein VPN zu verwenden.

In einem GKE-Cluster wird eingehender Traffic vom HTTP(S)-Load-Balancing verarbeitet, einer Komponente von Cloud Load Balancing. Der HTTP(S)-Load-Balancer wird in der Regel vom Kubernetes-Ingress-Controller konfiguriert. Der Ingress-Controller ruft Konfigurationsinformationen von einem Kubernetes-Ingress-Objekt ab, das mit einem oder mehreren Service-Objekten verknüpft ist. Jedes Serviceobjekt enthält Routinginformationen, mit denen eingehende Anfragen an einen bestimmten Pod und Port weitergeleitet werden können.

Ab Kubernetes Version 1.10.5-gke.3 können Sie eine Konfiguration für den Load-Balancer hinzufügen. Ordnen Sie dazu einem BackendConfig-Objekt einen Dienst zu. BackendConfig ist eine benutzerdefinierte Ressourcendefinition, die im Repository kubernetes/ingress-gce definiert ist.

Der Kubernetes-Ingress-Controller liest Konfigurationsinformationen aus der BackendConfig und richtet den Load Balancer entsprechend ein. Eine BackendConfig enthält Konfigurationsinformationen, die für Cloud Load Balancing spezifisch sind, und ermöglicht es Ihnen, für jeden HTTP(S)-Load-Balancing-Backend-Dienst eine separate Konfiguration zu definieren.

Hinweis

Zum Aktivieren von IAP für GKE benötigen Sie Folgendes:

  • Ein Google Cloud Console-Projekt mit aktivierter Abrechnung.
  • Eine Gruppe mit einer oder mehreren GKE-Instanzen, die von einem HTTPS-Load-Balancer bereitgestellt werden. Der Load-Balancer sollte automatisch erstellt werden, wenn Sie in einem GKE-Cluster ein Ingress-Objekt erstellen.

  • Einen Domainnamen, der für die Adresse des Load-Balancers registriert ist.

  • Anwendungscode, der überprüft, ob alle Anfragen eine Identität haben.

IAP verwendet einen von Google verwalteten OAuth-Client, um Nutzer zu authentifizieren. Nur Nutzer innerhalb der Organisation können auf die IAP-fähige Anwendung zugreifen. Wenn Sie Nutzern außerhalb Ihrer Organisation Zugriff gewähren möchten, lesen Sie den Hilfeartikel IAP für externe Anwendungen aktivieren.

IAP aktivieren

如果您尚未配置项目的 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 仍将处于启用状态。

Nächste Schritte