GaussDB-密态等值查询概述

GaussDB-密态等值查询概述

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

加密模型

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

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

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

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

整体流程

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

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

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

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

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

生成主密钥阶段

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

 
posted @ 2024-12-27 18:15  jerrywang1983  阅读(13)  评论(0)    收藏  举报