目的:避免在命令行/脚本中暴露数据库明文密码,提升系统安全性
dexp USERID=SYSDBA/Da***** FILE=db_str.dmp DIRECTORY=/home/dmdba/bak LOG=db_str.log FULL=Y
风险提示:命令行中直接使用
SYSDBA/Da*****会暴露敏感信息,存在安全漏洞。
dm_svc.conf# /etc/dm_svc.conf 新增:
WALLET_LOCATION=(/home/dmdba/dmdbms/wallet) # Wallet存储路径
sysdba=(192.168.**.**:5236) # 自定义服务名映射
[dmdba@dms8 ~]$ dmmkstore -wrl /home/dmdba/dmdbms/wallet -create DM Secret Store Tool: V8 Version: 2 输入口令: Wallet_*** 再次输入口令: Wallet_***
按提示输入两次Wallet管理口令(示例中为
Wallet_***,生产环境需加强复杂度)
#sysdba 服务名 sysdba 用户名 Da***** 用户密码,服务名要配合dm_svc.conf使用
[dmdba@dms8 bak]$ dmmkstore -wrl /home/dmdba/dmdbms/wallet -createCredential sysdba sysdba Da*****
DM Secret Store Tool: V8
Version: 2
输入 Wallet 口令: Wallet_***
Create credential DM.security.client.connect_string1
[dmdba@dms8 bak]$ ll /home/dmdba/dmdbms/wallet/
总用量 4
-rw-r--r-- 1 dmdba dinstall 3414 8月 14 09:47 dmwallet.prikey
sysdba:服务名(需与dm_svc.conf一致)- 第二个
sysdba:数据库用户名Da*****:数据库密码(此处输入实际密码,但不会被保存到历史记录)
需验证Wallet管理口令后生效
dmmkstore -wrl /home/dmdba/dmdbms/wallet -listCredential
输出示例:
1: sysdba sysdba
disql /@sysdba # 通过服务名自动获取凭据
连接成功即表明Wallet配置有效
[dmdba@dms8 ~]$ dexp USERID=/@sysdba FILE=db_str1.dmp DIRECTORY=/home/dmdba/bak LOG=db_str1.log FULL=Y …… 整个导出过程共花费 0.107 s 成功终止导出, 没有出现警告
关键变化:
USERID=/@sysdba 替代了 USERID=SYSDBA/******,通过Wallet自动认证,彻底消除密码泄露风险。
chmod 700 /home/dmdba/dmdbms/wallet # 限制Wallet目录权限
dmmkstore -modifyCredential更新)/@服务名方式的登录行为技术价值:通过Wallet机制,将密码存储于加密文件中,杜绝了密码在脚本、历史记录、进程信息中的暴露,符合等保合规要求。
此方案适用于自动化运维场景(如定时备份),大幅提升数据库安全水位。
文章
阅读量
获赞
