华为云云数据库GaussDB密态等值查询概述_云淘科技

随着企业数据上云,数据的安全隐私保护面临越来越严重的挑战。密态数据库将解决数据整个生命周期中的隐私保护问题,涵盖网络传输、数据存储以及数据运行状态;更进一步,密态数据库可以实现云化场景下的数据隐私权限分离,即实现数据拥有者和实际数据管理者的数据读取能力分离。密态等值查询将优先解决密文数据的等值类查询问题。

加密模型

全密态数据库使用多级加密模型,不同加密场景中密钥的功能如下:

数据:密态数据库对SQL语句中属于加密列的数据进行加密,对数据库服务端返回的属于加密列的查询结果进行解密。
列密钥:数据由列密钥进行加密,而列密钥由主密钥加密。列密钥密文存储在数据库服务端。
主密钥:由外部密钥管理生成并存储,数据库驱动会自动访问外部密钥管理,以实现对列密钥进行加解密。

整体流程

在使用全密态数据库的过程中,主要流程包括如下五个阶段,本节介绍整体流程,使用gsql操作密态数据库、使用JDBC操作密态数据库章节介绍详细使用流程。

准备阶段:首先,用户需在外部密钥管理中生成主密钥。外部密钥管理包括华为云密钥服务和gs_ktool密钥管理工具,根据使用场景选择其中一种。
配置阶段:在应用中,通过环境变量或数据库驱动参数设置访问外部密钥管理的信息,在后续操作中,数据库驱动需使用本阶段的配置信息访问外部密钥管理。
执行DDL阶段:在本阶段,用户需先使用密态数据库的密钥语法定义主密钥和列密钥,然后定义表并指定表中某列为加密列。
执行DML阶段:在创建加密表后,用户可直接执行包含但不限于INSERT、SELECT、UPDATE、DELETE等语法,数据库驱动会自动根据上一阶段的加密定义自动对加密列中的数据进行加解密。
清理阶段:依次删除加密表、列密钥和主密钥。

准备阶段

首次使用密态数据库需要执行准备阶段步骤,后续跳过该阶段即可。

密态数据库支持使用不同的外部密钥来管理主密钥,根据场景选择其中一种即可。

华为云场景

用户需先在打开华为云官网:https://www.huaweicloud.com,注册账号,登录账号。
在华为云中搜索“统一身份认证服务”,进入该服务,如图所示选择“用户”功能,并创建一个IAM用户,为IAM用户设置IAM密码,并为新的IAM用户设置使用“数据加密服务”的权限。

接下来,请重新回到登录页面,登录方式选择为“IAM用户”,使用新创建的IAM用户进行登录。后续操作均由该IAM用户完成。
在华为云中搜索“数据加密服务”,进入该服务,如下图所示选择“密钥管理”功能,并通过“创建密钥”按钮创建密钥,密钥创建成功后,可看到每个密钥都具有1个密钥ID。请记住该密钥ID,在后续执行DDL阶段中创建主密钥语法时,需使用该密钥ID。

本步生成的密钥即密态数据库中使用的主密钥,该密钥将由华为云密钥管理服务存储。以后执行与加解密相关的SQL语句时,数据库驱动会通过华为云的restful接口自动访问该密钥。restful接口详细介绍可查阅华为云官方文档:https://www.huaweicloud.com/product/dew.html。

gs_ktool场景

从数据库的安装包中查找名为“GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Gsql.tar.gz”的安装包。
解压该安装包,可找到名为“gsql_env.sh”的文件,该文件中包含配置环境变量的命令,并通过如下命令创建密钥,密钥创建成功后,可看到每个密钥都具有1个密钥ID。

# 1 通过脚本配置环境变量
[terminal] # source gsql_env.sh

# 2 通过密钥管理工具gs_ktool生成1个密钥,生成成功后返回密钥ID,密钥ID从1开始编号,每次创建密钥时ID递增加1。
[terminal] # gs_ktool -g
GENERATE
1

本步生成的密钥即密态数据库中使用的主密钥,该密钥由gs_ktool工具存储。以后执行与加解密相关的SQL语句时,数据库驱动会通过动态库/静态库访问本密钥。gs_ktool详细使用流程参考《工具参考》中的“客户端工具 >gs_ktool”章节。

配置阶段

配置访问外部密钥的参数

华为云场景

通过环境变量配置如下信息:

[terminal] # export HUAWEI_KMS_INFO='iamUrl=https://iam.{项目}.myhuaweicloud.com/v3/auth/tokens, iamUser={IAM用户名}, iamPassword={IAM用户密钥}, iamDomain={账号名}, kmsProject={项目}'

在华为云控制台中,点击右上角用户名,并进入“我的凭证”,可看到下图所示页面,该页面可获取上述所需参数:项目、IAM用户名、账号名。另外,请记住本页面的项目ID,在后续执行DDL阶段中创建主密钥语法时,需使用该项目ID。

图1 华为云参数获取页面

# 示例
[terminal] # export HUAWEI_KMS_INFO='iamUrl=https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens, iamUser=test_user, iamPassword=**********, iamDomain=test_account, kmsProject=cn-north-4'

gs_ktool

通过环境变量配置如下信息:

# 方式一:手动配置,名为“GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Gsql.tar.gz”的安装包中含有名为“gs_ktool_conf.ini”的配置文件,在环境变量中配置该文件的路径
[terminal] # export GS_KTOOL_FILE_PATH=配置文件所在文件夹

# 方式二:脚本配置,名为“GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Gsql.tar.gz”的安装包中含有名为“gsql_env.sh”的脚本文件,脚本中会自动配置GS_KTOOL_FILE_PATH环境变量
[terminal] # source gsql_env.sh

父主题: 设置密态等值查询

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家