华为云云数据库GaussDBCREATE COLUMN ENCRYPTION KEY_云淘科技

功能描述

创建一个列加密密钥,该密钥可用于加密表中指定列。

注意事项

本语法属于全密态数据库特有语法。

当使用gsql连接数据库服务器时,需使用‘-C’参数,打开全密态数据库的开关,才能使用本语法。

由该语法创建CEK对象可用于列级加密。在定义表中列字段时,可指定一个CEK对象,用于加密该列。

语法格式

CREATE COLUMN ENCRYPTION KEY column_encryption_key_name WITH VALUES(CLIENT_MASTER_KEY = client_master_key_name, ALGORITHM = algorithm_type, ENCRYPTED_VALUE = encrypted_value);

参数说明

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、AEAD_AES_256_CTR_HMAC_SHA256、AES_256_GCM和SM4_SM3。

其中不同加密算法的数据膨胀率AEAD_AES_256_CTR_HMAC_SHA256 < AES_256_GCM < AEAD_AES_256_CBC_HMAC_SHA256 = AEAD_AES_128_CBC_HMAC_SHA256 = SM4_SM3,推荐使用AEAD_AES_256_CTR_HMAC_SHA256 和 AES_256_GCM加密算法。

ENCRYPTED_VALUE(可选项)

该值为用户指定的密钥口令,密钥口令长度范围为28 ~ 256个字符。28个字符派生出来的密钥安全强度满足AES128。若用户需要用AES256,密钥口令的长度需要39个字符。如果不指定,则会自动生成256比特的密钥。

国密算法约束:由于SM2、SM3、SM4等算法属于中国国家密码标准算法,为规避法律风险,需配套使用。如果创建CMK时指定SM4算法来加密CEK,则创建CEK时必须指定SM4_SM3算法来加密数据。
ENCRYPTED_VALUE字段约束:如果使用由Huawei KMS生成的CMK来对CEK进行加密,在CREATE COLUMN ENCRYPTION KEY的语法中,如果使用ENCRYPTED_VALUE字段传入密钥,则传入的密钥的长度应为16字节的整数倍。

示例(在使用gsql连接数据库服务器的场景下)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 1 解压GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Gsql.tar.gz安装包,找到脚本gsql_env.sh

# 2 通过脚本,自动配置环境变量GS_KTOOL_FILE_PATH
source gsql_env.sh

# 3 连接数据库,开启-C密态开关
gsql -p 端口号 -d postgres -r -C

# 4 创建秘钥,以gs_ktool示例
gaussdb=# \! gs_ktool -g
GENERATE
1
gaussdb=# \! gs_ktool -g
GENERATE
2

# 5 创建CMK和CEK
gaussdb=# CREATE CLIENT MASTER KEY cmk1 WITH ( KEY_STORE = gs_ktool , KEY_PATH = "gs_ktool/1" , ALGORITHM = AES_256_CBC);
CREATE CLIENT MASTER KEY
gaussdb=# CREATE CLIENT MASTER KEY cmk2 WITH ( KEY_STORE = gs_ktool , KEY_PATH = "gs_ktool/2" , ALGORITHM = AES_256_CBC);
CREATE CLIENT MASTER KEY
gaussdb=# CREATE COLUMN ENCRYPTION KEY cek1 WITH VALUES (CLIENT_MASTER_KEY = cmk1, ALGORITHM = AES_256_GCM);
CREATE COLUMN ENCRYPTION

# 6 更改用于重加密该CEK的新的CMK
gaussdb=# ALTER COLUMN ENCRYPTION KEY cek1 WITH VALUES (CLIENT_MASTER_KEY = cmk2);
ALTER COLUMN ENCRYPTION KEY

# 7 删除CMK和CEK
gaussdb=# DROP COLUMN ENCRYPTION KEY cek1;
DROP COLUMN ENCRYPTION KEY
gaussdb=# DROP CLIENT MASTER KEY cmk1;
DROP CLIENT MASTER KEY
gaussdb=# DROP CLIENT MASTER KEY cmk2;
DROP CLIENT MASTER KEY

# 8 删除第四步中创建的秘钥
gaussdb=# \! gs_ktool -d1
DELETE
1
gaussdb=# \! gs_ktool -d1
DELETE
2

父主题: SQL语法

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家