课程名称:【TiDB 4.0 PCTA 学习笔记】- 3.8.2 TLS and TDE(TLS 和 TDE)
学习时长:25m
课程收获:
了解 TLS(传输层加密) 和 TDE(静态数据加密) 的原理和使用
课程内容:
一、TLS
1、TLS即传输层安全协议 ,又名 SSL
提供加密的安全网络连接,提供连接双方认证身份的机制、提供更可靠网络连接
2、证书
启动TLS需要加密密钥和证书
证书是证明密钥所有者身份的文件
TLS连接需要使用到三组文件:CA的证书、密钥、密钥对应CA签发的证书
3、生成证书
生成证书有两种方法:
使用可信的证书签发机构签发证书,适用于公开的不可信的网络环境;
使用命令生成自签名的证书,使用自签名证书存在一定风险,生产环境需评估
4、打开TLS,强制使用加密连接
5、中间人攻击
启用TLS可以防御简单网络监听连接偷取数据的攻击
但是 无法防御中间人攻击,
攻击者伪装成TiDB服务器,通过转发到真正的TiDB 服务器,从中偷取或修改数据
使用CA证书,对TiDB服务器进行身份认证,来杜绝
mysql client 5.7.3 以上版本,并指定 --ssl参数,
旧版客户端有漏洞,即便指定ssl,也可能会被安全连接关闭
6、客户端认证
攻击者模拟客户端攻击
7、双向认证mTLS --客户端和服务器端 做相互认证
8、TiDB组件间的mTLS
TiDB 、TiKV、PD 的相互认证
9、在线证书更换
遇到证书到期、证书泄露等情况,需要变更各个组件证书
TiDB各组件都已支持在线变更,不需要重启,
只影响新建的连接,已建立的网络连接不受影响
10、更多的连接限制
比如 禁止客户端 直接访问 TiKV
使用Common Name(CN) — 生成证书的时候,设置CN
配置允许连接的CN列表,限制客户端连接
二、静态加密,又称TDE(透明数据加密)
1、TDE 对磁盘储存的数据(静态数据)进行加密,
不对内存中的数据和网路传输中的数据加密
TDE 只支持对全部数据一起加密,不支持对特定列单独加密
2、配置TDE
TiKV支持自动滚动数据密钥,默认每7天滚动一次
密钥级别越高,性能损耗越大
使用aws kms的方式指定主密钥
3、AWS KMS
KMS 是提供加密密钥的服务
HSM存储一个主密钥,但是不会主动暴露,而是提供加解密接口
通过KMS 访问HSM接口,生成加密密钥,再对数据进行加密
TiKV进程需要KMS访问权限
4、信封加密
通过KMS主密钥进行间接加密的方式 称之为 信封加密
TiKV 存在 主密钥和数据密钥
主密钥 即KMS密钥,唯一作用是对数据密钥进行加密
数据密钥是TiKV生产的随机密文,是真正对数据进行加密的密钥,经过主密钥加密后持久化保存在磁盘中
信封加密的目地是支持密钥滚动,减少密钥行程长期泄露的机率
如果必须更换主密钥需手动,配置为 previous-master-key,再重启TiKV,通过监控加密面板确认状态
5、注意事项
a、关闭core dump:防止core文件保存内存中所有为加密的数据和TiKV加密密钥的明文
b、PD使用文件系统加密:因为TiDB4.0中 PD储存少量元数据不支持静态数据加密
c、TiFlash 不支持静态加密,各组件调试信息可能储存数据,存在数据泄露隐患
d、加密模块使用绝对路径来追踪文件的加密信息,启动加密后,和数据路径有关的配置项不能更改