yuan-er

导航

 

GaussDB-密态等值查询概述

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

加密模型

全密态数据库使用多级加密模型,加密模型中涉及3个对象:数据、列密钥和主密钥,以下是对3个对象的介绍:

  • 数据
    1. SQL语法中包含的数据,比如INSERT... VALUES ('data')语法中包含'data'。
    2. 从数据库服务端返回的查询结果,如执行SELECT语法返回的查询结果。

    密态数据库会在驱动中,对SQL语法中属于加密列的数据进行加密,对数据库服务端返回的属于加密列的查询结果进行解密。

  • 列密钥:数据由列密钥进行加密,列密钥由数据库驱动生成或由用户手动导入,列密钥密文存储在数据库服务端。
  • 主密钥:列密钥由主密钥加密,主密钥由外部密钥管理者生成并存储。数据库驱动会自动访问外部密钥管理者,以实现对列密钥进行加解密。

整体流程

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

一、生成主密钥阶段:首先,用户需在外部密钥管理中生成主密钥。外部密钥管理分为多种,包括:华为云密钥服务、,根据使用场景选择其中一种。生成主密钥后,需在外部密钥管理中,准备访问主密钥的参数,以供数据库使用。

二、执行DDL阶段:在本阶段,用户可使用密态数据库的密钥语法依次定义主密钥和列密钥,然后定义表并指定表中某列为加密列。定义主密钥和列密钥的过程中,需访问上一阶段生成的主密钥。

三、执行DML阶段:在创建加密表后,用户可直接执行包含但不限于INSERT、SELECT、UPDATE、DELETE等语法。数据库驱动会自动根据上一阶段的加密定义自动对加密列中的数据进行加解密。

四、清理阶段:依次删除加密表、列密钥和主密钥。

生成主密钥阶段

首次使用密态数据库时,需使用外部密钥管理服务生成至少一个主密钥,生成方式如下:

  • 华为混合云场景
    1. 进入密钥管理服务:登录华为云管控,搜索并进入"数据加密服务"。
    2. 创建主密钥:选择"密钥管理"功能,并通过"创建密钥"按钮创建至少1个密钥,即主密钥。

    3. 记住主密钥ID:成功创建主密钥后,每个主密钥都有1个密钥ID。在后续使用密态数据过程中,需配置主密钥ID,数据库驱动会通过Restful接口访问该主密钥。

在生成主密钥后,需为数据驱动准备访问主密钥的参数,比如用户名、资源ID等参数。华为云支持两种身份认证方式,两种方式需要的参数个数与参数类型不同,选择其中一种方式即可。下述步骤介绍如何获取这些参数:

  • 方式一 aksk认证
    1. AK、SK:登录华为云管控,单击右上角"用户名",进入"个人设置"页面。在"管理访问密钥"中,创建新的访问密钥,即AK和SK。初次创建访问密钥时,可下载密钥,下载后可在文件中分别找到AK和SK。

    2. 资源ID:进入"个人设置"页面,在"资源空间列表"中,可获取"资源ID"。

  • 方式二 账号密码认证
    1. 用户名、所属租户、资源空间名称、资源空间ID、区域:登录华为云管控,单击右上角"用户名",进入"个人设置"页面。进入"个人设置"页面。可依次获取所需参数。

    2. IAM服务器地址、KMS服务器地址:请自行根据部署方式查询。
    3. 用户密码:即用户名对应的密码。
 
posted on 2024-11-20 08:58  数据库笔记  阅读(25)  评论(0)    收藏  举报