拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. Oracle基础知识
  3. LLL的Oracle培训
  4. 正文

LLL的数据库培训-102-第六部分—Oracle高级安全管理—第2讲—钱包/表空间加密/列加密案例

2023年11月4日 579点热度 0人点赞 0条评论

目录

  • 一、案例1—钱包的创建
    • 1、查看当前钱包是否打开
    • 2、配置加密钱包
      • (1)增加sqlnet.ora,更改默认位置
      • (2)重新登录sqlplus查看,默认位置已更改
      • (3)设置密码,打开钱包
    • 3、配置完成后,重启数据库
      • (1)查看钱包已关闭
      • (2)重新打开钱包
      • (3)关闭钱包
  • 二、案例2—表空间加密
    • 1、查看加密的表空间
    • 2、给表空间加密
      • (1)打开钱包才可以创建加密表空间
      • (2)创建加密表空间
      • (3)查看加密的表空间
      • (4)重启数据库,提示:ORA-28365: wallet is not open(如果没有此提示则可以跳过4,5,6)
      • (5)在mount状态打开钱包才可以继续下一步
      • (6)可以正常打开数据库
  • 三、案例3—列加密
    • 1、给列加密
      • (1)钱包需要先打开
      • (2)创建表空间和用户,表
      • (3)创建加密列的表
      • (4)查看加密列
  • 四、一个问题:是否可以在忘记wallet密码的情况下重建钱包:
    • 1、是否可以重建钱包(就是把原来的移走,并用新的钱包打开数据库)--这个操作本来就比较操蛋,建议没事不要折腾。
      • (1)启动数据库
      • (2)移走wallet2的钱包
      • (3)重启数据库
      • (4)重建加密钱包
      • (5)关闭数据库,并移动原来的钱包到目录wallet2;打开数据库,查询加密表空间的数据

LLL的数据库培训-102-第五部分—Oracle安全管理—第2讲—钱包/表空间加密/列加密案例

一、案例1—钱包的创建

1、查看当前钱包是否打开

SYS@mesorcl>col wrl_parameter for a40
SYS@mesorcl>SELECT * FROM v$encryption_wallet;
WRL_TYPE                   WRL_PARAMETER                            STATUS
-------------------- -------------------------------------------- ------------------
file                    /oracle/app/oracle/admin/mesorcl/wallet      CLOSED

即使没有使用过,默认位置在/oracle/app/oracle/admin/mesorcl/wallet。

2、配置加密钱包

(1)增加sqlnet.ora,更改默认位置

vi $ORACLE_HOME/network/admin/sqlnet.ora
ENCRYPTION_WALLET_LOCATION =
(SOURCE =
  (METHOD = FILE)
    (METHOD_DATA =
    (DIRECTORY = /oracle/app/oracle/admin/mesorcl/wallet2)
  )
)

(2)重新登录sqlplus查看,默认位置已更改

设置好了sqlnet.ora,重新进入才生效。

sqlplus / as sysdba
SYS@mesorcl>col wrl_parameter for a40
SYS@mesorcl>SELECT * FROM v$encryption_wallet;
WRL_TYPE                   WRL_PARAMETER                            STATUS
-------------------- -------------------------------------------- ------------------
file                    /oracle/app/oracle/admin/mesorcl/wallet2      CLOSED
mkdir -p /oracle/app/oracle/admin/mesorcl/wallet2

(3)设置密码,打开钱包

SYS@mesorcl> alter system set encryption key authenticated by "Htsxw123321";

(4)查看钱包,已经打开

SYS@mesorcl>select * from v$encryption_wallet;
WRL_TYPE               WRL_PARAMETER                              STATUS
-------------------- ---------------------------------------- ------------------
file                  /oracle/app/oracle/admin/mesorcl/wallet2     OPEN

3、配置完成后,重启数据库

(1)查看钱包已关闭

SYS@mesorcl>select * from v$encryption_wallet;
WRL_TYPE               WRL_PARAMETER                              STATUS
-------------------- ---------------------------------------- ------------------
file                  /oracle/app/oracle/admin/mesorcl/wallet2     close

(2)重新打开钱包

alter system set encryption wallet open identified by "Htsxw123321";

或使用创建命令也可以:

alter system set encryption key authenticated by "Htsxw123321";

(3)关闭钱包

alter system set encryption wallet close identified by "Htsxw123321";

二、案例2—表空间加密

1、查看加密的表空间

select * from V$ENCRYPTED_TABLESPACES;

2、给表空间加密

注意:如果给创建表空间时,给其做了加密,那么重启数据库时,必须在mount状态打开钱包后,才能正常打开数据库。

