密钥证书的管理需要管理员用户通过SQL方式处理。证书存放在config目录,集群环境下,gnode与gcluster都会生成相同密钥证书文件:
gnode:$GBASE_BASE/config/encryption.crt
gcluster:$GCLUSTER_BASE/config/encryption.crt
注意:
- 建议对密钥证书进行备份,如果证书丢失会影响已有数据的解密操作;
- 明文密钥创建完成后,即可对加密列做dml操作;密文密钥还需要open操作,方可对加密列做dml操作,关闭密钥后,所有对加密列的dml操作将会失效;
- 钥证书只能创建一次,不能重复创建;
- 密文密钥,须用户牢记口令,系统不记录口令。
1. 创建证书
语法:
CREATE ENCRYPTION CERTIFICATE IDENTIFIED BY 'password' [CONTENT '密钥内容'];
- 该语法可创建明文、密文密钥证书,如果password为空,则创建明文密钥证书,不要口令;如果password非空,则创建密文密钥证书,需要口令;密钥证书只有一份,不能重复创建;
- CONTENT 是密钥内容关键字,可选项,如果不指定该关键字,则创建时由系统自动生成密钥;如果指定,则需要用户手动输入密钥,内容不做限制,最大支持128 字节;
2. 打开证书
语法:
ALTER ENCRYPTION CERTIFICATE OPEN IDENTIFIED BY 'password';
- 根据口令打开密文密钥证书,需要用户输入口令对证书解密获取加密密钥,才能对存储数据加密/解密。
3. 关闭证书
语法:
ALTER ENCRYPTION CERTIFICATE CLOSE;
- 证书关闭后无法对数据加密,会影响加密列的DML操作
4. 修改证书
语法:
ALTER ENCRYPTION CERTIFICATE IDENTIFIED BY 'old_pwd' TO 'new_pwd';
- 修改密文密钥口令,old_pwd、new_pwd均非空;
- 为了提高口令的安全性,可以对原证书口令进行二次修改,修改口令不会改变加密密钥,只是使用新口令对原有密钥重新加密生成新证书;
5. 明文/密文密钥转换
明文转密文语法:
ALTER ENCRYPTION CERTIFICATE IDENTIFIED BY '' TO 'password';
密文转明文语法:
ALTER ENCRYPTION CERTIFICATE IDENTIFIED BY 'password' TO '';
- password不能为空;
- 数据加密所用密钥不变;
6. 显示证书状态:
语法:
SELECT * FROM INFORMATION_SCHEMA.ENCRYPTION_CERTIFICATE_STATUS;