网关安全性


本页面介绍保护 Google Kubernetes Engine (GKE) 中的网关的不同方法。您还可以了解如何保护网关

网关安全性的工作原理

网关表示负载均衡器的前端。有两种路径可用于保护网关的身份验证和加密:

  • 客户端到网关:流量源自客户端,并在网关终止。
  • 网关到 Pod:流量源自网关,并在后端 Pod 终止。

下图展示了对网关进行身份验证和加密的路径:

本页面介绍了如何使用在 Gateway 级层上传和管理的证书来保护客户端到 Gateway 的路径。如需了解如何保护 Gateway 到 Pod 的流量,请参阅使用 TLS 保护负载均衡器到应用的流量

优势

您可以使用 Gateway API 以多种不同方式保护应用,网关 API 让与网关进行交互的不同角色有了更多灵活性。

网域和 TLS 配置归谁所有?

Gateway API 模型引入了两个使用或部署网关的角色:

  • 平台管理员:集群运算符是整个集群的管理员。政策、网络访问和应用权限由其管理。
  • 应用开发者:应用开发者定义其应用和服务配置。

下图显示了网关和 HTTPRoute 资源中影响两个应用(store-v1store-v2)的 TLS 和网域所有权的字段。

在图中,集群运算符控制:

  • 应用开发者可将哪些网域应用用于其应用每个命名空间中。
  • 终止不同网域的特定证书。
  • 网关所有者提供的证书。
  • HTTPRoute 所有者是否可以指定自己的主机名来生成证书。

如果网关定义允许,应用开发者可控制生成证书的主机名。

这种分离的运营任务可让应用开发者部署和管理自己的 HTTPRoute 以实现更分散的控制,并且可让平台管理员部署和管理网关,从而集中控制 TLS。

网关证书管理

您可以使用以下任一方法保护网关:

如果您使用 Compute Engine API 中的 Kubernetes Secret 或 SslCertificate 资源,则最多可以将 15 个证书附加到单个网关。

如果您请求增加配额,Certificate Manager 可让您为每个负载均衡器附加多达 1000 万个证书。

如需详细了解 Google Cloud SSL 证书,请参阅 SSL 证书概览

Kubernetes Secret

Gateway API 规范支持使用 Kubernetes Secret 存储证书并将其附加到网关。您可以使用字段 Gateway.spec.tls.certificateRef 将一个或多个 Kubernetes Secret 与网关关联。

通过 Kubernetes Secret 保护的网关资源具有以下要求:

  • 您必须将网关监听器 portprotocol 设置为 443HTTPS
  • 您必须将 listener.tls.mode 字段设置为 Terminate
  • 您必须在 listeners.tls 块中引用 TLS 凭据。

使用 Kubernetes Secret 保护的网关资源具有以下限制:

  • 只有 HTTPS 侦听器才能使用指定的 Secret 终止流量,但您可以使用 HTTP 和 HTTPS 混合指定多个侦听器。
  • 如果在同一网关上有多个侦听器使用 HTTPS,则每个侦听器必须具有唯一的主机名。
  • 您只能省略单个主机名或为每个端口和协议对分配 *
  • 您只能为每个网关分配一个默认证书。

如需了解如何使用 Kubernetes Secret 保护网关,请参阅使用 Kubernetes Secret 保护网关

SSL 证书

SSL 证书可存储证书并将其交付给负载均衡器。

SSL 证书可以是自行管理的证书或 Google 管理的证书。

如需详细了解这两种证书之间的差异,请参阅 SSL 证书概览

SSL 证书的范围和位置必须与使用该证书的网关的范围和位置相匹配。

例如,区域网关无法使用全球 SSL 证书。

下表列出了每个 GatewayClass 的 SSL 证书的范围和位置要求:

GatewayClass SSL 证书范围 SSL 证书位置
gke-l7-global-external-managed 全球 SSL 证书 全球
gke-l7-global-external-managed-mc
gke-l7-gxlb
gke-l7-gxlb-mc
gke-l7-regional-external-managed 区域性 SSL 证书 必须是网关所在的区域
gke-l7-regional-external-managed-mc
gke-l7-rilb
gke-l7-rilb-mc
Google 管理的 SSL 证书与区域级网关不兼容

如需了解如何使用 SSL 证书保护网关,请参阅使用 SSL 证书保护网关

Certificate Manager

Certificate Manager 是管理 TLS 证书的集中位置。

使用 Certificate Manager 保护网关时,您可以执行以下操作:

  • 直接从您在 Certificate Manager 中创建的网关引用 CertificateMap
  • 管理您自己的证书。
  • 缩短证书传播时间。
  • 使用 Cloud Monitoring 处理过期证书和证书传播。

Certificate Manager 支持自行管理和 Google 管理的 SSL 证书。

如需了解如何使用 Certificate Manager 保护网关,请参阅使用 Certificate Manager 保护网关

GatewayClass TLS 支持

下表介绍了 GKE 为每个 GatewayClass 支持的 TLS 终止方法:

GatewayClass gke-l7-global-external-managed
gke-l7-global-external-managed-mc
gke-l7-gxlb
gke-l7-gxlb-mc
gke-l7-regional-external-managed
gke-l7-regional-external-managed-mc
gke-l7-rilb
gke-l7-rilb-mc
客户端到网关 TLS 支持 支持
网关到后端 TLS 支持 支持
Google Cloud 证书资源 全球 SSL 证书
CertificateMap
区域性 SSL 证书
使用 Kubernetes Secret 的自行管理证书 支持 支持
自行管理的 Compute Engine SSL 证书 支持 支持
Google 管理的 Compute Engine SSL 证书 支持 不支持
使用证书管理器自行管理 SSL 证书 支持 支持
通过 Certificate Manager 使用 Google 管理的 SSL 证书 支持 支持

后续步骤