功能简介
v4.0.0 为 gt-checksum 和 repairDB 同时新增了 SSL/TLS 加密连接支持。通过 8 个新增配置参数,源端和目标端可以独立配置各自的 SSL 证书和加密模式。
参数说明
gt-checksum 参数(源端 + 目标端):
| 参数名 | 可选值 | 默认值 | 说明 |
|---|---|---|---|
srcSslCa | 文件路径 | 空 | 源端 CA 证书文件路径 |
srcSslCert | 文件路径 | 空 | 源端客户端证书文件路径 |
srcSslKey | 文件路径 | 空 | 源端客户端密钥文件路径 |
srcSslMode | 见下表 | PREFERRED | 源端 SSL 模式 |
dstSslCa | 文件路径 | 空 | 目标端 CA 证书文件路径 |
dstSslCert | 文件路径 | 空 | 目标端客户端证书文件路径 |
dstSslKey | 文件路径 | 空 | 目标端客户端密钥文件路径 |
dstSslMode | 见下表 | PREFERRED | 目标端 SSL 模式 |
repairDB 参数(仅目标端):
| 参数名 | 说明 |
|---|---|
dstSslCa | 目标端 CA 证书文件路径 |
dstSslCert | 目标端客户端证书文件路径 |
dstSslKey | 目标端客户端密钥文件路径 |
dstSslMode | 目标端 SSL 模式 |
为什么 repairDB 只有目标端参数?repairDB 是修复工具,只连接目标端数据库执行修复 SQL,不需要源端连接,因此只需配置目标端 SSL 参数。
SSL 模式说明
| 模式 | 说明 | 需要 CA 证书? |
|---|---|---|
DISABLED | 禁用 SSL,不加密连接 | 否 |
PREFERRED | 优先使用 SSL,服务端不支持时回退到非加密连接 | 否 |
REQUIRED | 必须使用 SSL 加密,但不验证服务端证书 | 否 |
VERIFY_CA | 验证服务端 CA 证书链 | 是 |
VERIFY_IDENTITY | 验证 CA 证书链和服务端身份(主机名) | 是 |
使用方式非常简单,在配置文件gc.conf中添加几行即可:
; 最小配置:仅要求加密,不验证证书 |
srcSslMode=REQUIRED |
dstSslMode=REQUIRED |
二、功能作用及使用场景深入解读
2.1 为什么需要 SSL 加密连接?
在数据校验和修复场景中,gt-checksum 需要从源端和目标端大量读取数据进行比对。如果连接未加密,数据在传输过程中存在被窃听或篡改的风险。
场景一:跨机房/跨云校验
源端和目标端分别部署在不同云平台,校验流量经过公网传输。如果没有 SSL 加密,数据包可以被中间节点抓取和分析。
场景二:安全合规要求
金融、医疗、政务等行业对数据传输有严格的加密要求。数据库审计系统可能要求所有数据库连接必须使用加密通道,即使是只读查询也不例外。
场景三:共享网络环境
在 Kubernetes 集群或共享 VPC 中,不同租户的流量可能共享物理网络。虽然有网络隔离,但深度防御(Defense in Depth)原则要求在传输层也做加密保护。
场景四:修复 SQL 中的敏感数据
repairDB 执行的修复 SQL 可能包含用户个人信息、交易记录等敏感数据。这些 SQL 文本通过明文连接传输时,等同于将敏感数据直接暴露在网络上。
2.2 五种 SSL 模式:从"只加密"到"全面验证"
gt-checksum 提供了五种 SSL 模式,覆盖从最低安全要求到最高安全级别的全部场景:
DISABLED——明确禁用
srcSslMode=DISABLED |
显式禁用 SSL。适用于已经在网络层面做了加密(如 VPN、专线),或者在完全可信的内网环境中使用。
PREFERRED——自适应模式(默认值)
srcSslMode=PREFERRED |
优先尝试 SSL 连接,如果服务端不支持则回退到非加密连接。这是设置了其他 SSL 参数但未显式指定mode时的默认值。适用于过渡期场景——源端和目标端可能部分启用了 SSL。
REQUIRED——强制加密
srcSslMode=REQUIRED |
强制使用 SSL 加密,但不验证服务端证书。这意味着传输数据是加密的,但客户端不会检查服务端证书是否由可信 CA 签发。适用于内部环境,需要加密但不担心中间人攻击的场景。
VERIFY_CA——验证证书链
srcSslCa=/path/to/ca.pem |
srcSslMode=VERIFY_CA |
验证服务端证书是否由指定的 CA 签发。需要提供 CA 证书文件(srcSslCa或dstSslCa)。这是生产环境推荐的最低安全级别。
VERIFY_IDENTITY——全面验证
srcSslCa=/path/to/ca.pem |
srcSslMode=VERIFY_IDENTITY |