VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

CREATE CLIENT MASTER KEY

功能描述

创建一个客户端主密钥对象,该对象可用于加密Column Encryption Key对象。

注意事项

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

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

  • 由本语法创建的CMK对象中,仅存储从独立的密钥管理工具/服务/组件中读取密钥的方法,而不存储密钥本身。

语法格式

CREATE CLIENT MASTER KEY client_master_key_name
[WITH] ( ['KEY_STORE' , 'KEY_PATH' , 'ALGORITHM'] );

参数说明

  • client_master_key_name

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

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

  • WITH

    必选关键字,没有实际的作用。

  • KEY_STORE

    指定管理CMK的密钥工具或组件, KEY_STORE负责管理多个CMK密钥。

    取值:目前仅支持localkms。

  • KEY_PATH

    KEY_PATH选项用于在KEY_STORE中唯一标识CMK。

    取值类似:“key_path_value”。

  • ALGORITHM

    该参数用于指定加密算法的类型。

    取值范围:RSA_2048、RSA_3072和SM2。

  • 密钥存储路径:默认情况下,localkms将在$LOCALKMS_FILE_PATH路径下生成/读取/删除密钥文件,用户可手动配置该环境变量。但是,用户也可以不用单独配置该环境变量,在尝试获取$LOCALKMS_FILE_PATH失败时,localkms会尝试获取$GAUSSHOME/etc/localkms/路径,如果该路径存在,则将其作为密钥存储路径。
  • 密钥相关文件名:使用CREATE CMK语法时,localkms将会创建四个与存储密钥相关的文件。示例:当KEY_PATH = “key_path_value”, 四个文件的名称分别为key_path_value.pub、key_path_value.pub.rand、 key_path_value.priv、 key_path_value.priv.rand。 所以,为了能够成功创建密钥相关文件,在密钥存储路径下,应该保证没有已存在的与密钥相关文件名同名的文件。

示例

1、执行以下命令打开密态开关,连接密态数据库。

vsql -p 5432 postgres -r -C

2、创建客户端加密主密钥(CMK)。

CREATE CLIENT MASTER KEY ImgCMK1 WITH (KEY_STORE = localkms, KEY_PATH = "key_path_value1", ALGORITHM = RSA_2048);

3、查询存储密钥信息的系统表。

SELECT * FROM gs_client_global_keys;

查询结果如下所示:

 global_key_name | key_namespace | key_owner | key_acl |        create_date
-----------------+---------------+-----------+---------+----------------------------
 imgcmk1         |          2200 |        10 |         | 2023-07-31 15:50:47.192756
(1 row)

4、删除删除客户端加密主密钥。

DROP CLIENT MASTER KEY ImgCMK1;