Oracle钱包wallet加密和密码修改

fuckqq_2024-07-12_16-37-09.png

前提

安全等保要求对敏感信息要求加密,公司这边为了应付这个需求不得不搞一些骚操作来应对这个需求,以此有了这个

配置

  • oracle 11g R2
  • 用户名:administrator
  • 安装目录:d:\app

配置和使用Oracle Wallet

配置和使用Oracle Wallet通常涉及以下步骤:

1、创建Wallet目录:在文件系统中创建一个目录用于存放Wallet文件,这个钱包里面保存着密钥,Oracle就是通过这个密钥对列进行加密和解密的。

1
mkdir D:\app\administrator\wallet

2、配置sqlnet.ora:在sqlnet.ora配置文件中指定Wallet的路径。

sqlnet.ora文件在D:\app\administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN

可以通过监听来查看文件目录

1
lsnrctl status

添加配置Wallet的路径

fuckqq_2024-07-12_16-46-39.png

1
2
3
4
5
6
7
8
9
10
11
# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES = (NTS)
ENCRYPTION_WALLET_LOCATION=(
SOURCE=(
(METHOD=FILE)
(METHOD_DATA=(DIRECTORY=D:\app\Administrator\wallet))
)
)

3、创建Wallet:使用Oracle提供的工具(如owm)创建Wallet并设置密码。

登录sys管理员账号查询是否开启,一般是cloused

1
2
3
4
-- 查询Oracle RAC环境中加密钱包的类型、参数和状态信息。
select wrl_type,wrl_parameter,status from gv$encryption_wallet;
-- 查询当前Oracle数据库实例中加密钱包的所有信息,包括但不限于类型、参数、状态等。
SELECT * FROM V$ENCRYPTION_WALLET;

fuckqq_2024-07-12_16-53-50.png

创建Wallet设置加密相关的密钥为“123456”

1
alter system set encryption key authenticated by "123456";

4、配置加密:在数据库中配置TDE,指定加密的列或表空间。

这边简单说下加密已有的表空间加密(如果加密了整个表空间,那么wallet对表中任何一列加密后,wallet一关闭,这张表就无法查询和程序读取了)

1
2
3
4
5
6
7
8
9
# 已有表中增加新的加密列
ALTER TABLE TEST ADD (salary ENCRYPT);
# 加密已有的表列
ALTER TABLE TEST MODIFY (salary ENCRYPT);
# 举例,加密SXSX表空间里面的PUB_WINDOW表中的ADDRESSEE_PHONE字段
# 注意,要考虑到加密后字段会变长的问题
ALTER TABLE SXSX.PUB_WINDOW MODIFY (ADDRESSEE_PHONE VARCHAR2(255) ENCRYPT);
# 解密已有的表列
ALTER TABLE TEST MODIFY (salary DECRYPT);

5、管理Wallet:定期备份Wallet文件,并确保其安全性。

修改密码

1
orapki wallet change_pwd -wallet D:\app\Administrator\wallet -oldpwd "03F4476516a161B" -newpwd "547c6f36926ce67e"

注意事项

  1. 注意保存和备份Wallet文件!!!
  2. 注意保存和备份Wallet文件!!!
  3. 注意保存和备份Wallet文件!!!