KingbaseES V8R3 表加密

news/2024/4/24 20:37:36/文章来源:https://blog.csdn.net/lyu1026/article/details/129273539

前言

透明加密是指将数据库page加密后写入磁盘,当需要读取对应page时进行加密读取。此过程对于用户是透明, 用户无需干预。

该文档进行数据库V8R3版本测试透明加密功能,需要说明,该版本发布时间早于V8R6,所以只能进行表加密,而没有表空间加密功能。

测试透明加密

参数说明:

a) encrypt_user_table:布尔型。
b) 参数级别:用户级。
c) 参数值域、默认值:默认值为off,表示不开启用户表默认加密。

实验数据库版本环境:

TEST=# select * from version();VERSION
-------------------------------------------------------------------------------------------------------------------------Kingbase V008R003C002B0340 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
(1 row)

1、创建非默认加密表

此时的参数encrypt_user_table=off:

TEST=# show encrypt_user_table ;encrypt_user_table
--------------------off
(1 row)

create table 语法方式创建加密表,注意语法中加入了关键字ENCRYPTED:

SYSTEM用户创建加密表

TEST=# CREATE TABLE TABLE_ENCRYPT(a INT, b varchar(10)) ENCRYPTED;
CREATE TABLE
TEST=# SELECT RELNAME, RELISENCRYPTED, LENGTH(RELTDEKEY) FROM SYS_CLASS WHERE RELNAME='TABLE_ENCRYPT';RELNAME    | RELISENCRYPTED | LENGTH
---------------+----------------+--------TABLE_ENCRYPT | t              |     32
(1 row)

注:字段说明

relisencrypted bool 该对象是否是透明加密的。

创建索引也是加密的

TEST=# CREATE INDEX TABLE_ENCRYPT_INDEX ON TABLE_ENCRYPT(a);
CREATE INDEX
TEST=# SELECT RELNAME, RELISENCRYPTED, LENGTH(RELTDEKEY) FROM SYS_CLASS WHERE RELNAME='TABLE_ENCRYPT_INDEX';RELNAME       | RELISENCRYPTED | LENGTH
---------------------+----------------+--------TABLE_ENCRYPT_INDEX | t              |     32
(1 row)

插入数据,查看表文件:

TEST=# insert into TABLE_ENCRYPT values(1, 'aaaa');
INSERT 0 1
TEST=# insert into TABLE_ENCRYPT values(2, 'bbbb');
INSERT 0 1
TEST=# checkpoint;
CHECKPOINT
TEST=# select sys_relation_filepath('TABLE_ENCRYPT');SYS_RELATION_FILEPATH
-----------------------base/14941/49218
(1 row)

SYSTEM用户创建非加密表(普通表),并查看表文件:

TEST=# CREATE TABLE TABLE_NOENCRYPT(a INT, b varchar(10));
CREATE TABLE
TEST=# insert into TABLE_NOENCRYPT values(1, 'aaaa');
INSERT 0 1
TEST=# insert into TABLE_NOENCRYPT values(2, 'bbbb');
INSERT 0 1
TEST=# checkpoint;
CHECKPOINT

TEST=# select sys_relation_filepath('TABLE_NOENCRYPT');
SYS_RELATION_FILEPATH
-----------------------
base/14941/57411
(1 row)

如下图,使用操作系统命令hexdump 查看表已经加密成功:从输出结果已经看不到连续字符‘aaaa’,转为其他乱码字符显示。

img

下面的图片为非加密表的输出结果,可以看到输出了‘aaaa’表中的数据,说明表没有进行加密。

img

2、创建默认加密表:

确认修改配置文件,kingbase.conf,增加encrypt_user_table=on,重启数据库。

这里create table 创建表语法与创建普通表无异,不需要增加关键字ENCRYPTED

SYSTEM用户创建用户表:

TEST=# show encrypt_user_table ;
encrypt_user_table
--------------------
on
(1 row)

TEST=# CREATE TABLE TABLE_ENCRYPT(a INT, b varchar(10)) ;
CREATE TABLE查看视图sys_class中已经进行加密

TEST=# SELECT RELNAME, RELISENCRYPTED, LENGTH(RELTDEKEY) FROM SYS_CLASS WHERE RELNAME='TABLE_ENCRYPT';

RELNAME | RELISENCRYPTED | LENGTH

---------------+----------------+--------

TABLE_ENCRYPT | t | 32

(1 row)

插入数据,查看表文件:

