GaussDB-CREATE CLIENT MASTER KEY

67 阅读3分钟

GaussDB-CREATE CLIENT MASTER KEY

功能描述

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

注意事项
  • 本语法属于全密态数据库特有语法。

  • 连接数据库时,在数据库驱动侧,需开启密态等值查询特性连接参数,才可执行本语法。

  • 主密钥由外部密钥管理者提供,本语法仅处理密钥来源、密钥ID等信息,已支持的外部密钥管理者包括:

    1. 华为云密钥管理服务。
    2. 用户密码派生密钥或直接提供密钥user_token。
    3. 三方加密库提供密钥third_kms。
  • 在使用本语法前,请参考《特性指南》中“设置密态等值查询”章节,在数据库驱动侧,为外部密钥管理者设置环境变量。

语法格式
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_STORE为third_kms时,无需用户提供KEY_PATH和ALGORITHM参数。

  • KEY_PATH

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

  • ALGORITHM

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

    KEY_STOREKEY_PATHALGORITHM
    hcs_kms格式:‘{KmsApiUrl}/{密钥ID}'请自行查询密钥服务器的地址KmsApiUrlAES_256SM4
    user_token不需用户提供KEY_PATHAES_256_CBCAES_256_GCMSM4
    third_kms不需用户提供KEY_PATH不需用户提供ALGORITHM
示例
  • 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;
    
  • third_kms场景。

    --连接数据库,使用特权账号,创建新用户例如alice。
    gsql -p 端口号 -d postgres -r
    gaussdb=# CREATE USER alice PASSWORD '*******';
    gaussdb=# \q
    
    --连接数据库,务必使用"-C"参数。
    gsql -p 端口号 -d postgres -U alice -r -C
    
    --将三方动态库libthird_crypto.so放在gsql/lib下。
    --使用元命令加载三方动态库。 
    gaussdb=> \cmi enable_crypto_module=on,module_third_msg=MSG_REQ_BY_THIRD_PARTY
    或者
    gaussdb=> \crypto_module_info enable_crypto_module=on,module_third_msg=MSG_REQ_BY_THIRD_PARTY
    
    --创建主密钥。
    gaussdb=> CREATE CLIENT MASTER KEY alice_cmk WITH ( KEY_STORE = third_kms);
    
    --删除主密钥。
    gaussdb=> DROP CLIENT MASTER KEY alice_cmk;
    gaussdb=> \q
    
    --连接数据库,使用特权账号,删除用户alice。
    gsql -p 端口号 -d postgres -r
    gaussdb=# DROP USER alice;
    
相关链接

DROP CLIENT MASTER KEY

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…