我正在通过 ODBC 和 Ubuntu 服务器(12.04 LTS)上的 Stata 连接到 Teradata 数据库。一切正常,除了我的 TD 用户 ID 和密码存储在 .odbc.ini 文件中,这似乎是个糟糕的主意。另一种方法是在Stata中输入它们,这看起来更糟而且很尴尬。有没有办法更安全地做到这一点?我用来 ssh 进入服务器的登录信息与 TD 数据库同步。似乎应该可以传递该信息。
2 回答
在 ODBC 术语中,您不需要在任何 ODBC ini 文件中存储用户名/密码。ODBC SQLConnect和SQLDriverConnect都支持在调用时传入用户名/密码。
SQLDriverConnect 需要您的 InConnectionString 中的某些内容,例如“DSN=YourDataSourceName;UID=username;PWD=password”。
您可以更进一步,将整个 DSN 作为命令行参数传递,这意味着您不需要 ini 文件中的 ODBC 数据源。我确信其中一位论坛读者可以为您发布来自 Teradata 的样本。
至于从您的 SSH 登录中传递用户名和密码。您的应用程序需要捕获它并将其传递给 ODBC。
如果您想在您的 odbc.ini 文件或 Ubuntu 服务器上可能包含用户凭据的其他文件周围建立更精细的安全性,我强烈建议使用访问控制列表(ACL)。除了典型的 Owner::Group::World 权限之外,您还可以将权限指定给特定用户,以决定是否允许或拒绝给定文件的显式权限。
有关 Teradata 安全性的其他选项包括使用 LDAP 身份验证(如果您的环境支持)。在 Teradata 上配置 LDAP 超出了 SO 的范围,并且在许多情况下是与 Teradata 的信息安全 CoE 的可计费的专业服务合作。