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

Oracle Non-CDB配置 TDE(透明数据加密) 的过程

说明

此文档虽然是针对non CDB而写,但是对于CDB的操作过程也是类似的,即在CDB$ROOT中设置完成wallet设置后,在PDB中设置和打开MEK即可。

先决条件

请确保目录$ORACLE_SID/admin/$ORACLE_SID存在,例如此目录为:

  • /u01/app/oracle/admin/noncdb

配置Wallet和秘钥

配置TDE过程:

connect / as sysdba
-- WALLET_ROOT的默认值为空-- wallet目录不必预先建立
ALTER SYSTEM SET WALLET_ROOT = '/u01/app/oracle/admin/noncdb/wallet' SCOPE = SPFILE SID = '*';-- 重启数据库
shutdown immediate
startup-- TDE_CONFIGURATION的默认值为空
ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" SCOPE = BOTH SID = '*';-- create key store
-- 这一步自动创建了目录$WALLET_ROOT/wallet/tde,并创建了文件ewallet.p12
-- keypwd是保护wallet的口令,可以选取您中意的口令
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY keypwd;-- 目前,wallet的状态为CLOSE。我们需要打开他
-- SELECT STATUS FROM V$ENCRYPTION_WALLET; 
-- 打开后,wallet的状态为OPEN_NO_MASTER_KEY,其它PDB的状态仍为CLOSE
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keypwd;-- 创建MEK
-- 创建后,wallet状态变为OPEN
-- SELECT STATUS FROM V$ENCRYPTION_WALLET; 
ADMINISTER KEY MANAGEMENT SET KEY 
FORCE KEYSTORE
IDENTIFIED BY keypwd 
WITH BACKUP USING 'emp_key_backup';

加密表空间

下面开始加密数据库的users表空间:

-- 离线表空间,Elapsed: 00:00:02.67
ALTER TABLESPACE users OFFLINE NORMAL;-- 一定一定记得开启此选项,我们要计时的!!!
set timing on-- 离线加密,一定记得记录输出的时间!!!
ALTER TABLESPACE users ENCRYPTION OFFLINE ENCRYPT;
Elapsed: 00:16:53.44-- 如果此时再次加密,则报错,因为已经加密过了
ORA-28431: cannot encrypt an already encrypted data file USERS-- 恢复表空间在线
ALTER TABLESPACE users ONLINE;-- 至此,加密结束
-- 验证
SQL> select TS#, ENCRYPTIONALG, ENCRYPTEDTS, STATUS, CON_ID from V$ENCRYPTED_TABLESPACES;TS# ENCRYPT ENC STATUS         CON_ID
---------- ------- --- ---------- ----------5 AES128  YES NORMAL              4SQL> show con_idCON_ID
------------------------------
4-- ts# 等于前面输出中的ts#
SQL> select name from v$tablespace where ts# = 5;NAME
------------------------------
USERS

加密过程中的监控:

SQL> connect sys@jiamipdb as sysdbaSQL> SELECT t.name, e.encryptedts, e.status FROM v$tablespace t, v$encrypted_tablespaces e WHERE t.ts#=e.ts# ;NAME                           ENC STATUS
------------------------------ --- ----------
USERS                          NO  ENCRYPTINGselect tablespace_name,name,encrypted from v$datafile_header where tablespace_name like '%USERS%';
select count(*) from v$datafile_header where tablespace_name like '%USERS%' and encrypted='NO';
http://www.lryc.cn/news/161220.html

相关文章:

  • MySQL——常见问题
  • 在FPGA上快速搭建以太网
  • 如何防范 AI 盗取你的密码
  • 华清远见第六课程作业day3
  • Rabbitmq配置定义
  • 2023年数模国赛时间分配
  • kubernetes(K8S)笔记
  • vue 部署到本机IIS 部署 SPA 应用
  • 面试那些事——Java全栈
  • LINUX 文件基本管理
  • 一、认识GitHub项目 —— TinyWebServer
  • 66.C++多态与虚函数
  • 【ICer的脚本练习】通过perl脚本来检查仿真log的结果
  • 创邻科技图数据库课程走进一流高校
  • RabbtiMQ的安装与在Springboot中的使用!!!
  • 【可定制、转换时间戳】解析nc文件,并保存为csv文件
  • 介绍串行和并行两种通信方式
  • 优化爬虫效率:利用HTTP代理进行并发请求
  • 关于磁盘空间不够,导致报错 springboot内置tomcat相关的临时目录无法创建等问题,如何自定义配置 tomcat 缓存文件路径
  • Android HAL - hidl-gen
  • CGAL 数值类型
  • 建站系列(六)--- 后端开发语言
  • 王道数据结构编程题 查找
  • vue 部分知识点总结
  • 谷粒商城----ES篇
  • Redis3.2.1如何设置远程连接?允许局域网访问
  • 网络原理(二)TCP的可靠传输
  • Chat GPT 使用教学,文字创作、学习
  • Android之 Canvas绘制
  • Vue + Element UI 前端篇(十五):嵌套外部网页