更新时间:2026-10-21 GMT+08:00
分享

CREATE COLUMN ENCRYPTION KEY

功能描述

创建一个列加密密钥对象(CEK),该密钥可用于加密表中的指定列。

注意事项

  • 该语法属于全密态数据库特有语法。
  • 当使用gsql连接数据库服务器时,需使用“-C”参数,打开全密态数据库的开关,才能使用CREATE COLUMN ENCRYPTION KEY命令。
  • 在定义表中列字段时,可指定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

    新创建的列密钥对象名。在同一命名空间下,CEK名需满足命名唯一性约束。由该语法创建的列密钥对象可用于列级加密。

    取值范围:字符串,要符合标识符命名规范。

  • CLIENT_MASTER_KEY

    客户端主密钥,用于加密指定的列密钥对象。

    取值范围:CMK对象名,该CMK对象由CREATE CLIENT MASTER KEY语法创建。

  • ALGORITHM

    密钥采用的加密算法。

    取值范围:AEAD_AES_256_CBC_HMAC_SHA256、AEAD_AES_128_CBC_HMAC_SHA256、AEAD_AES_256_CTR_HMAC_SHA256、AES_256_GCM、SM4_SM3、SM4_HMAC_SM3或SM4_CTR_HMAC_SM3。

    • 不同加密算法的数据膨胀率不同,具体为AEAD_AES_256_CTR_HMAC_SHA256 = SM4_CTR_HMAC_SM3 < AES_256_GCM < AEAD_AES_256_CBC_HMAC_SHA256 = AEAD_AES_128_CBC_HMAC_SHA256 = SM4_SM3 = SM4_HMAC_SM3,推荐使用AEAD_AES_256_CTR_HMAC_SHA256、SM4_CTR_HMAC_SM3或AES_256_GCM加密算法。
  • ENCRYPTED_VALUE

    可选,用户自定义的密钥,密钥长度范围为28个 ~ 256个字符。

    • 28个字符派生的密钥,其安全强度符合AES-128。
    • 如需使用AES-256,密钥长度应为39个字符。
    • 如果不指定,将自动生成256个字符的密钥。
    • 当使用Huawei KMS生成的主密钥对列密钥进行加密时,通过ENCRYPTED_VALUE字段传入的密钥长度须为16字节的整数倍。

    国密算法约束:由于SM2、SM3、SM4等算法属于中国国家密码标准算法,为规避法律风险,需配套使用。如果创建主密钥时指定SM4、SM4_HMAC_SM3、SM4_CTR_HMAC_SM3算法进行加密列密钥,则创建列密钥时必须指定SM4_SM3、SM4_HMAC_SM3、SM4_CTR_HMAC_SM3算法进行加密数据。使用sdf_kms密钥管理时,不受该约束限制。

相关文档