You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Terraform的Google Provider配置带双向TLS的GCP HTTP/2负载均衡器

Google Provider 双向TLS(Mutual TLS)配置指引

1. 证书资源代码正确性验证

你的这段google_certificate_manager_certificate代码本身是合法的,但需要明确几个关键点:

  • 这个资源定义的是负载均衡器使用的服务器端证书,用于向客户端证明自身身份,是双向TLS的一部分(另一部分是验证客户端证书)。
  • 确保var.tcp_lb_cert和var.tcp_lb_private_key传入的是标准PEM格式的证书内容和私钥内容,不能有格式错误。
  • scope = "DEFAULT"表示证书在全局范围内可用,适合跨区域的负载均衡场景,这个配置没问题。

2. 网络安全Client TLS Policy配置

没错,实现客户端证书验证的核心Terraform资源就是google_network_security_client_tls_policy,以下是关键参数的配置说明和示例:

先创建TrustConfig资源

首先需要定义信任的客户端CA证书集合,对应文档里的「创建TrustConfig资源」步骤:

resource "google_network_security_trust_config" "grpc_client_ca" {
  count       = local.create_grpc_load_balancer
  name        = "${local.grpc_load_balancer_name}-client-ca-trust"
  description = "Trust config for gRPC client CA certificates"
  
  trust_store {
    certificates = [
      # 填入客户端CA证书的PEM内容,也可引用Secret Manager中的存储资源
      var.grpc_client_ca_pem
    ]
  }
}

配置Client TLS Policy

接下来创建Client TLS Policy,设置客户端验证规则:

resource "google_network_security_client_tls_policy" "grpc_mtls" {
  count       = local.create_grpc_load_balancer
  name        = "${local.grpc_load_balancer_name}-mtls-policy"
  description = "Mutual TLS policy for gRPC endpoints"
  
  # 客户端验证模式:REQUIRE_AND_ENFORCE 强制要求客户端提供有效证书
  client_validation_mode = "REQUIRE_AND_ENFORCE"
  
  # 关联上面创建的TrustConfig,指定信任的CA集合
  client_validation_trust_config = google_network_security_trust_config.grpc_client_ca[count.index].self_link
}

参数说明

  • clientValidationMode:
    • REQUIRE_AND_ENFORCE:强制验证客户端证书,只有携带信任CA签发的有效证书的请求才会被放行,适合严格安全场景。
    • ALLOW:允许客户端提供证书但不强制;若客户端提供证书则验证有效性,适合需要兼容无证书请求的场景。
  • clientValidationTrustConfig:必须指向google_network_security_trust_config资源的self_link,该资源定义了哪些CA签发的客户端证书是可信的。

3. 关联到HTTPS负载均衡器

最后需要将Client TLS Policy关联到你的HTTPS目标代理,让负载均衡器启用双向TLS验证:

resource "google_compute_target_https_proxy" "grpc_proxy" {
  count             = local.create_grpc_load_balancer
  name              = "${local.grpc_load_balancer_name}-proxy"
  url_map           = google_compute_url_map.grpc_url_map[count.index].self_link
  ssl_certificates  = [google_certificate_manager_certificate.default[count.index].self_link]
  # 附加Client TLS Policy
  client_tls_policy = google_network_security_client_tls_policy.grpc_mtls[count.index].self_link
}

内容的提问来源于stack exchange,提问作者Josh G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:35:32