更新时间:2024-07-03 GMT+08:00
分享

CREATE 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和SM4_SM3;

  • 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字节的整数倍。

示例

1
2
3
4
5
--创建列加密密钥(CEK)
openGauss=> CREATE COLUMN ENCRYPTION KEY a_cek WITH VALUES (CLIENT_MASTER_KEY = a_cmk, ALGORITHM  = AEAD_AES_256_CBC_HMAC_SHA256);
CREATE COLUMN ENCRYPTION KEY
openGauss=> CREATE COLUMN ENCRYPTION KEY another_cek WITH VALUES (CLIENT_MASTER_KEY = a_cmk, ALGORITHM  = SM4_SM3);
CREATE COLUMN ENCRYPTION KEY

相关文档