linux – 使用JDBC / ODBC驱动程序将R与数据库连接时保护用户凭
通常我使用JDBC / ODBC驱动程序使用R连接到数据库.典型的代码看起来像
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才允许用户使用它.如果我给予读取权限,我的凭证将被公开.反正我们可以通过保护用户凭据来解决这个问题吗? 解决方法
除非你通过制作一个初始JDBC连接的Rcpp函数或包来深深地模糊你的凭证(这不会是微不足道的),你唯一一个更轻松的混淆机制就是将你的凭证存储在一个文件中并拥有你的源R脚本从文件中读取它们,在调用中使用它们,并在调用后立即从环境中将它们发送出去.这仍然会暴露他们,但不是直接暴露他们.
另一种方式,因为用户有他们自己的登录到RStudio服务器,是使用Hadley的新secure软件包(我们中的一些人通过它的步伐运行它),添加用户密钥并将您的凭据加密存储但是有你的sourced R脚本自动解密它们.您仍然需要使用您使用的任何变量的rm,因为如果不这样,它们将成为环境的一部分. 最后一种方式,因为你无论如何都要让他们访问数据,就是使用一套单独的凭证(你用这个问题表达的方式就是你使用你的凭据)只能在只读模式下工作到数据库&这些分析所需的表格.这样,信用证泄漏并不重要,因为没有什么“坏”可以用它们来完成. 最后,我很困惑为什么你不能只在数据库端设置具有只读权限的用户?这就是基于角色的访问控制的用途.这是行政工作,但绝对是正确的事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |