VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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;