透明数据加密
PolarDB-X Operator 从 1.6.0 版本开始支持透明数据加密功能。本文介绍如何对 PolarDB-X 开启透明数据加密功能(TDE)。
前置条件
- PolarDB-X Operator 升级到 1.6.0 及以上版本
开启TDE
创建开启TDE功能的PolarDB-X实例
参照如下示例创建开启TDE功能的PolarDB-X实例
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
name: polardb-x
spec:
topology:
nodes:
cn:
template:
image: polardbx/polardbx-sql:v2.4.0_5.4.19
dn:
template:
image: polardbx/polardbx-engine:v2.4.0_8.4.19
tde:
enable: true
参数说明:
tde.enable
: 是否开启TDE功能
原有PolarDB-X实例开启TDE功能
注意:该功能需要 polardbx-operator v1.6.0 及以上版本创建的集群才支持。
我们可以使用 kubectl edit 或是 kubectl patch 的方式修改 .spec.tde.enable 下的字段,这里演示 kubectl patch的方式:
kubectl patch --type='merge' pxc polardb-x --type='json' -p='[{"op": "replace", "path": "/spec/tde/enable", "value": true}]'
稍后观察集群状态,PHASE
会进入 TdeOpening
状态,表明正在开启TDE功能:
kubectl get pxc polardbx-test
NAME GMS CN DN CDC PHASE DISK AGE
polardb-x 1/1 1/1 0/1 1/1 TdeOpening 6.2Gi 93s
当 PHASE
重新变为 Running
时,TDE功能已经开启。
TDE使用说明
检查TDE是否启动
进入DN pod上的mysql后执行 show plugins
,检查是否存在keyring_file相关插件。
查看主密钥
主密钥位置在 keyring_file_data
指定。刚创建实例时主密钥不存在,在执行过一次TDE开启后密钥才生成
开启TDE加密
执行如下语句开启对表的TDE加密
ALTER TABLE table_name ENCRYPTION='Y';
关闭TDE加密
执行如下语句关闭对表的TDE加密
ALTER TABLE table_name ENCRYPTION='N';
注意事项
- TDE功能开启后不允许关闭。
- TDE的keyring默认存储在
/data/mysql/mysql-keyring/keyring
路径下,路径无法修改。