TEST=# insert into TABLE_ENCRYPT values(1, 'aaaa');
INSERT 0 1
TEST=# insert into TABLE_ENCRYPT values(2, 'bbbb');
INSERT 0 1
TEST=# checkpoint;
CHECKPOINT
TEST=# select sys_relation_filepath('TABLE_ENCRYPT');SYS_RELATION_FILEPATH
-----------------------base/14941/49228
(1 row)

hexdump 查看表也被加密,‘aaaa’字符已经不能正常显示。

img

3、使用CTS语法为已存在非加密表进行加密

TEST=# \d aaaTable "PUBLIC.AAA"Column |  Type   | Modifiers
--------+---------+-----------EE     | INTEGER |NAME   | TEXT    |AAA表未加密
TEST=# SELECT RELNAME, RELISENCRYPTED, LENGTH(RELTDEKEY) FROM SYS_CLASS WHERE RELNAME='AAA';RELNAME | RELISENCRYPTED | LENGTH
---------+----------------+--------AAA     | f              |
(1 row)AAA表数据:

TEST=# select* from aaa;
EE | NAME
----+------
1 |
2 |
3 |
4 |
5 | king
(5 rows)

需要参数encrypt_user_table开启
TEST=# show encrypt_user_table ;encrypt_user_table
--------------------on
(1 row)TEST=# create table  TABLE_ENCRYPT2 as select * from aaa;
SELECT 5
TEST=#创建完TABLE_ENCRYPT2表处于加密模式
TEST=# SELECT RELNAME, RELISENCRYPTED, LENGTH(RELTDEKEY) FROM SYS_CLASS WHERE RELNAME='TABLE_ENCRYPT2';RELNAME     | RELISENCRYPTED | LENGTH
----------------+----------------+--------TABLE_ENCRYPT2 | t              |     32
(1 row)TABLE_ENCRYPT2表数据和表AAA一致

TEST=# select * from TABLE_ENCRYPT2;
EE | NAME
----+------
1 |
2 |
3 |
4 |
5 | king
(5 rows)

TEST=# select sys_relation_filepath('TABLE_ENCRYPT2');
SYS_RELATION_FILEPATH
-----------------------
base/14941/57414
(1 row)

hexdump查看TABLE_ENCRYPT2表已经处于加密状态,数据king无法正常显示 hexdump -c 57414 |grep k

img

查看非加密表文件:

TEST=# select sys_relation_filepath('AAA');SYS_RELATION_FILEPATH
-----------------------base/14941/24580
(1 row)

hexdump查看AAA表没有处于加密状态 hexdump -c 24580 |grep k

如图,没加密情况可以正常显示数据king

img

结论

KingbaseESV8R3版本数据库可以配置透明加密功能中的表加密,但没有实现表空间加密功能,建议客户尽量使用V8R6版本透明加密功能。

KingbaseESV8R3版本数据库可以通过create table语法中加入关键字ENCRYPTED实现表加密,也可以通过在kingbase.conf中设置参数encrypt_user_table=on实现默认表加密功能。

KingbaseESV8R3数据库可以通过CTS方式将未加密的表改为加密方式存储。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_75679.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLite安装及常用语句

SQLite简介SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。SQLite安装官网下载 SQLite Download Page新建一个sqlite文件夹,将下载…

【Servlet篇2】创建一个web项目

在上一篇文章当中,已经提到了什么是Maven,以及如何使用maven从中央仓库下载jar包。【Tomcat与Servlet篇1】认识Tomcat与Maven_革凡成圣211的博客-CSDN博客Tomcat,mavenhttps://blog.csdn.net/weixin_56738054/article/details/129228140?spm…

2023年java春招面试题及答案

2023年java春招面试题1、下面有关jdbc statement的说法错误的是?2、下面有关JVM内存,说法错误的是?3、下面有关servlet service描述错误的是?4、下面有关servlet和cgi的描述,说法错误的是?5、下面有关SPRIN…

LeetCode 1237. Find Positive Integer Solution for a Given Equation【双指针,二分,交互】

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

开发场景中前端交付的对于后端数据的获取功能书写+页面简繁体转换+页面链接跳转新页面

1,开发场景中前端交付对于后端数据的获取功能书写 首先,我们明确基本逻辑概念,前端获取数据本质是利用ajax中的api接口来获取变量,再将其导入我们的data; 明确基本概念开发就可以进行ajax的定义 下文中e变量是获取前端…

