openGauss 全密态数据库等值查询

2024-04-07 19:12

本文主要是介绍openGauss 全密态数据库等值查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

全密态数据库等值查询

可获得性

本特性自openGauss 1.1.0版本开始引入。

特性简介

密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成数据加密并发送给服务端后,在攻击者借助系统脆弱点窃取用户数据的状态下仍然无法获得有效的价值信息,从而起到保护数据隐私的作用。

客户价值

由于整个业务数据流在数据处理过程中都是以密文形态存在,通过全密态数据库,可以实现:

  1. 保护数据在云上全生命周期的隐私安全,无论数据处于何种状态,攻击者都无法从数据库服务端获取有效信息。
  2. 帮助云服务提供商获取第三方信任,无论是企业服务场景下的业务管理员、运维管理员,还是消费者云业务下的应用开发者,用户通过将密钥掌握在自己手上,使得高权限用户无法获取数据有效信息。
  3. 让云数据库借助全密态能力更好的遵守个人隐私保护方面的法律法规。

特性描述

从用户视角来看,整个密态等值查询的主要功能分为三部分,主要通过新增的KeyTool工具以及openGauss的增强gsql客户端来实现。

首先是客户端密钥管理功能,用户借助新增的KeyTool工具来实现CMK的生成、销毁和更新,同时支持密钥导入导出。通过该KeyTool工具的导入导出功能,CMK可以在不同的客户端间进行传输;同时,KeyTool实现了单个客户端侧的密钥管理,通过配置管理文件,可以对密钥的存储、更新进行管理。

其次该特性提供密钥创建功能和加密表创建功能,通过新增SQL语法“CREATE CLINET MASTER KEY”和“CREATE COLUMN ENCRYPTION KEY”实现在数据库侧记录和管理CMK和CEK元信息,CMK和CEK信息被记录在新增的系统表中。通过扩展“CREATE TABLE”语法为表的每一个敏感信息列指定列加密密钥和加密算法,方便后续数据密文存储。

最后该特性对用户提供密态等值查询能力,该部分功能是整个特性的核心,虽然用户对整个密文查询无感知,但是在指定数据的加密信息后,针对该敏感数据的查询将受限于当前密态等值查询的支持规格。

从整体视角来看,该特性所实现的功能主要是为了用户基于敏感数据保护的诉求来存储管理数据并基于密文数据信息实现查询任务。

特性增强

无。

特性约束

  • 数据以列级别进行加密,而无法按照行级别区分加密策略。

  • 除Rename操作外,不支持通过Alter Table语法实现对加密表列的更改(包括加密列和非加密列之间的互转换),支持添加(Add)和删除(Drop)对应的加密列。

  • 不支持对加密列设置大部分check限制性语法,但是支持check(column is not null)语法。

  • 当support_extended_features = off时,不支持对加密列使用primary key、unique。当support_extended_features = on时,仅支持确定性加密列使用primary key、unique。

  • 不支持不同数据类型之间的隐式转换。

  • 不支持不同数据类型密文间的集合操作。

  • 不支持加密列创建范围分区。

  • 加密列仅支持repeat和empty_blob()函数。

  • 当前版本只支持gsql和JDBC(部署在linux操作系统)客户端,暂不支持ODBC等其他客户端实现密态等值查询。

  • 使用JDBC客户端时,密态等值查询特性不能与负载均衡或自动选主特性同时开启。

  • 只支持通过客户端执行copy from stdin的方式、\copy命令的方式以及insert into values(…)的方式往密态表中导入数据。

  • 不支持从加密表到文件之间的copy操作。

  • 不支持包括排序、范围查询以及模糊查询等在内的除等值以外的各种密态查询。

  • 支持部分函数存储过程密态语法,密态支持函数存储过程具体约束查看《数据库管理》数据安全管理/密态支持函数/存储过程章节。

  • 不支持通过insert into…select…、merge into语法将非加密表数据插入到加密表数据中。

  • 对于处于连接状态的连接请求,只有触发更新缓存的操作(更改用户、解密加密列失败等)和重新建连后才能感知服务端CEK信息变更。

  • 不支持在由随机加密算法加密的列上进行密态等值查询。

  • 对于密态等值查询运算中如果参与比较的两个属性条件采用不同的数据加密密钥,返回报错。

  • 密态等值查询不支持时序表、外表,不支持ustore存储引擎加密。

  • 对于数据库服务侧配置变更(pg_settings系统表、权限、密钥和加密列等信息), 需要重新建立JDBC连接保证配置变更生效。

  • 不支持多条SQL语句一起执行,insert into语句多批次执行场景不受此条约束限制。

  • 密态数据库对长度为零的空字符串不进行加密。

  • 确定性加密存在频率攻击的潜在风险,不建议在明文频率分布明显的场景下使用。

  • 密态等值查询支持的数据类型包括:

    数据类

    类型

    描述

    整型

    tinyint/tinyint(n)

    微整数,同int1

    smallint

    小整数,同int2

    int4

    常用整数

    binary_integer

    Oracle兼容类型,常用整数

    bigint/bigint(n)

    大整数,同int8

    数值类型

    numeric(p,s)

    精度为p的准确数值类型

    number

    Oracle兼容类型,等同numeric(p,s)

    浮点类型

    float4

    单精度浮点数

    float8

    双精度浮点数

    double precision

    双精度浮点数

    字符类型

    char/char(n)

    定长字符串,不足补空格,默认精度为1

    varchar(n)

    变长字符串, n是指允许的最大字节长度

    text

    文本类型

    varchar2(n)

    Oracle兼容类型,等同varchar(n)

    clob

    大文本类型

    二进制类型

    bytea

    变长的二进制字符串

    blob

    二进制大对象

依赖关系

使用全密态相关特性建议更新至相同版本的libpq_ce客户端驱动及JDBC客户端。

这篇关于openGauss 全密态数据库等值查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883431

相关文章

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满