数据加密,指用户创建存储密钥数据的证书,创建有加密属性的表或列,算法使用密钥对表数据进行加密。
参数_gbase_encrypt_new_mode 可以设置加密算法:0,1 代表 aes(默认),2 代表 sm4,如果切换,则原有密钥不能使用新算法进行正确解密数据。
8a 中数据加密只对进入到 seg 文件中的数据进行加密处理,按照 DC 为最小单位进行。
支持密钥证书的创建,打开,关闭,查看状态,口令修改,密钥转换操作。删除需要进到证书文件的目录手动删除。
创建证书
create encryption certificate identified by ‘password’ content ‘content'.
#口今
#密钥关键字
Content:密钥关键字。不指定 content, 创建证书时是系统自动生成密钥;指定 content,使用用户输入的内容作为关键字生成密钥。
Password:口令。password 为空,创建的是明文证书;password 不为空,创建的是密文证书,根据口令对密钥加密存储(与数据加密使用的算法相同);如果开启了密码安全参数 password_format_option, password_min_length,口令会受到密码检测;打开密文证书时需要口令。
注意:所有的数据都使用一个密钥,证书只能创建一次,重复创建报错。数据使用密钥文件内容加解密后,密钥文件内容就不能再改变。证书文件存放位置:集群层和单机层的 config 目录下encryption.crt
打开/关闭证书
alter encryption certificate open identified by 1111';
alter encryption certificate close;
创建的为密文密钥证书时,证书为打开状态才能对加密列做 dml 操作,否则报错
明文证书从创建后一直为打开状态,不能执行打开/关闭
修改证书口令
alter encryption certificate identitied by old pwd to new pwd;
修改口令不会改变加密密钥,只是使用新口令对原有密钥重新加密生成新证书
明文、密文密钥转换
明文密钥转换为密文密钥
alter encryption certiticate identitied by " to ‘pwd’;
密文密钥转换为明文密钥
alter encryption certificate identified by 'pwd' to ";
通过口令将明文密钥加密作为密文密钥证书,数据加密所用密钥不变。
通过口令将密文密钥解密获取到的密钥作为明文密钥,数据加密所用密钥不变。
显示证书状态
SELECT * FROM INFORMATION_SCHEMA.ENCRYPTION_CERTIFICATE_STATUS;
SELECT * FROM INFORMATION_ SCHEMA.ALL_ENCRYPTION_ CERTIFICATE_STATUS;
创建加密表/加密列
(不支持 alter 给表或列增加 encrypt 属性)
create table t1 (a int, b varchar(5)) encrypt);
create table t1 (a int, b varchar(5) encrypt);
需要创建加密证书后,再创建加密表或加密列,否则报错
表的加密属性会传递给列,列的加密属性不会影响表
查看加密属性
show create table