开启TDE 加密功能(11g)
1、创建“wallet”目录以及指定位置
默认位置:在ORACLE_BASE/admin/$ORACLE_SID/目录下创建文件夹wallet(如果没有创建)指定位置:在 $ORACLE_HOME/network/admin 下的 sqlnet.ora中设 置 ENCRYPTION_WALLET_LOCATION 参数,
指定软件wallet路径。其中,在sqlnet.ora 文件中添加的条目如下。
使用指定位置创建wallet目录
ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY= /home/oracle/db/admin/TEST/wallet) ) ) |
- 设置wallet密码
SQL>alter system set encryption key identified by "password";
[oradts@ehr-db-ps-test-s01]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Production on Thu Nov 17 11:50:19 2022 Copyright (c) 1982, 2013, Oracle. All rights reserved. SQL> conn /as sysdba Connected. SQL> alter system set encryption key identified by "oracle"; System altered. |
Wallet目录下产生ewallet.p12
- 打开和关闭加密wallet
在创建加密表空间之前,包含有表空间主密钥的 Oracle wallet 必须处于打开状态。
(1).先尝试关闭 Oracle wallet
SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "oracle";
(2).打开 Oracle wallet
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "oracle";
(3).检验 Oracle wallet 状态
SQL> SELECT * FROM GV$ENCRYPTION_WALLET;
可以看到,设置完wallet密码后,wallet默认是打开的。需要注意的是wallet的密码一旦生成之后,每次数据库重启之后,都必须使用命令显式打开。并且wallet一旦打开之后,在数据库实例关闭之前会一直处于打开状况,除非显式的通过close命令关闭
- 设置自动钱包功能
orapki wallet create -wallet /home/oracle/db/admin/TEST/wallet -auto_login_local |
提示输入 primary 设置的钱夹密码钱夹
存放目录下会生成一个新文件 cwallet.sso
- 关闭自动打开的钱包
ALTER SYSTEM SET ENCRYPTION WALLET CLOSE; |
- 开启TDE 加密功能(19C)
- 查询默认密钥库目录位置
col WRL_TYPE for a20 SELECT CON_ID,STATUS,KEYSTORE_MODE,WRL_PARAMETER,WALLET_TYPE FROM gv$encryption_wallet; select * from v$encryption_wallet; select CON_ID,STATUS from V$ENCRYPTION_WALLET; |
- 创建默认密钥库目录
mkdir -p $ORACLE_BASE/admin/CDB/wallet |
- 创建密码保护的密钥库
administer key management create keystore '/u01/oracle/db/19.0.0.0/admin/CDB/wallet' identified by CDB#2022tde; |
- 开启TDE
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY CDB#2022tde CONTAINER=ALL; |
- 软件密钥库中设置CDB的TDE主加密密钥
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY CDB#2022tde WITH BACKUP CONTAINER=ALL; |
- 配置自动登录(可选)
administer key management create auto_login keystore from keystore '/u01/oracle/db/19.0.0.0/admin/CDB/wallet' identified by CDB#2022tde; |
- 软件密钥库中设置PDB的TDE主加密密钥(可选)
- 关闭TDE
administer key management set keystore CLOSE identified BY CDB#2022tde; |
- 19C 加密已存在的表空间
1、19C 加密已存在的表空间(离线加密)
1、ALTER TABLESPACE data_temp OFFLINE NORMAL; 2、备份表空间数据文件 3、 ALTER TABLESPACE data_temp ENCRYPTION OFFLINE ENCRYPT; --默认加密算法 ALTER TABLESPACE data_temp ENCRYPTION OFFLINE USING 'AES256' ENCRYPT; --使用加密算法 ALTER DATABASE DATAFILE 'user_01.dbf' ENCRYPT;--加密某个数据文件 4、ALTER TABLESPACE data_temp ONLINE; |
2、19C加密已存在的表空间(在线加密)
ALTER TABLESPACE data_temp ENCRYPTION ONLINE USING 'AES192' ENCRYPT FILE_NAME_CONVERT = (' data_temp01.dbf', ' data_temp01_enc.dbf');--单个文件转换 FILE_NAME_CONVERT = (' /u01/oracle/db/data/CDB/TEST/datafile', ' /u01/oracle/db/data/CDB/TEST/datafile/enc');--目录转换 FILE_NAME_CONVERT = (' data_temp', ' data_temp_enc');--匹配模式转换 |
3、创建加密表空间
CREATE TABLESPACE DATA_TEMP DATAFILE '/u01/EBSUAT/db/data/CDB/TEST/datafile/data_temp001.dbf' SIZE 2000M ENCRYPTION ENCRYPT; |
4、具体加密措施加密列
加密对象:TEST001(NAME、EMAIL、FIXED_PHONE、MOBILE_PHONE)
ALTER TABLE TEST001 MODIFY (NAME ENCRYPT NO SALT); ALTER TABLE TEST001 MODIFY (EMAIL ENCRYPT NO SALT); ALTER TABLE TEST001 MODIFY (FIXED_PHONE ENCRYPT NO SALT); ALTER TABLE TEST001 MODIFY (MOBILE_PHONE ENCRYPT NO SALT); |
取消列加密
ALTER TABLE TEST001 MODIFY (NAME DECRYPT); ALTER TABLE TEST001 MODIFY (EMAIL DECRYPT); ALTER TABLE TEST001 MODIFY (FIXED_PHONE DECRYPT); ALTER TABLE TEST001 MODIFY (MOBILE_PHONE DECRYPT); |
影响:
据其它用户测试在线加密表空间中原SQL最终用户响应时间的性能影响为 4% 至 8%,CPU 利用率提高了 1% 至 5%。 对整个实例的性能影响可能在50%左右,相关的等待事件主要是I/O类,时间mode中可以看到Tablespace encryption elapsed time较高。