GBase8aMPP Cluster数据加密提供对数据库落地数据的软加密功能,用来满足用户的安全需求,提高系统的安全性。数据加密按照数据文件中的DC为最小单位进行,可以实现表级或者列级不同粒度的加密要求。数据库中所有加密数据都使用同一个密钥,系统启动时会自动读取已创建的密钥文件内容。数据使用密钥文件内容加解密后,密钥文件内容就不能再改变。
数据加密支持的操作如下:
- 支持加密关键字encrypt建表;
- 支持表级或者列级不同粒度的加密要求;支持表加密属性的查询:
- 支持密钥证书管理包括密钥证书的创建、打开、关闭、口令修改、密钥转换操作;
- 支持密钥类型转换,即从明文密钥转换到密文密钥,或从密文密钥转换到明文密钥:
明文密钥:无须用户口令,可随机生成也可手动输入;
密文密钥:须用户输入口令,根据口令对随机生成的密钥加密存储;
- 支持查询当前密钥证书状态;
- 支持行存列加密。
1.创建加密表和列
用户通过建表命令createtable和encrypt关键字创建带encrypt属性的表或者列,也可以通过create table like命令建表。但是不支持alter命令给表或列增加encrypt属性。创建加密表示例如下:
create table t1(a int, b varchar(5)) encrypt;
create table t1(a int, b varchar(5) encrypt);
使用show create table 可以查询加密属性,表的加密属性会传递给列,列的加密属性不会影响表。
2.密钥证书管理
证书存放位置如下:
gnode: $GBASE_BASE/config/encryption.crt
gcluster:$GCLUSTER_BASE/config/encryption.crt
3.创建证书
create encryption certificate identified by 'password’[content 'content value];
参数名称 | 描述 |
---|---|
password | 密钥证书口令。 |
content_value | 密钥内容关键字,可选项,如果不指定该关键字,则创建时由系统自动生成密钥,如果指定,则需要用户手动输入密钥内容不做限制,最大支持 128字节。 |
证书重复创建
如果设置password_format_option、password_min_length参数,对证书密码有要求
4.打开和关闭证书
alter encryption certificate open identified by '1111';
alter encryption certificate close;
明文证书不支持打开和关闭证书:
重复打开关闭证书:
5.修改证书口令
alter encryption certificate identified by 'old pwd' to 'new_pwd'; 如果设置password_format_option、password_min_length 参数,对证书密码有要求
注:目前集群最新要求,创建加密证书并打开才允许创建带加密属性的表