openGauss- 全密态数据库等值查询
可得到性
本特性自openGauss 1.1.0版本开始引入。
特性简介
密态数据库意在办理数据全生命周期的隐私掩护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成数据加密并发送给服务端后,在攻击者借助系统脆缺点窃取用户数据的状态下仍然无法得到有效的代价信息,从而起到掩护数据隐私的作用。
客户代价
由于整个业务数据流在数据处理过程中都是以密文形态存在,通过全密态数据库,可以实现:
- 掩护数据在云上全生命周期的隐私安全,无论数据处于何种状态,攻击者都无法从数据库服务端获取有效信息。
- 帮助云服务提供商获取第三方信托,无论是企业服务场景下的业务管理员、运维管理员,还是消费者云业务下的应用开辟者,用户通过将密钥掌握在本身手上,使得高权限用户无法获取数据有效信息。
- 让云数据库借助全密态能力更好的服从个人隐私掩护方面的法律法规。
特性描述
从用户视角来看,整个密态等值查询的主要功能分为三部门,主要通过新增的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客户端。
详情检察:https://opengauss.org
详情检察:https://docs-opengauss.osinfra.cn
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |