当前位置: 首页 > news >正文

Oceanbase 透明加密TDE

官方文档:数据库透明加密概述-V4.3.2-OceanBase 数据库文档-分布式数据库使用文档

OceanBase 数据库社区版暂不支持数据透明加密。

数据存储加密是指对数据和 Clog 等保存在磁盘中的数据进行无感知的加密,即透明加密(简称 TDE)。数据在写入存储设备前自动进行加密,读取时自动解密,该过程对用户是透明的,黑客和恶意用户无法从数据文件、数据库备份或磁盘中读取到敏感数据。

一.Mysql模式下的数据透明加密:

使用限制
  • 系统租户不能开启加密。
  • 租户配置透明加密后,除非租户重建,否则无法再切换为其他加密模式。为新创建的表设置透明加密

为新创建的表设置透明加密


业务租户登录到集群的 MySQL 租户
1..执行以下语句,开启 internal 方式的透明加密。
ALTER SYSTEM SET tde_method='internal';

2.执行以下语句,确认该租户上所有 OBServer 节点上的配置项 tde_method 的值均为 internal
 SHOW PARAMETERS LIKE 'tde_method';

3.确认后,执行以下语句,生成主密钥。
 ALTER INSTANCE ROTATE INNODB MASTER KEY;

4.创建表空间并指定加密算法
CREATE TABLESPACE sectest_ts1 encryption = 'y'; 

5.在加密的表空间中创建新表
CREATE TABLE t1 (id1 int, id2 int) TABLESPACE sectest_ts1;
6.确认表空间内的表是否标记为加密。
SELECT table_name,encryptionalg,encrypted FROM oceanbase.V$OB_ENCRYPTED_TABLES;

我这里测试版本是企业版V3 所以和 V4视图名称不一样。

为已有表设置透明加密

业务租户登录到集群的MySQL租户
1.执行以下语句,开启 internal 方式的透明加密。
ALTER SYSTEM SET tde_method='internal';

2.执行以下语句,确认该租户上所有 OBServer 节点上的配置项 tde_method 的值均为 internal
SHOW PARAMETERS LIKE 'tde_method';

3.确认后,执行以下语句,生成主密钥。
ALTER INSTANCE ROTATE INNODB MASTER KEY;

4.创建表空间并指定加密算法。
CREATE TABLESPACE sectest_ts1 encryption = 'y'; 

5.创建t1表
CREATE TABLE t1 (id1 int, id2 int);
6.将已有表移入加密表空间
ALTER TABLE t1 TABLESPACE sectest_ts1;

解除加密:

假设表  t1 的加密状态如下,且表  t1 在加密的表空间  sectest_ts1 中。
对表执行渐进合并。
将  progressive_merge_num 的值设置为大于  1 的数,并执行  OPTIMIZE 命令,准备做渐进合并。
ALTER TABLE t1 SET progressive_merge_num = 3;       
OPTIMIZE TABLE t1;

CREATE TABLESPACE ts2;

将表 t1 从加密的表空间 sectest_ts1 中移到未加密的表空间 ts2 中。

ALTER TABLE t1 TABLESPACE ts2;

SHOW CREATE TABLE t1 \G

查询 oceanbase.V$OB_ENCRYPTED_TABLES 视图,确认表的加密状态。

二.Oracle模式下的数据透明加密

为新创建的表设置存储加密

1.管理员用户登录到数据库的 Oracle 租户。
执行以下语句,开启 internal 方式的存储加密。
 ALTER SYSTEM SET tde_method='internal';

2.执行以下语句,确认该租户上所有 OBServer 节点上的配置项 tde_method 的值均为 internal
SHOW PARAMETERS LIKE 'tde_method';

3.创建 Keystore。
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE keystore_name IDENTIFIED BY password;

4.开启 Keystore。
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;

5.执行以下语句,生成主密钥。
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password;

