CREATE COLUMN ENCRYPTION KEY
功能描述
创建一个列加密密钥,该密钥可用于加密表中指定列。
注意事项
本语法属于全密态数据库特有语法。
当使用vsql连接数据库服务器时,需使用
-C
参数,打开全密态数据库的开关,才能使用本语法。创建CEK之前必须先创建CMK。
由该语法创建CEK对象可用于列级加密。在定义表中列字段时,可指定一个CEK对象,用于加密该列。
语法格式
CREATE COLUMN ENCRYPTION KEY column_encryption_key_name
[WITH] [VALUES] ( ['CLIENT_MASTER_KEY' , 'ALGORITHM'] );
参数说明
column_encryption_key_name
该参数作为密钥对象名,在同一命名空间下,需满足命名唯一性约束。
取值范围:字符串,要符合标识符的命名规范。
CLIENT_MASTER_KEY
指定用于加密本CEK的CMK。
取值为:CMK对象名,该CMK对象由CREATE CLIENT MASTER KEY语法创建。
ALGORITHM
指定该CEK将用于何种加密算法。
取值范围为:AEAD_AES_256_CBC_HMAC_SHA256、AEAD_AES_128_CBC_HMAC_SHA256和SM4、SM3。
国密算法约束:由于SM2、SM3、SM4等算法属于中国国家密码标准算法,为规避法律风险,需配套使用。如果创建CMK(即CREATE CLIENT MASTER KEY)时指定SM2算法来加密CEK,则创建CEK时必须指定SM4_SM3算法来加密数据。
示例
1、登录数据库时开启全密态。
vsql -d vastbase -r -C
2、创建客户端主密钥。
CREATE CLIENT MASTER KEY ImgCMK1 WITH (KEY_STORE = localkms, KEY_PATH = "key_path_value1", ALGORITHM = RSA_2048); CREATE CLIENT MASTER KEY ImgCMK WITH (KEY_STORE = localkms, KEY_PATH = "key_path_value2", ALGORITHM = RSA_2048);
3、创建客户端列加密密钥。
创建CEK之前必须先创建CMK。CREATE COLUMN ENCRYPTION KEY ImgCEK1 WITH VALUES (CLIENT_MASTER_KEY = ImgCMK1, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256); CREATE COLUMN ENCRYPTION KEY ImgCEK WITH VALUES (CLIENT_MASTER_KEY = ImgCMK, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256);
4、查询存储列加密密钥信息的系统表GS_COLUMN_KEYS。
select * from gs_column_keys;
返回结果为如下,存在密钥信息:
column_key_name | column_key_distributed_id | global_key_id | key_namespace | key_owner | create_date | key_acl -----------------+---------------------------+---------------+---------------+-----------+----------------------------+--------- imgcek1 | 760411027 | 18913 | 2200 | 10 | 2023-09-18 14:00:01.044882 | imgcek | 3618369306 | 18919 | 2200 | 10 | 2023-09-18 14:00:01.88015 | (2 rows)
5、删除列加密密钥(CEK)。
DROP COLUMN ENCRYPTION KEY ImgCEK1; DROP COLUMN ENCRYPTION KEY ImgCEK;