(1)打开钱包才可以创建加密表空间

alter system set encryption wallet open identified by "Htsxw123321";

(2)创建加密表空间

drop tablespace test_tbsp including contents and datafiles;
drop user test cascade;
create tablespace test_tbsp datafile '/oracle/oradata/test01.dbf' size 10m ENCRYPTION DEFAULT STORAGE(ENCRYPT);
create user test identified by 123 default tablespace test_tbsp;   --必须要将用户设置到默认表空间到加密的,也就是说加密表空间需要有数据。
grant dba to test;
conn test/123;
create table test(id number primary key,name varchar2(10));
insert into test values(1,'LLL01');
insert into test values(2,'LLL02'); 
insert into test values(3,'LLL03'); 
insert into test values(4,'LLL04'); 
commit;
select * from test.test;

(3)查看加密的表空间

select * from v$encrypted_tablespaces;

(4)重启数据库,提示:ORA-28365: wallet is not open(如果没有此提示则可以跳过4,5,6)

出现这个问题的原因是:

The security administrator also needs to open the wallet before performing database recovery operations. 
This is because background processes may require access to encrypted redo and undo logs. 
When performing database recovery, the wallet must be opened before opening the database. This is illustrated in the following statements:

(安全管理员还需要在执行数据库恢复操作之前打开钱包。
这是因为后台进程可能需要访问加密的重做和撤消日志。
执行数据库恢复时,必须先打开钱包,然后才能打开数据库。)

SYS@mesorcl>shutdown immediate;
SYS@mesorcl>startup
ORACLE instance started.
Total System Global Area 4943876096 bytes
Fixed Size 2261688 bytes
Variable Size 989859144 bytes
Database Buffers 3942645760 bytes
Redo Buffers 9109504 bytes
Database mounted.
ORA-28365: wallet is not open

(5)在mount状态打开钱包才可以继续下一步

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "Htsxw123321";

(6)可以正常打开数据库

SYS@mesorcl>alter database open;

注:如果此时没有钱包的密码(也就是master key),是无法打开数据库的。因为其中要给表空间加了密码。

三、案例3—列加密

1、给列加密

(1)钱包需要先打开

alter system set encryption wallet open identified by "Htsxw123321";

(2)创建表空间和用户,表

drop tablespace test_tbsp including contents and datafiles;
drop user test cascade;
create tablespace test_tbsp datafile '/oracle/oradata/test01.dbf' size 10m ENCRYPTION DEFAULT STORAGE(ENCRYPT);
create user test identified by 123 default tablespace test_tbsp;  
grant dba to test;
conn test/123;

(3)创建加密列的表

CREATE TABLE employee (
     first_name VARCHAR2(128),
     last_name VARCHAR2(128),
     empID NUMBER,
     salary NUMBER(6) ENCRYPT
);
insert into EMPLOYEE values('L','LL',1,200);
commit;
select * from employee;

(4)查看加密列

select * from USER_ENCRYPTED_COLUMNS;

四、一个问题:是否可以在忘记wallet密码的情况下重建钱包:

官方文档如下解释:

 

1、是否可以重建钱包(就是把原来的移走,并用新的钱包打开数据库)--这个操作本来就比较操蛋,建议没事不要折腾。

危险!!!

注意:oracle对钱包的加密只限于非系统表空间。所以我们可以通过重建钱包进行重启数据库。但如果有些表空间被加了密,即使重建钱包,也无法读取原加密的表空间(因为原来得表空间数据是通过原钱包加密的)。

注:这种操作可能会导致原表空间数据收到破坏。如下图

这是因为在更换钱包后,有些redo或undo在启动数据库时需要读取,更换后,可能导致有些加密的redo和undo无法读取,进而导致数据库无法open。

如果环境不需要需要显式打开的钱包提供的额外安全性,还可以选择使用自动登录钱包。(意思是,如果不想上面那么麻烦,可以使用自动登录钱包的方式,不用手动登录钱包,和平时操作一样)

(1)启动数据库

把wallet2的钱包移走,重启数据库,可以正常起来。但是是无法访问加密的tablespace的

(2)移走wallet2的钱包

mv /oracle/app/oracle/admin/mesorcl/wallet2/ewallet.p12 /tmp

(3)重启数据库

startup

可以正常打开。

(4)重建加密钱包

--第一次会报错:ORA-28362: master key not found;但可以在wallet2中创建文件

(5)关闭数据库,并移动原来的钱包到目录wallet2;打开数据库,查询加密表空间的数据

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2024年4月24日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号