金仓数据库KingbaseES V8R6 表空间加密


上帝视角
上帝视角 2023-07-10 14:47:19 65777
分类专栏: 资讯

1、透明存储加密优势

透明存储加密可确保加密敏感数据满足合规性要求,并提供简化加密操作的功能,优势如下:
  • 作为安全管理员,您可以确保敏感数据已加密,因此在存储介质或数据文件被盗或入侵者试图从操作系统访问数据文件时,绕过访问控制数据库。
  • 使用透明存储加密可帮助您解决与安全相关的法规遵从性问题。
  • 您无需创建辅助表、触发器或视图来为授权用户或应用程序解密数据。处理敏感数据的应用程序可以使用透明存储加密提供强大的数据加密,而无需修改应用程序。
  • 对于访问该数据的数据库用户和应用程序,数据被透明地解密。数据库用户和应用程序不需要知道他们正在访问的数据是以加密形式存储的。
  • 透明存储加密可以在线进行,无需停止数据库服务。
  • 数据库系统自动维护密钥管理,用户或应用程序不需要管理加密密钥。
注意的是表空间加密方式和表加密方式是互斥的,同一加密对象不允许同时支持这两种加密方式。

2、开启透明存储加密

修改 kingbase.conf 文件中 shared_preload_libraries 参数。
  1. shared_preload_libraries = 'sysencrypt'
复制代码
重启数据库服务
新建数据库需要安装扩展
  1. CREATE EXTENSION sysencrypt;
复制代码
还需要打开钱包功能:
打开钱包:
  1. OPENUP WALLET WITH PASSWORD “654321”;
复制代码
关闭钱包:
  1. CLOSEUP WALLET WITH PASSWORD “654321”;
复制代码

3、表空间加密

1、关于表空间加密功能
表空间加密能够加密表空间中存储的所有数据。表空间加密在读取和写入操作期间对数据进行加密或解密。
块加密是在数据页面需要同步到外存时进行加密操作;从外存读取数据页面到缓冲区时,首先进行解密操作。内存中的数据都是解密后的数据。当数据从内存落盘时进行加密。
2、表空间加密的限制
表空间是对整个表空间数据加密,所以不受表加密的相关限制,对数据类型、约束和索引都没有要求。
3、表空间加密的系统参数
设置sysencrypt.encrypt_user_tablespace参数,可以指定是否默认对创建的用户表空间加密,默认为false。
4、表空间加密的使用
创建表空间加密
需要在表空间的定义最后加上encrypted关键字,如下所示:
  1. CREATE TABLESPACE tablesspacename LOCATION '@tablespace@' with(encryption = true\[, enckey = encryptkey\]);
复制代码
encryption
标识当前表空间是否为加密表空间,true为是,false为否。
enckey
用户自定义的表空间加密密钥,最大有效长度16字节,超出长度会被截断。默认不指定。使用数据库自生成秘钥加密表空间。
TABLESPACE tablespace_name
tablespace_name 是新表要创建于其中的表空间名称。如果没有指定,将参考default_tablespace,如果表是临时的则参考temp_tablespaces。

4、测试

1、不指定加密表空间,使用默认创建表空间,用户不指定密钥:
  1. CREATE TABLESPACE ENC_TS_KEY_TEST LOCATION '/home/kingbase7/spce'  with(encryption = true);
复制代码
设置加密表空间为默认表空间
  1. set default_tablespace=ENC_TS_KEY_TEST;
复制代码
创建表和索引,不指定加密表空间
  1. CREATE TABLE TEST_ENC_NOKEY(ID INT, NAME VARCHAR(100)) ;
  2. CREATE INDEX INDEX_ENC ON TEST_ENC_NOKEY(ID);
复制代码
插入数据,查看表文件
  1. INSERT INTO TEST_ENC_NOKEY VALUES(GENERATE_SERIES(1, 10000), 'KINGBASE');
  2. CHECKPOINT;
  3.  
  4. select sys_relation_filepath('TEST_ENC_NOKEY');
  5.              sys_relation_filepath
  6. -----------------------------------------------
  7. sys_tblspc/41144/SYS_12_202209081/12145/41145
  8. (1 row)
复制代码
查看数据文件已经无法显示完整的字符,说明表TEST_ENC_NOKEY已经被加密了。
  1. hexdump -c  41145 |grep k
复制代码
2、指定加密表空间设置默认表空间为空
  1. TEST=# set default_tablespace ='';
  2. SET
复制代码
再继续创建一张表不指定表空间,插入数据并查看,
  1. CREATE TABLE TEST_ENC (ID INT, NAME VARCHAR(100)) ;
  2. INSERT INTO TEST_ENC VALUES(GENERATE_SERIES(1, 100), 'KINGBASE');
  3. CHECKPOINT;
  4.  
  5. select sys_relation_filepath('TEST_ENC');
  6. sys_relation_filepath
  7. -----------------------
  8. base/12145/41149
  9. (1 row)
  10. hexdump -c 41149 |grep k
复制代码
输出结果可以看到完整的字符串KINGBASE,说明表没有被加密。
没有加密的原因是,取消了默认表空间为加密表空间。
下面再测试一下,指定创建表的表空间为加密表空间
  1. CREATE TABLE TEST_ENC_T (ID INT, NAME VARCHAR(100)) TABLESPACE ENC_TS_KEY_TEST;
  2. INSERT INTO TEST_ENC_T VALUES(GENERATE_SERIES(1, 100), 'KINGBASE')  ;
  3. CHECKPOINT;
  4.  
  5. select sys_relation_filepath('TEST_ENC_T');
  6. TEST=# select sys_relation_filepath('TEST_ENC_T');
  7.              sys_relation_filepath
  8. -----------------------------------------------
  9. sys_tblspc/41144/SYS_12_202209081/12145/41152
  10. (1 row)
  11.  
  12. hexdump -c 41152 |grep k
复制代码
输出结果看,没有完整的字符串表现出表中数据,说明表已经被加密,所以,如果没有设置默认表空间为加密表空间,创建表时候需要指定表空间为加密表空间。

5、总结

加密表空间可以设置为默认表空间,之后在其下创建的表默认就是加密状态。
如果没开启默认表空间为加密表空间参数default_tablespace,创建表时需要指定表空间为加密表空间。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=25934
赞同 0
评论 0 条
上帝视角L1
粉丝 3 发表 72 + 关注 私信
上周热门
银河麒麟添加网络打印机时,出现“client-error-not-possible”错误提示  1326
银河麒麟打印带有图像的文档时出错  1239
银河麒麟添加打印机时,出现“server-error-internal-error”  1026
统信桌面专业版【如何查询系统安装时间】  954
统信操作系统各版本介绍  947
统信桌面专业版【全盘安装UOS系统】介绍  906
麒麟系统也能完整体验微信啦!  892
统信【启动盘制作工具】使用介绍  502
统信桌面专业版【一个U盘做多个系统启动盘】的方法  444
信刻全自动档案蓝光光盘检测一体机  389
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

添加我为好友,拉您入交流群!

请使用微信扫一扫!