如何使用加密密码验证Oracle登录
我们使用KornShell(ksh)脚本连接到Oracle,该脚本使用SQL*Plus连接到Oracle。Oracle数据库位于同一Solaris设备上。目前,我们将Oracle用户id和密码(纯文本)存储在连接用户的.ssh文件夹中的一个文件中,具有400个权限位 DBA反对这种工作方式,理由是我们使用纯文本密码进行身份验证。当我们提出使用base64对密码进行编码时,他们仍然不喜欢这个想法,理由是我们仍然会在shell脚本中解密密码,并通过网络传输密码 现在,我想了解这一点-如何使用加密密码验证Oracle登录,oracle,authentication,login,database-administration,Oracle,Authentication,Login,Database Administration,我们使用KornShell(ksh)脚本连接到Oracle,该脚本使用SQL*Plus连接到Oracle。Oracle数据库位于同一Solaris设备上。目前,我们将Oracle用户id和密码(纯文本)存储在连接用户的.ssh文件夹中的一个文件中,具有400个权限位 DBA反对这种工作方式,理由是我们使用纯文本密码进行身份验证。当我们提出使用base64对密码进行编码时,他们仍然不喜欢这个想法,理由是我们仍然会在shell脚本中解密密码,并通过网络传输密码 现在,我想了解这一点- 我一直在读Or
伙计们,帮帮我。你们到底是如何连接到数据库的?如果使用
sqlplus用户/password@database
从命令行/脚本中,您可能会遇到问题。原因是,您可以使用ps
命令轻松查看密码
将其与Base64
混淆并不是真正的加密,因为Base64
是一种通过有线传输二进制数据的已知算法。这可能会让一些人感到困惑,但肯定不是发送密码的安全方式
在这种情况下,为了避免在进程列表中显示密码,我要做的是将密码写入本地用户具有只读权限的文本文件。然后我使用nohup或在后台sqlplus运行sqlplususer@db
并立即再次删除该文件。您可以使用数据库身份验证
可以找到调优的示例。这样做已经有一段时间了(我没有linux box随手可得的atm),但您可以尝试这样对ps隐藏详细信息:
echo password | sqlplus -s username@database @myscript.sql
注意,-s是sqlplus的静默模式。我相信您也可以将密码放在一个“受保护”的文件中(我松散地使用这个术语,但将位设置为400)并对文件进行cat,如上所述,通过管道传输到sqlplus
编辑:
如果DBA真的关心密码,那么不使用密码怎么样。您可以尝试操作系统身份验证,但需要先进行一些设置。例如:
--在Oracle中,创建新用户
create user ops$batch_user IDENTIFIED EXTERNALLY;
grant connect to ops$batch_user;
--在Unix中(以批处理用户身份登录,或使用su命令)
请注意,由于用户已通过操作系统的身份验证,因此不使用密码。这没有Oracle wallet imo复杂,但也不完美
export ORACLE_HOME=/app/oracle/product/11.2
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=DEV
sqlplus /