6.创建表空间并指定加密算法。
CREATE TABLESPACE sectest_ts1 ENCRYPTION USING 'aes-256';

7.验证加密是否配置成功

创建表并指定表空间。

CREATE TABLE t1 (id1 int, id2 int) TABLESPACE sectest_ts1;

确认表空间内的表是否标记为加密。

SELECT TABLE_NAME,ENCRYPTIONALG FROM v$encrypted_tables;

为已有表设置透明加密

1.管理员用户登录到数据库的 Oracle 租户
2.执行以下语句,开启 internal 方式的存储加密
ALTER SYSTEM SET tde_method='internal';
3.执行以下语句,确认该租户上所有 OBServer 节点上的配置项 tde_method 的值均为 internal
SHOW PARAMETERS LIKE 'tde_method';

4.创建 Keystore
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE keystore_name IDENTIFIED BY password;

5.开启 Keystore
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;

6.执行以下语句,生成主密钥
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password;

7.创建表空间并指定加密算法
CREATE TABLESPACE sectest_ts1 ENCRYPTION USING 'aes-256';

8.将已有表移入加密表空间
ALTER TABLE t1 TABLESPACE sectest_ts1;

对表执行全量合并

ALTER TABLE t1 set progressive_merge_num = 1;
ALTER SYSTEM MAJOR FREEZE;
SELECT * FROM v$encrypted_tables;

确认所有宏块是否已完成加密。

解除加密:

假设表 t1 的加密状态如下,且表 t1 在加密的表空间 sectest_ts1 中。
SELECT * FROM v$encrypted_tables;

SHOW CREATE TABLE t1;

将表从加密表空间中移出,创建未加密的表空间 ts2
CREATE TABLESPACE ts2;

ALTER TABLE t1 TABLESPACE ts2;

操作成功后,执行 SHOW CREATE TABLE 语句,可以看到表 t1 已经移到了表空间 ts2 中

SHOW CREATE TABLE t1;

SELECT * FROM sys.v$encrypted_tables;

可以看到表 t1 的 STATUS 字段为 NORMAL 即未加密状态,说明表 t1 解除加密操作成功。
http://www.lryc.cn/news/430799.html

相关文章:

  • 图像去噪实验:基于全变分(TV)模型的MATLAB实现
  • 97.WEB渗透测试-信息收集-Google语法(11)
  • 连锁美业门店如何寻找精准客户?美业SaaS拓客系统管理系统源码
  • RK3588开发板利用udp发送和接收数据
  • 代码整洁之道(第3章节)--函数
  • 92. UE5 GAS RPG 使用C++创建GE实现灼烧的负面效果
  • Echarts可视化大屏数据详解
  • Linux---文件(2)---文件描述符缓冲区(语言级)
  • 云计算实训39——Harbor仓库的使用、Docker-compose的编排、YAML文件
  • lambda表达式用法——C#学习笔记
  • 【C++ Primer Plus习题】11.6
  • Redis八种数据结构简介
  • 数据治理策略:确保数据资产的安全与高效利用
  • ts格式转mp4,四款亲测好用软件推荐!
  • 10、Django Admin修改标题
  • ESRI ArcGIS Pro 3.1.5新功能及安装教程和下载
  • 人工智能,语音识别也算一种人工智能。
  • Token和Refresh Token
  • STM32(一)简介
  • 接口测试工具:Postman详解
  • Linux中全局变量配置,/etc/profile.d还是/etc/profile
  • 【java入门】关键字、标识符与变量初识
  • Java常用类库
  • 2024年高教社杯数学建模国赛C题超详细解题思路分析
  • 深度学习(七)-计算机视觉基础
  • 机器人笛卡尔空间轨迹规划原理与MATLAB实现
  • 数据结构:树与二叉树
  • BUUCTF—[网鼎杯 2020 朱雀组]phpweb
  • 什么是CDN及其如何影响SEO?
  • python实现粒子群算