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

如何使用R DBI保护数据库用户名和密码?,r,security,r-dbi,rpostgresql,R,Security,R Dbi,Rpostgresql,使用DBI包中的dbConnect功能连接到数据库时,保护登录信息(如数据库名称、用户名和密码)的最佳做法是什么 以字符文本形式输入登录信息,例如 library(RPostgreSQL) drv = dbDriver("PostgreSQL") con = dbConnect(drv, dbname = "<DBNAME>", host = "<HOST>", port = 5432, user = "<USER>", pas

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

以字符文本形式输入登录信息,例如

library(RPostgreSQL)
drv = dbDriver("PostgreSQL")
con = dbConnect(drv, dbname = "<DBNAME>", host = "<HOST>",
                port = 5432, user = "<USER>", password = "<PASSWORD>")
库(RPostgreSQL)
drv=dbDriver(“PostgreSQL”)
con=dbConnect(drv,dbname=“”,host=“”,
端口=5432,用户=,密码=)

使凭据保持打开状态并以纯文本显示。在R脚本中使用登录信息时如何保护它?

如果您不想安装其他软件包,下面列出了许多选项

我更喜欢使用.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"), ...)

如果您不想安装其他软件包,下面列出了许多选项

我更喜欢使用.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"), ...)

keyring
软件包是一种独立于系统的方式,用于在中执行第六个解决方案。与其他方法相比,它的优点是机密信息永远不会存储在磁盘上的clear中

该方法设计用于存储密码,但任何字符串都可以存储在那里。比如说,

library(keyring)
key_set("DBPassword", "ichbinallen")
这将导致提示您输入要存储的密码。那么您的脚本将使用

con = dbConnect(drv, dbname = "<DBNAME>", host = "<HOST>",
            port = 5432, user = "<USER>", 
            password = key_get("DBPassword", "ichbinallen"))
con=dbConnect(drv,dbname=“”,host=“”,
端口=5432,用户=”,
password=key_get(“DBPassword”、“ichbinallen”))
除了单个字符串之外,还可以存储其他数据,但我就是这样使用它的


它声称在MacOS上使用钥匙链,在Windows上使用凭证存储,在Linux上使用秘密服务API。我不知道它到底有多安全;对我来说,它已经足够好了,不需要把它放在透明的地方。

钥匙圈软件包是一种独立于系统的方式,它可以完成第六个解决方案。与其他方法相比,它的优点是机密信息永远不会存储在磁盘上的clear中

该方法设计用于存储密码,但任何字符串都可以存储在那里。比如说,

library(keyring)
key_set("DBPassword", "ichbinallen")
这将导致提示您输入要存储的密码。那么您的脚本将使用

con = dbConnect(drv, dbname = "<DBNAME>", host = "<HOST>",
            port = 5432, user = "<USER>", 
            password = key_get("DBPassword", "ichbinallen"))
con=dbConnect(drv,dbname=“”,host=“”,
端口=5432,用户=”,
password=key_get(“DBPassword”、“ichbinallen”))
除了单个字符串之外,还可以存储其他数据,但我就是这样使用它的


它声称在MacOS上使用钥匙链,在Windows上使用凭证存储,在Linux上使用秘密服务API。我不知道它到底有多安全;对我来说,不把它放在透明的地方就足够了。

你看过
钥匙圈
包吗?我不太熟悉。有没有我可以遵循的mwe?问了这个问题后,我发现RStudio有一个DB使用的。你看过
钥匙圈
软件包吗?我不熟悉。有一个mwe我可以遵循吗?因为问了这个问题,我发现RStudio有一个DB使用。