如何使用R DBI保护数据库用户名和密码?

时间:2018-09-25 23:28:45

标签: r security r-dbi rpostgresql

使用dbConnect软件包中的DBI功能连接到数据库时,保护登录信息(如数据库名称,用户名和密码)的最佳实践是什么?

输入登录信息作为字符文本,例如

library(RPostgreSQL)
drv = dbDriver("PostgreSQL")
con = dbConnect(drv, dbname = "<DBNAME>", host = "<HOST>",
                port = 5432, user = "<USER>", password = "<PASSWORD>")

以纯文本形式打开凭据。在R脚本中使用登录信息时,如何保护登录信息?

2 个答案:

答案 0 :(得分:3)

MainActivity软件包是在page mentioned by JohnSG中执行第六种解决方案的独立于系统的方式。与其他方法相比,它的优点是绝不会将秘密信息以明文形式存储在磁盘上。

该方法旨在存储密码,但是任何字符串都可以存储在此处。例如,

@Override
public void onFragmentInteraction(Uri uri){
}

,这将提示您输入密码进行存储。然后您的脚本将使用

keyring

除了单个字符串之外,还可以存储其他数据,但这就是我的用法。

它声称在MacOS上使用钥匙串,在Windows上使用凭据存储,在Linux上使用Secret Service API。我不知道它实际上有多安全。对我来说,足够好,不要把它弄清楚。

答案 1 :(得分:2)

如果您不想安装其他软件包,here

列出了许多选项。

我更喜欢使用.Renviron,如该帖子所述

# ~/.Renviron
id = "my login name"
pw = "my password"

# script.R

# id and pw are defined in the script by virtue of .Rprofile
call_service(id = Sys.getenv("id"), pw = Sys.getenv("pw"), ...)