TiDB 集群 PD 组件免授权访问解决方案
作者: cchouqiang 原文来源:https://tidb.net/blog/d73c2c2f
背景
加固方案
1、TiDB 集群开启 TLS
开启 TLS 后组件间通信会被加密,访问组件或工具需提供访问证书,主要共涉及以下组件及工具
TiDB 与 TiKV、PD
TiKV 与 PD
TiDB Control 与 TiDB,TiKV Control 与 TiKV,PD Control 与 PD
TiKV、PD、TiDB 各自集群内内部通讯
Dashboard、TiDB Lightning、BR
> 需注意:开启 TLS 需要扩缩容 PD 节点,并重启整个集群。 > 目前暂不支持只开启其中部分组件的加密传输。 > 该方案会对集群造成短时间业务不可用,后续工具及监控需要提供加密证书才可正常使用,会增加一定运维成本,开启该功能建议集群版本为6.5及以上。 > ``` ## 2、修改 PD 端口 漏扫软件只扫描2379端口,也可以只修改PD端口号,临时应对漏扫工作。 通过对集群的 PD 节点进行扩缩容,来实现修改集群 PD 端口。 该方案不影响集群正常对外访问,但可能会有轻微性能影响,仅用来避免漏洞检测程序发现该风险。 ## 3、设置防火墙策略 - 网络层面设置防火墙策略,配置访问控制策略,限制IP访问,杜绝未认证登录访问。 <!----> - 开启操作系统iptables,配置白名单,内部节点可访问pd节点。 该方案对集群没有任何影响,一般推荐使用网络层面配置访问控制策略。 # 加固方案实施 ## 《方案一》TiDB 集群开启 TLS 步骤(v6.5) ### 1、查看集群状态
SQLtiup cluster display tidb-test
![](https://tidb-blog.oss-cn-beijing.aliyuncs.com/media/unnamed-1733909993586.png) ### 2、缩容 PD 开启 TLS 需要缩容其他两个 PD,只保留 PD Leader 节点
SQLtiup cluster scale-in tidb-test -N 192.168.1.11:2379,192.168.1.12:2379
![](https://tidb-blog.oss-cn-beijing.aliyuncs.com/media/unnamed-1733909965327.png) ### 3、开启 TLS
SQLtiup cluster tls tidb-test enable
注意:此过程会自动重启集群,业务无法访问!!! ![](https://tidb-blog.oss-cn-beijing.aliyuncs.com/media/unnamed-1733910048546.png) ![](https://tidb-blog.oss-cn-beijing.aliyuncs.com/media/unnamed-1733910048596.png) ### 4、PD-CTL 访问测试 使用 pd-ctl http 无认证登录执行命令会报错
SQLtiup ctl:v6.5.5 pd -u https://192.168.1.13:2379 config show
![](https://tidb-blog.oss-cn-beijing.aliyuncs.com/media/unnamed-1733909965333.png) 使用pd-ctl https 认证登录执行命令成功
SQLtiup ctl:v6.5.5 pd -u https://192.168.1.13:2379 –cacert=/root/.tiup/storage/cluster/clusters/tidb-test/tls/ca.crt –key=/root/.tiup/storage/cluster/clusters/tidb-test/tls/client.pem –cert=/root/.tiup/storage/cluster/clusters/tidb-test/tls/client.crt config show
![](https://tidb-blog.oss-cn-beijing.aliyuncs.com/media/unnamed-1733909965319.png) ### 5、Dashboard 访问 若浏览器未安装证书则无法正常使用 Dashboard ![](https://tidb-blog.oss-cn-beijing.aliyuncs.com/media/unnamed-1733909965273.png) 安装步骤以 Chorem 浏览器为例 点击设置-隐私安全-安全-管理证书-导入 默认密码:tiup ### 6、Grafana和Prometheus 这两个组件未开启 TLS,可以正常访问。 ![](https://tidb-blog.oss-cn-beijing.aliyuncs.com/media/unnamed-1733909965396.png) ### 7、扩容 PD 节点 编写原 PD 配置文件
SQLcat scale-out-pd.yamlpd_servers:- host: 192.168.1.11 ssh_port: 22 name: pd_ip-192.168.1.11 client_port: 2379 peer_port: 2380 deploy_dir: /tidb-data1/pd/tidb-deploy/pd-2379 data_dir: /tidb-data1/pd/tidb-data/pd-2379/data.pd log_dir: /tidb-data1/pd/tidb-deploy/pd-2379/log
host: 192.168.1.12ssh_port: 22name: pd_ip-192.168.1.12client_port: 2379peer_port: 2380deploy_dir: /tidb-data1/pd/tidb-deploy/pd-2379data_dir: /tidb-data1/pd/tidb-data/pd-2379/data.pdlog_dir: /tidb-data1/pd/tidb-deploy/pd-2379/log
SQL
tiup cluster scale-out tidb-test scale-out-pd.yaml
SQLvi scale-out-pd.ymlpd_servers:- host: 192.168.1.11 ssh_port: 22 name: pd_ip-192.168.1.11-2979 client_port: 2979 peer_port: 2980 deploy_dir: /tidb-data1/pd/tidb-deploy/pd-2979 data_dir: /tidb-data1/pd/tidb-data/pd-2979/data.pd log_dir: /tidb-data1/pd/tidb-deploy/pd-2979/log
host: 192.168.1.12ssh_port: 22name: pd_ip-192.168.1.12-2979client_port: 2979peer_port: 2980deploy_dir: /tidb-data1/pd/tidb-deploy/pd-2979data_dir: /tidb-data1/pd/tidb-data/pd-2979/data.pdlog_dir: /tidb-data1/pd/tidb-deploy/pd-2979/log
host: 192.168.1.13ssh_port: 22name: pd_ip-192.168.1.13-2979client_port: 2979peer_port: 2980deploy_dir: /tidb-data1/pd/tidb-deploy/pd-2979data_dir: /tidb-data1/pd/tidb-data/pd-2979/data.pdlog_dir: /tidb-data1/pd/tidb-deploy/pd-2979/log
SQL
tiup cluster scale-out tidb-test scale-out-pd.yaml -uroot -p
SQLtiup ctl:v6.5.5 pd -u https://192.168.1.13:2379 -i
切换 PD leader,可能会对业务响应造成轻微影响 member leader transfer pd_ip-192.168.1.13-2979
切换 dashboard 服务到新 PDconfig set dashboard-address http://192.168.1.13:2979切换 TiDB Dashboard 将会丢失之前 TiDB Dashboard 实例所存储的本地数据,包括流量可视化历史、历史搜索记录等。
查看 pd 成员 member
SQLtiup cluster display tidb-test
SQLtiup cluster scale-in tidb-test –node 192.168.1.11:2379,192.168.1.12:2379,192.168.1.13:2379```
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/815f4ee3f888ec9e8a694af53】。文章转载请联系作者。
评论