Kingbase V8R6对已存在数据库修改为透明加密存储

  • 简介

1、关于表空间加密功能表空间加密能够加密表空间中存储的所有数据。表空间加密在读取和写入操作期间对数据进行加密或解密。块加密是在数据页面需要同步到外存时进行加密操作;从外存读取数据页面到缓冲区时,首先进行解密操作。内存中的数据都是解密后的数据。当数据从内存落盘时进行加密。

2、表空间加密的限制表空间是对整个表空间数据加密,所以不受表加密的相关限制,对数据类型、约束和索引都没有要求。

  • 备份数据
  1. 逻辑备份出原库

sys_dump -U system -d db1  -f /home/kingbase/db1.sql

  1. 停止数据库

sys_ctl stop

  1. 备份原数据库

mv data data_bak

  • 初始化数据库,采用加密参数

SM4算法是一个分组算法。数据分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展都采用32轮迭代结构。SM4以字节(8比特)和字(32比特)位单位进行数据处理。它是对合算法,因此加解密算法相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法(基于bit进行加密) ,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。所谓对称加密,就是加密和解密的过程是一样的。RC4是有线等效加密(WEP)中采用的加密算法,也曾经是TLS可采用的算法之一。

1.注意与原库的兼容模式和大小写,有自定义表空间的需要备份自定义表空间,并创建相同目录。

initdb -U system -W -D /home/kingbase/KingbaseES/data -m oracle --enable-ci -e sm4

2.修改 kingbase.conf 文件中 shared_preload_libraries 参数。

shared_preload_libraries = 'sysencrypt'

重启数据库服务

新建数据库需要安装扩展

CREATE EXTENSION sysencrypt;

3.打开钱包功能,修改钱包秘密需先关闭钱包

打开钱包:

 OPENUP WALLET WITH PASSWORD "123456";

关闭钱包:

CLOSEUP WALLET WITH PASSWORD "123456";

test=# alter wallet with password "Kingbase";

4.打开sysencrypt.encrypt_user_tablespace

是否默认创建表空间加密, 默认值为false即创建表空间默认不加密。

alter system set sysencrypt.encrypt_user_tablespace to on;

select sys_reload_conf();

show sysencrypt.encrypt_user_tablespace;

 encrypt_user_tablespace

-------------------------

 on

(1 row)

  • 创建加密表空间

CREATE TABLESPACE ENC_TS_KEY_TEST LOCATION '/home/kingbase/spce'  with(encryption = true);

设置加密表空间为默认表空间

set default_tablespace=ENC_TS_KEY_TEST;

Select * from pg_tablespace;

  • 创建用户、创建数据库并指定表空间

Create user u1 with password ‘12345678ab’;

create database db1 owner u1 with tablespace = ENC_TS_KEY_TEST;

查看

\l+

  • 导入数据

Ksql test system

\c db1 u1

\i /home/kingbase/db1.sql

  • 验证表数据级表空间是否加密

db1=# select sys_relation_filepath('tab');

             sys_relation_filepath

-----------------------------------------------

 sys_tblspc/16409/SYS_12_202311131/16414/16415

(1 行记录)

 hexdump -c SYS_12_202311131/16414/16415

0000000  \0  \0  \0  \0 200 006 361 001  \0  \0  \0  \0  \0  \0  \0  \0

0000010  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0

0000020  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0   @  \0 300 037  \0

0000030 005      \0  \0  \0  \0  \0  \0 340 237   8  \0 300 237   8  \0

0000040 222 237 031 257   v   n   1 272   Z 362 336 234 345 324 271   h

*

0001fc0 305   % 207 312 217   e 273 327   ~   } 335   A 265   V 272   h

0001fd0 305 017 336 265 366 302 350 376   J 254  \a 207 337 230   p   (

0001fe0 305   % 207 312 217   e 273 327   ~   } 335   A 265   V 272   h

0001ff0 355 211 021   r 355   ,   s 231   3 247  \t 363 240   }   2 240

0002000

  • 注意事项

该方式为表空间级别的加密,所有在该表空间下的对象存储时都将加密。使用时注意需要切换到对应的数据库。

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值