如何限制对外部负载均衡器端点的访问

How to restrict access to an external load balancer's endpoint

我是 GCP 的新手。现在我已经在 GKE 中部署了一个 hello-world 容器。这个 hello-world 由外部负载平衡器支持,这意味着互联网上的每个人都可以访问它,只要他们有自己的 IP 地址。

我想将对此端点的访问限制为仅属于我的项目或组织的经过身份验证的用户(通过 Google SSO)。有办法吗?

您需要集成 IAP(Identity-Aware 代理)

When to use IAP

如果您想要对应用程序和资源实施访问控制策略,请使用 IAP。 IAP 与已签名 headers 或 App Engine 标准环境用户 API 一起使用以保护您的应用程序。使用 IAP,您可以设置 group-based 应用程序访问权限:员工可以访问资源,承包商无法访问资源,或者只能由特定部门访问。

Enabling IAP for GKE

IAP 是通过 Ingress for GKE 集成的。此集成使您能够控制 resource-level 员工的访问权限,而不是使用 VPN。

在 GKE 集群中,传入流量由 HTTP(S) 负载平衡(Cloud Load Balancing 的一个组件)处理。 HTTP(S) 负载均衡器通常由 Kubernetes Ingress 控制器配置。 Ingress 控制器从与一个或多个服务 object 关联的 Kubernetes Ingress object 获取配置信息。每个服务 object 都包含用于将传入请求定向到特定 Pod 和端口的路由信息​​。

从 Kubernetes 版本 1.10.5-gke.3 开始,您可以通过将服务与后端配置相关联来为负载均衡器添加配置 object。 BackendConfig 是在 kubernetes/ingress-gce 存储库中定义的自定义资源定义 (CRD)。

Kubernetes Ingress 控制器从 BackendConfig 中读取配置信息并相应地设置负载均衡器。 BackendConfig 包含特定于 Cloud Load Balancing 的配置信息,并使您能够为每个 HTTP(S) 负载平衡后端服务定义单独的配置。