KingbaseES V8R3 表加密

news2025/1/14 17:56:05

前言

透明加密是指将数据库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 aaa
      Table "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.coloradmin.cn/o/379330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我带过的一名C++实习生——Z同学

刚开始带Z同学,吃饭聊天时,我顺便了解了下他的擅长:linux平台下C、C网络编程。 接下来的实习,主要分为两个阶段:小组公共培训和项目实训。 小组公共培训为期2周,主要学习和了解公司文化制度,讲师…

【项目设计】高并发内存池(三)[CentralCache的实现]

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…

脏牛复现(CVE2016-5195)

nmap扫描全网段,发现存货主机,ip为192.168.85.141nmap 192.168.85.0/24nmap 扫描端口,发现80端口,访问该网站nmap -p1-65535 192.168.85.141扫描该网站目录,什么也没扫出来 ,dirb扫描目录的字典在usr/share…

Android TV UI开发常用知识

导入依赖 Google官方为Android TV的UI开发提供了一系列的规范组件,在leanback的依赖库中,这里介绍一些常用的组件,使用前需要导入leanback库。 implementation androidx.leanback:leanback:$version常用的页面 这些Fragment有设计好的样式&…

RocketMQ的一些使用理解

1.RocketMQ的生产者生产负载策略(3种) (1)SelectMessageQueueByHash (一致性hash) (2)SelectMessageQueueByMachineRoom (机器随机) (3)SelectMessageQueueByRandom (随机) 第1种一…

字符流定义及如何深入理解字符流的编码

IputSrem类和OupuSrem类在读写文件时操作的都是字节,如果希望在程序中操作字符,使用这两个类就不太方便,为此JDK提供了字符流。同字节流样,字符流也有两个抽象的顶级父类,分别是Reader和Writer其中,Reader是…

Nvidia jetson nano硬件架构

资料来源 官方文档中心 https://developer.nvidia.com/embedded/downloads -> 选jetson -> Jetson Nano Product Design Guide //产品设计指导(入口) //-> 1.1 References 列出了相关的文档 -> Jetson Nano Developer Kit Carrier Board Specification //板子标注…

MySQL实战之深入浅出索引(下)

1.前言 在上一篇文章中,我们介绍了InnoDB索引的数据结构模型,今天我们再继续聊一下跟MySQL索引有关的概念。 在介绍之前,我们先看一个问题: 表初始化语句 mysql> create table T ( ID int primary key, k int NOT NULL DEFA…

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

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

Linux学习--重定向

重定向的意思是&#xff0c;将数据传到其他地方。 符号解释>输出覆盖重定向>>输出追加重定向<或<<标准输入重定向 1、读取文件内容且写入到另一个文件中&#xff0c;覆盖写入文件内容 cat haha.txt > xixi.txt2、追加写入文件内容 cat haha.txt >&g…

2023,年轻人不想买钻石了?

【潮汐商业评论/ 原创】“钻石恒久远&#xff0c;一颗永流传。”很明显&#xff0c;Lily就是这句话的“受害者”。临近婚期的她&#xff0c;在婚戒的选择上犯起了愁&#xff0c;“我现在想到买钻戒&#xff0c;我就头大。买小的凑合一下&#xff0c;耳边传来的都是‘别买一克拉…

Linux命令篇 linux命令大全简洁明了 linux学习笔记

Linux命令篇 linux命令大全简洁明了 linux学习笔记 Linux 命令大全 文章目录Linux 命令大全一、 常用的基础命令查看目录&#xff1a;切换目录&#xff1a;创建和删除&#xff1a;拷贝和移动文件&#xff1a;查看文件内容&#xff1a;其他&#xff1a;小技巧终端命令格式1.1 ls…

如何用3个月零基础入门网络安全?

背景 写这篇教程的初衷是很多朋友都想了解如何入门/转行网络安全&#xff0c;实现自己的“黑客梦”。文章的宗旨是&#xff1a;1.指出一些自学的误区 2.提供客观可行的学习表 3.推荐我认为适合小白学习的资源.大佬绕道哈&#xff01; 一、自学网络安全学习的误区和陷阱 1.不…

基于Conda完成创建多版本python环境

文章目录基于Conda完成创建多版本python环境基于Conda完成创建多版本python环境 通过cmd打开conda环境 d:\ProgramData\Anaconda3\Scripts\activate创建python3.7的环境 conda create -n py3.7 python3.7产生错误 Collecting package metadata (repodata.json): failed Unav…

IEEE14节点系统在如短路分析,潮流研究,互连电网中的研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MIMO信道的稀疏性

一. 介绍 本文章将从“信道冲激响应”的角度解释为什么MIMO信道具有稀疏性&#xff0c;公式较多&#xff0c;需要了解以下先验知识&#xff1a; 信道相干带宽与传输信号带宽 带宽与宽带 平坦衰落与频率选择性衰落 信道冲击响应 基带与射频 多径传输与最大传播时延 基带带宽是信…

6个必知的Mysql索引失效场景,别再踩坑了!

今天我来聊聊索引的相关问题&#xff0c;因为索引是大家都比较关心的公共话题&#xff0c;确实有很多坑。不知道你在实际工作中&#xff0c;有没有遇到过下面的这两种情况&#xff1a;明明在某个字段上加了索引&#xff0c;但实际上并没有生效。索引有时候生效了&#xff0c;有…

Linux字符设备驱动模型之设备号

从上文中可知&#xff0c;在Linux用户空间中&#xff0c;如若需要操作硬件设备&#xff0c;均通过/dev目录下的设备文件节点进行操作&#xff0c;基本上每一种设备都会存在一个或者多个的设备节点。 并且在Linux内核中&#xff0c;其表示字符设备的结构成员也提供了相应的设备号…

论文投稿指南——中文核心期刊推荐(外国语言)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

【学习】笔记本电脑重新安装系统win10

安装系统有很多方法: 软件安装制作启动u盘本文使用的方法就是启动盘安装: 1.首先下载iso镜像文件: msdn我告诉你:MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn) 2.下载启动盘制作工具: 制作启动盘rufus:Rufus - 轻松创建 USB 启动盘 3.官网下载: https://do…