gpt4 book ai didi

linux - 使用 JDBC/ODBC 驱动程序将 R 与数据库连接时保护用户凭据

转载 作者:IT王子 更新时间:2023-10-29 01:16:07 24 4
gpt4 key购买 nike

通常我使用 R 使用 JDBC/ODBC 驱动程序连接到数据库。一个典型的代码看起来像

library(RJDBC)
vDriver = JDBC(driverClass="com.vertica.jdbc.Driver", classPath="/home/Drivers/vertica-jdbc-7.0.1-0.jar")
vertica = dbConnect(vDriver, "jdbc:vertica://servername:5433/db", "username", "password")

我希望其他人使用我的凭据访问数据库,但我想保护我的用户名和密码。因此,我计划将上述脚本保存为“Connections.r”文件,并要求用户获取该文件。

source("/opt/mount1/Connections.r")

如果我只授予 Connections.r 执行权限,其他人将无法获取该文件

chmod 710 Connections.r

只有在我授予读取和执行权限时,R 才允许用户获取它。如果我授予读取权限,我的凭据将被公开。无论如何我们可以通过保护用户凭证来解决这个问题吗?

最佳答案

除非您要通过创建一个 Rcpp 函数或包来深度混淆您的凭据来执行初始 JDBC 连接(这不会是微不足道的),否则您唯一较轻的混淆机制之一是将您的凭据存储在一个文件中并让您的sourced R 脚本从文件中读取它们,在调用中使用它们,并在调用后立即从环境中 rm 它们。这仍然会暴露他们,但不是直接暴露。

另一种方式,因为用户有自己的 RStudio Server 登录名,是使用 Hadley 的新 secure包(我们中的一些安全人员正在按照它的步伐运行它),添加用户 key 并加密存储您的凭据,但让您的源 R 脚本自动解密它们。您仍然需要对您使用的任何变量执行 rm,因为如果您不这样做,它们将成为环境的一部分。

最后一种方法,因为您无论如何都让他们访问数据,所以是使用一组单独的凭据(您表达问题的方式似乎是在使用您的凭据this) 只对这些分析所需的数据库和表以只读模式工作。这样一来,信用是否泄露并不重要,因为没有什么可以用它们做的“坏事”。

最后,我很困惑为什么你不能只在数据库端设置用户只读权限?这就是基于角色的访问控制的目的。这是行政工作,但绝对是正确的做法。

关于linux - 使用 JDBC/ODBC 驱动程序将 R 与数据库连接时保护用户凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com