数据库加密简介
GaussDB(DWS)数据库加密
在GaussDB(DWS)中,您可以为集群启用数据库加密,以保护静态数据。当您为集群启用加密时,该集群及其快照的数据都会得到加密处理。您可以在创建集群时启用加密。加密是集群的一项可选且不可变的设置。要从未加密的集群更改为加密集群,必须从现有集群导出数据,然后在已启用数据库加密的新集群中重新导入这些数据。数据库加密是在数据落盘时进行加密,即在往GaussDB(DWS)写入数据时GaussDB(DWS)会对数据进行加密,而在用户查询数据时GaussDB(DWS)会将数据自动进行解密后再将结果返回给用户。
如果希望加密,可以在集群创建时启用加密。虽然加密是GaussDB(DWS)集群中的一项可选设置,但建议您为集群启用该设置以保护数据。
- 存算分离集群仅9.1.0及以上集群版本支持数据库加密功能。
- 数据库加密功能创建集群时选择是否开启,一旦开启就无法关闭。详情请参见加密数据库。普通集群创建完后,可以通过转加密集群功能,将集群转成加密集群。
- 开启数据库加密功能后,用于加密GaussDB(DWS)数据库的KMS密钥在使用过程中不能被禁用、删除或冻结,否则会导致GaussDB(DWS)集群异常或数据库不可用。
- 开启数据库加密功能后创建的快照不支持使用openAPI做恢复。
查看数据库加密信息
- 登录GaussDB(DWS)管理控制台。
- 单击左侧导航栏的“集群 > 专属集群”。
- 在“专属集群”页面,单击指定集群名称,进入“集群详情”页面。
- 在“集群详情”页面的“数据加密信息”区域查看数据库加密信息,如表1所示。
表1 数据加密信息 参数
参数说明
密钥名称
当“加密数据库”开启时,显示集群的数据库加密密钥。
上次密钥轮转时间
当“加密数据库”开启时,显示上一次加密密钥轮转的时间。
加密算法
当“加密数据库”开启时,显示集群的加密算法。
加密算法包含:
- AES256(通用加密算法,不支持SM系列商密算法)。
- SM4(支持SM系列商密算法,兼容国际通用算法)。
如果创建集群时默认没有开启数据库加密功能,则在集群详情页面不显示加密信息模块。
使用KMS服务加密GaussDB(DWS)数据库
当选择KMS(密钥管理服务)对GaussDB(DWS)进行密钥管理时,加密密钥层次结构有三层。按层次结构顺序排列,这些密钥为主密钥(CMK)、集群加密密钥 (CEK)、数据库加密密钥 (DEK)。
- 主密钥用于给CEK加密,保存在KMS中。
- CEK用于加密DEK,CEK明文保存在GaussDB(DWS)集群内存中,密文保存在GaussDB(DWS)服务中。
- DEK用于加密数据库中的数据,DEK明文保存在GaussDB(DWS)集群内存中,密文保存在GaussDB(DWS)服务中。
密钥使用流程如下:
- 用户选择主密钥。
- GaussDB(DWS)随机生成CEK和DEK明文。
- KMS使用用户所选的主密钥加密CEK明文并将加密后的CEK密文导入到GaussDB(DWS)服务中。
- GaussDB(DWS)使用CEK明文加密DEK明文并将加密后的DEK密文保存到GaussDB(DWS)服务中。
- GaussDB(DWS)将DEK明文传递到集群中并加载到集群内存中。
当该集群重启时,集群会自动通过API向GaussDB(DWS)请求DEK明文,GaussDB(DWS)将CEK、DEK密文加载到集群内存中,再调用KMS使用主密钥CMK来解密CEK,并加载到集群内存中,最后用CEK明文解密DEK,并加载到集群内存中,返回给集群。
加密密钥轮转
加密密钥轮转是指更新保存在GaussDB(DWS)服务的密文。在GaussDB(DWS)中,您可以轮转已加密集群的加密密钥CEK。
密钥轮转流程如下:
- GaussDB(DWS)集群启动密钥轮转。
- GaussDB(DWS)根据集群的主密钥来解密保存在GaussDB(DWS)服务中的CEK密文,获取CEK明文。
- 用获取到的CEK明文解密保存在GaussDB(DWS)服务中的DEK密文,获取DEK明文。
- GaussDB(DWS)重新生成新的CEK明文。
- GaussDB(DWS)用新的CEK明文加密DEK并将DEK密文保存在GaussDB(DWS) 服务中。
- 用主密钥加密新的CEK明文并将CEK密文保存在GaussDB(DWS)服务中。
您可以根据业务需求和数据类型计划轮转加密密钥的时间。为了提高数据的安全性,建议用户定期执行轮转密钥以避免密钥被破解的风险。一旦您发现密钥可能已泄露,请及时轮转密钥。
- GaussDB(DWS)轮转集群的CEK时,集群相关的快照不需要轮转CEK,因为CEK不会在集群快照中进行保存,CEK明文是保存在GaussDB(DWS)集群内存中的,密文是保存在GaussDB(DWS)服务中的。
- 由于密钥轮转不更新DEK,所以对于数据的加解密不会有影响。