更新时间:2024-06-03 GMT+08:00

CREATE CLIENT MASTER KEY

功能描述

密态等值查询特性使用多级加密模型,主密钥加密列密钥,列密钥加密数据。本语法用于创建主密钥对象。

注意事项

  • 本语法属于全密态数据库特有语法。
  • 连接数据库时,在数据库驱动侧,需开启密态等值查询特性连接参数,才可执行本语法。
  • 主密钥由外部密钥管理者提供,本语法仅处理密钥来源、密钥ID等信息,已支持的外部密钥管理者包括:
    1. 华为云密钥管理服务huawei_kms。
    2. 用户密码派生密钥或直接提供密钥user_token。
  • 在使用本语法前,请参考《特性指南》中“设置密态等值查询”章节,在数据库驱动侧,为外部密钥管理者设置环境变量。

语法格式

CREATE CLIENT MASTER KEY client_master_key_name WITH (KEY_STORE = key_store_name, KEY_PATH = key_path_value, ALGORITHM = algorithm_type);

参数说明

  • client_master_key_name

    该参数作为密钥对象名,在同一命名空间下,需满足命名唯一性约束。

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

  • KEY_STORE

    外部密钥管理者。取值见表1

    当KEY_STORE为user_token时,无需用户提供KEY_PATH参数。

  • KEY_PATH

    由外部密钥管理者管理某个的密钥,不同密钥管理者格式不同。取值为字符串,详见表1。字符串由单引号或双引号包含,如果字符串长度超过64,则只能使用单引号包含。

  • ALGORITHM

    密钥用于何种加密算法。取值见表1

    表1 针对不同密钥管理者的参数值

    KEY_STORE

    KEY_PATH

    ALGORITHM

    huawei_kms

    格式:‘{KmsApiUrl}/{密钥ID}'

    参考:'https://kms.{项目}.myhuaweicloud.com/v1.0/{项目ID}/kms/{密钥ID}'

    示例:'https://kms.cn-north-4.myhuaweicloud.com/v1.0/00000000000000000000000000000000/kms/00000000-0000-0000-0000-000000000000'

    AES_256

    SM4

    user_token

    不需用户提供KEY_PATH

    AES_256_CBC

    AES_256_GCM

    SM4

示例

  • user_token场景。
    --解压GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Gsql.tar.gz安装包,找到脚本gsql_env.sh
    
    --通过脚本,自动配置环境变量。
    source gsql_env.sh
    
    --连接数据库,使用特权账号,创建新用户例如alice。
    gsql -p 端口号 -d postgres -r
    gaussdb=# CREATE USER alice PASSWORD '*******';
    gaussdb=# \q
    
    --连接数据库,务必使用"-C"参数。
    gsql -p 端口号 -d postgres -U alice -r -C
    
    --设置用户密码或派生密钥,gsql可以通过password=stdin或key_token=stdin进行交互式输入。 
    --设置用户密码,密码长度不小于8,包含大、小写字母、数字、符号的其中3种。
    gaussdb=> \key_info keyType=user_token,password=*********
    --或者直接通过对接满足安全强度的密钥,此处密钥为16进制编码。
    gaussdb=> \key_info keyType=user_token,key_token=********************************
    
    --创建主密钥。
    gaussdb=> CREATE CLIENT MASTER KEY alice_cmk WITH ( KEY_STORE = user_token , ALGORITHM = AES_256_GCM );
    
    --删除主密钥。
    gaussdb=> DROP CLIENT MASTER KEY alice_cmk;
    gaussdb=> \q
    
    --连接数据库,使用特权账号,删除用户alice。
    gsql -p 端口号 -d postgres -r
    gaussdb=# DROP USER alice;

相关链接

DROP CLIENT MASTER KEY