内容简介:本文介绍Oracle数据库TDE钱包的管理方法,包括钱包的创建、打开、关闭、备份和恢复等操作。TDE钱包是存储加密密钥的安全容器,对TDE的正常运行至关重要。风哥教程参考Oracle官方文档Security部分。
Part01-基础概念与理论知识
1.1 TDE钱包概念
TDE钱包是Oracle数据库用于存储透明数据加密(TDE)所需加密密钥的安全容器。钱包中存储了主密钥,用于加密和解密数据加密密钥(DEK)。
钱包的主要作用:
- 存储主密钥
- 保护密钥安全
- 提供密钥管理功能
1.2 钱包类型
Oracle支持两种类型的TDE钱包:
- 文件系统钱包:存储在文件系统中的钱包,使用密码保护
- HSM钱包:存储在硬件安全模块(HSM)中的钱包,提供更高的安全性
1.3 钱包位置配置
钱包位置通过sqlnet.ora文件中的ENCRYPTION_WALLET_LOCATION参数配置:
- 默认位置:$ORACLE_HOME/admin/$ORACLE_SID/wallet
- 自定义位置:通过sqlnet.ora文件指定
更多视频教程www.fgedu.net.cn
Part02-生产环境规划与建议
2.1 钱包安全规划
钱包安全规划包括:
- 钱包目录权限设置(700权限,仅Oracle用户可访问)
- 钱包密码复杂度要求
- 钱包密码定期更换策略
- 钱包访问审计
2.2 钱包备份策略
钱包备份策略包括:
- 创建钱包后立即备份
- 每次更改主密钥后备份
- 备份文件存储在安全位置(离线存储)
- 定期测试钱包恢复流程
2.3 钱包自动打开配置
为了避免数据库启动时需要手动打开钱包,可以配置钱包自动打开:
- 使用 AUTO_LOGIN 钱包
- 配置 WALLET_ROOT 和 TDE_CONFIGURATION 参数(Oracle 12c+)
学习交流加群风哥微信: itpux-com
Part03-生产环境项目实施方案
TDE钱包管理的基本步骤:
- 配置钱包位置
- 创建钱包
- 设置主密钥
- 配置钱包自动打开
- 备份钱包
- 定期管理钱包
Part04-生产案例与实战讲解
4.1 配置钱包位置
mkdir -p /oracle/admin/fgedudb/wallet
chmod 700 /oracle/admin/fgedudb/wallet
# 配置sqlnet.ora文件
cat > /oracle/product/19c/dbhome_1/network/admin/sqlnet.ora << EOF
ENCRYPTION_WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /oracle/admin/fgedudb/wallet)
)
)
EOF
4.2 创建钱包并设置主密钥
SQL> SELECT * FROM v$encryption_wallet;WRL_TYPE WRL_PARAMETER STATUS
——— ———————————— ——————–
FILE /oracle/admin/fgedudb/wallet OPEN
学习交流加群风哥QQ113257174
4.3 打开和关闭钱包
SQL> SELECT * FROM v$encryption_wallet;WRL_TYPE WRL_PARAMETER STATUS
——— ———————————— ——————–
FILE /oracle/admin/fgedudb/wallet CLOSED
SQL> ALTER SYSTEM OPEN WALLET IDENTIFIED BY “MyWalletPassword123!”;System altered.
SQL> SELECT * FROM v$encryption_wallet;WRL_TYPE WRL_PARAMETER STATUS
——— ———————————— ——————–
FILE /oracle/admin/fgedudb/wallet OPEN
4.4 配置自动登录钱包
cd /oracle/admin/fgedudb/wallet
orapki wallet create -wallet . -auto_login -pwd MyWalletPassword123!
# 验证自动登录钱包是否创建成功
ls -la *.p12
-rw——- 1 oracle oinstall 2048 Apr 1 10:00 ewallet.p12
-rw——- 1 oracle oinstall 2048 Apr 1 10:00 cwallet.sso
SQL> SELECT * FROM v$encryption_wallet;WRL_TYPE WRL_PARAMETER STATUS
——— ———————————— ——————–
FILE /oracle/admin/fgedudb/wallet OPEN
风哥提示:自动登录钱包(cwallet.sso)允许数据库在启动时自动打开钱包,无需手动输入密码。
4.5 备份钱包
mkdir -p /oracle/backup/wallet/$(date +%Y%m%d)
# 备份钱包文件
cp /oracle/admin/fgedudb/wallet/* /oracle/backup/wallet/$(date +%Y%m%d)/# 验证备份
ls -la /oracle/backup/wallet/$(date +%Y%m%d)/-rw——- 1 oracle oinstall 2048 Apr 1 10:00 ewallet.p12
-rw——- 1 oracle oinstall 2048 Apr 1 10:00 cwallet.sso
4.6 轮换主密钥
# 备份新的钱包
cp /oracle/admin/fgedudb/wallet/* /oracle/backup/wallet/$(date +%Y%m%d)_post_rotate/
更多学习教程公众号风哥教程itpux_com
4.7 恢复钱包
sqlplus / as sysdba << EOF SHUTDOWN IMMEDIATE;EXIT;EOF # 恢复钱包文件 cp /oracle/backup/wallet/20260401/* /oracle/admin/fgedudb/wallet/# 启动数据库 sqlplus / as sysdba << EOF STARTUP;EXIT;EOF # 验证钱包状态 SQL> SELECT * FROM v$encryption_wallet;WRL_TYPE WRL_PARAMETER STATUS
——— ———————————— ——————–
FILE /oracle/admin/fgedudb/wallet OPEN
Part05-风哥经验总结与分享
5.1 TDE钱包管理最佳实践
- 使用自动登录钱包,避免数据库启动时需要手动打开钱包
- 定期备份钱包文件,存储在安全的离线位置
- 每次更改主密钥后立即备份钱包
- 设置钱包目录权限为700,确保只有Oracle用户可访问
- 使用强密码保护钱包,定期更换密码
5.2 常见问题与解决方案
- 钱包丢失:使用备份的钱包恢复,确保钱包备份策略有效
- 钱包密码忘记:无法恢复,需要重建钱包并重新加密数据
- 钱包无法打开:检查钱包文件权限、密码是否正确、钱包文件是否损坏
- 自动登录钱包失效:重新创建自动登录钱包
5.3 风哥建议
在生产环境中管理TDE钱包时,建议:
- 制定详细的钱包管理策略,包括备份、恢复、密码管理等
- 定期测试钱包恢复流程,确保在紧急情况下能够快速恢复
- 将钱包备份与数据库备份一起管理,确保数据和密钥都有备份
- 使用HSM存储钱包,提高安全性(对于高安全要求的环境)
- 定期审计钱包访问,确保只有授权人员可以访问钱包
from oracle:www.itpux.com
