1. 数据加密
数据加密的密钥由系统对钱夹密码的复杂变化逻辑生成。钱夹密码由用户指定输入,必须符合密码复杂度要求。
- 注意:
GaussDB不提供修改钱夹密码的接口,一旦设定,请牢记。
01.设定用于数据加密的钱夹密码。
通过以下SQL命令设定钱夹密码,以设定钱夹密码为gaussdb_123为例:
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY 'gaussdb_123';
说明:
- 钱夹密码设定后,GaussDB通过对钱夹密码的一系列复杂变化,生成用于数据加密的密钥。
- 钱夹密码和用于数据加密的密钥经过加密处理后,存储到wallet_directory参数指定目录下的wallet.tablespace文件中。
02.开启加密数据访问。
通过设定的钱夹密码开启加密数据访问。GaussDB会对用户输入的密码进行校验,只有输入的密码和设置的钱夹密码完全一致,才允许使用加密功能。以钱夹密码为gaussdb_123为例:
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY 'gaussdb_123';
说明:
- 如果密码验证通过,GaussDB会通过一系列复杂的逆运算,解密出用于数据加密的密钥。
03.创建加密表空间。
以创建加密表空间TABLESPACE_FVT_TABLESPACE_ENCRYPT为例:
CREATE TABLESPACE TABLESPACE_FVT_TABLESPACE_ENCRYPT LOCATION '/home/gaussdba/FVT_TABLESPACE_ENCRYPT' ENCRYPTION;
或者:
CREATE TABLESPACE TABLESPACE_FVT_TABLESPACE_ENCRYPT LOCATION '/home/gaussdba/FVT_TABLESPACE_ENCRYPT' ENCRYPTION USING 'AES128';
说明:
- 以上两种SQL命令功能完全相同,可以使用其中任意一种。
- 第二种创建加密表空间的SQL命令中,USING关键字后为加密存储使用的加密算法,目前该值必须为AES128,除此之外的加密算法暂时不支持。
04.将存储用户敏感信息的数据表存储到加密表空间下。
CREATE TABLE TABLE_FVT_TABLESPACE_ENCRYPT(F TEXT) TABLESPACE TABLESPACE_FVT_TABLESPACE_ENCRYPT;
INSERT INTO TABLE_FVT_TABLESPACE_ENCRYPT VALUES('HELLO WORLD!');
05.关闭加密数据访问。
当不需要再访问加密数据时,可以通过以下SQL命令关闭加密数据访问。一旦关闭,所有针对加密数据的访问都无法进行。
ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY 'gaussdb_123';