全志T3+FPGA国产核心板——Pango Design Suite的FPGA程序加载固化

本文主要基于紫光同创Pango Design Suite(PDS)开发软件,演示FPGA程序的加载、固化,以及程序编译等方法。适用的开发环境为Windows 7/10 64bit。 测试板卡为全志T3+Logos FPGA核心板,它是一款基于全志科技T3四核ARM Cortex-A7处理器 + 紫光同创Logos PGL25G/PGL50G FPGA设计…

【观察】连续八年霸榜云数据库“领导者”,揭秘亚马逊云科技背后的“统治力”...

日前,全球市场分析机构 Gartner发布《2022 云数据库管理系统魔力象限》报告。其中,在Gartner本次魔力象限报告评估的20家供应商中,亚马逊云科技在纵轴“执行能力”和横轴“愿景完整性”两个维度分别处于最高、最右位置,这也是亚马…

ANTLR的IDE——ANTLRWorks2的安装及基本使用

1. ANTLRWorks2的简单介绍 ① ANTLR官网对ANTLRWorks2的介绍 ANTLRWorks 2.此IDE是ANTLR v3 / v4语法以及StringTemplate模板的复杂编辑器。 它可以运行ANTLR工具来生成识别器,并可以运行TestRig(在命令行上运行)来测试语法。 要将ANTLR生成…

Java内置队列和高性能队列Disruptor

一、队列简介 队列是一种特殊的线性表,遵循先入先出、后入后出(FIFO)的基本原则,一般来说,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,但是java的某些队列运行在任何地方插入删…

EEGLAB处理运动想象脑电数据

最近在看论文时,经常看到作者处理数据的过程,之前都是一代而过,知道怎么处理就可以了,一直没有实践,最近需要一些特殊的数据,需要自己处理出来,这里尝试着自己用MATLAB处理数据,记录…

Kubernetes12:k8s集群安全机制 ***与证书生成***

Kubernetes12:k8s集群安全机制 1、概述 1)访问一个k8s集群的时候,需要经过以下三个步骤才能完成具体操作 第一步:认证操作第二部:鉴权操作(授权)第三部:准入控制操作 2&#xff…

Java枚举详解

一.枚举 1.为什么有枚举? 如果我们的程序需要表示固定的几个值: 比如季节:spring (春),summer(夏),autumn(秋),winter(冬) 用常量表示: public static final int SEASON_SPRING 1;public st…

记一次MySQL数据迁移到SQLServer全过程

为什么要做迁移? 由于系统版本、数据库的升级,导致测试流程阻塞,为了保证数据及系统版本的一致性,我又迫切需要想用这套环境做性能测试,所以和领导、开发请示,得到批准后,便有了这次学习的机会…

idea 安装JUnit单元测试框架

JUnit是一套专门用于java的单元测试框架,主要是测试方法 junit4官方网站: JUnit – About junit5官方网站:JUnit 5 框架依赖:junit-4.12.jar;hamcrest-core-1.3.jar 安装步骤: (1&#xff…

hiveSQL开窗函数详解

hive开窗函数 文章目录hive开窗函数1. 开窗函数概述1.1 窗口函数分类1.2 窗口函数和普通聚合函数的区别2. 窗口函数的基本用法2.1 基本用法2.2 设置窗口的方法2.2.1 window_name2.2.2 partition by2.2.3 order by 子句2.2.4 rows指定窗口大小窗口框架2.3 开窗函数中加 order by…

一文吃透 Spring 中的 AOP 编程

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

【C++】二叉搜索树的模拟实现

一、概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别…

开源ZYNQ AD9361软件无线电平台

(1) XC7Z020-CLG400 (2) AD9363 (3) 单发单收,工作频率400MHz-2.7GHz (4) 发射带PA,最大输出功率约20dbm (5) 接收带LNA,低…

Linux学习(9.1)文件系统的简单操作

以下内容转载自鸟哥的Linux私房菜 原文:鸟哥的 Linux 私房菜 -- Linux 磁盘与文件系统管理 (vbird.org) 磁盘与目录的容量 df:列出文件系统的整体磁盘使用量;du:评估文件系统的磁盘使用量(常用在推估目录所占容量) df du 实体…

微信小程序 《新闻列表》 案例

目录:一,步骤。要求1:主页头部的轮播图要求2:中间内容上的信息案列排版。要求3:上拉加载内容。要求4:在信息加载完成后,给用户提示二,过程中要注意的几点。1.在微信小程序中&#xf…