如何安全地通过脚本登录数据库?

use*_*760 6 linux security password

我想知道在环境变量中设置数据库登录凭据(用户/密码)或作为命令行参数传入是否可以接受(安全方面)?

这两种方法对我来说似乎都有风险,因为也许其他人可以读取环境变量或读取正在运行的进程/历史记录,并且凭据将以纯文本形式存在(我的理解在这里是否正确?)

什么是可以接受的登录方式?它将作为自动化作业/流程的一部分在脚本中运行。

编辑:这是一个 Oracle 数据库 (11g)

编辑 #2:曾经考虑过 Oracle 钱包,但在我工作的地方还不能使用。

fro*_*utz 1

任何人都可以通过 读取命令行参数/proc/<pid>/cmdline。对于立即退出的进程,它们仍然可以显示给使用ps类似监视程序的人。

另一方面,内存中的密码应该不是问题。没有超级用户权限就无法访问内存,安全软件通常会在将内存释放给其他进程之前覆盖内存中的密码。

最常见的方法是使用文件权限。密码保存在一个文件中,只有应该能够读取的人才能读取该文件。因此,作为文件的凭证(无论是密钥还是密码)对于常见的命令行泄漏是安全的。

  • `/proc/&lt;pid&gt;/environ` 设置为 400(所有者只读)。我怀疑是否有任何“合法”方法可以直接读取其他人的环境变量,因此该方法可能比将其放入文件中“更安全”。 (2认同)