单位做网站注意什么问题,dede网站图标,html5网站开发实例教程,织梦帝国wordpress前言 透明加密是指将数据库page加密后写入磁盘#xff0c;当需要读取对应page时进行加密读取。此过程对于用户是透明#xff0c; 用户无需干预。 该文档进行数据库V8R3版本测试透明加密功能#xff0c;需要说明#xff0c;该版本发布时间早于V8R6#xff0c;所以只能进行表… 前言 透明加密是指将数据库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_tableoff 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 RELNAMETABLE_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 RELNAMETABLE_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’转为其他乱码字符显示。 下面的图片为非加密表的输出结果可以看到输出了‘aaaa’表中的数据说明表没有进行加密。 2、创建默认加密表 确认修改配置文件kingbase.conf,增加encrypt_user_tableon重启数据库。 这里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 RELNAMETABLE_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’字符已经不能正常显示。 3、使用CTS语法为已存在非加密表进行加密 TEST# \d aaaTable PUBLIC.AAAColumn | Type | Modifiers
----------------------------EE | INTEGER |NAME | TEXT |AAA表未加密
TEST# SELECT RELNAME, RELISENCRYPTED, LENGTH(RELTDEKEY) FROM SYS_CLASS WHERE RELNAMEAAA;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 RELNAMETABLE_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 查看非加密表文件 TEST# select sys_relation_filepath(AAA);SYS_RELATION_FILEPATH
-----------------------base/14941/24580
(1 row) hexdump查看AAA表没有处于加密状态 hexdump -c 24580 |grep k 如图没加密情况可以正常显示数据king 结论 KingbaseESV8R3版本数据库可以配置透明加密功能中的表加密但没有实现表空间加密功能建议客户尽量使用V8R6版本透明加密功能。 KingbaseESV8R3版本数据库可以通过create table语法中加入关键字ENCRYPTED实现表加密也可以通过在kingbase.conf中设置参数encrypt_user_tableon实现默认表加密功能。 KingbaseESV8R3数据库可以通过CTS方式将未加密的表改为加密方式存储。