如何在Google Cloud Load Balancer上记录SSL/TLS握手详情
GKE Ingress(关联Google Cloud负载均衡)记录TLS握手信息操作指南
操作背景
默认Google Cloud负载均衡的访问日志仅输出httpRequest相关字段,无SSL/TLS握手阶段的版本、加密套件等信息,无法满足TLS版本统计、用户关联需求。
实现步骤
- 步骤1:开启负载均衡TLS相关日志字段
Google Cloud HTTP(S)负载均衡支持自定义日志字段,你可以通过gcloud命令直接更新对应后端服务配置,开启TLS字段记录:gcloud compute backend-services update <你的后端服务名称> --global --enable-logging --logging-sample-rate=1.0 --custom-request-response-log-headers=SSLProtocol,TLSCipherSuite,X-Request-ID
其中SSLProtocol字段会记录请求使用的TLS版本,如TLSv1.2、TLSv1.3。 - 步骤2:查看新增TLS字段日志
配置更新后2分钟内生效,新的访问日志会新增ssl相关字段,完整日志示例如下:httpRequest: { latency: "0.077152s" remoteIp: "1.2.3.4" requestMethod: "POST" requestSize: "256988" requestUrl: "https://api.foo.bar/v1.0/foo" responseSize: "22746" serverIp: "1.2.3.4" status: 200 userAgent: "axios/0.20.0" } ssl: { protocol: "TLSv1.3" cipherSuite: "TLS_AES_256_GCM_SHA384" } - 步骤3:关联请求对应的发起用户
如需将TLS信息和请求用户绑定,可使用以下两种方案:- 若业务服务已实现身份认证,可在业务日志中同时记录负载均衡默认传递的
X-Request-ID请求头和用户ID,后续通过X-Request-ID将业务日志和负载均衡TLS日志做关联即可 - 也可在之前的
--custom-request-response-log-headers参数中追加业务传递用户身份的请求头(如X-User-Id),直接在负载均衡日志中输出用户ID,无需二次关联
- 若业务服务已实现身份认证,可在业务日志中同时记录负载均衡默认传递的
注意事项
- 日志采样率可根据业务量调整,若无需全量日志,可将
--logging-sample-rate参数调整为0~1之间的小数,降低日志存储成本 - 若你使用GKE原生Ingress管理负载均衡,可通过Ingress Annotation关联BackendConfig资源,在BackendConfig中配置日志规则,无需手动修改后端服务配置
内容的提问来源于stack exchange,提问作者otherguy
相关产品推荐
相关产品推荐

