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;