SAS 传递语句中的无密码身份验证?
Passwordless authentication within SAS pass-through statements?
感谢 SAS 的个人登录管理器,与远程服务器的初始连接无需密码(或密码哈希)即可工作。但是,似乎有必要指定各个数据库的密码(用户 xxuser
密码 xxpwd
,请参见下面的示例)。
有没有办法在 SAS 代码中不使用密码(哈希)连接到数据库服务器上的不同数据库?
/* Connect to database server works without password
thanks to SAS's Personal Login Manager */
%dosignon(srvcomponent=xxxremoteSAS);
/* SQL direct pass-through to server */
rsubmit;
/* Define SAS-libraries (on server) */
libname remote_db_a db2 dsn=dbxa schema=xxschema1 user=xxuser password= "xxpwd";
libname remote_db_b db2 dsn=dbxa schema=xxschema2 user=xxuser password= "xxpwd";
endrsubmit;
/* Link local library names with the ones the server */
libname remote_db_a a libref=remote_db_a server=&sessid.;
libname remote_db_b a libref=remote_db_b server=&sessid.;
一种解决方法是使用 proc pwencode in="plaintextPassword"; run;
对密码字符串进行编码,并在源代码中使用此散列代替 xxpwd
。潜在的攻击者现在不能再使用密码访问其他帐户,但当然仍然可以访问任何数据库。
PS:我是 SAS 的新手,所以 SAS documentation 对我来说就像一本有七个印章的书。我问过各种 SAS 专家,但我对密码散列建议不满意。
相关问答:
- SAS SQL Pass Through
- ODBC Password Security in SAS
我不是 SAS Metadata Manager 如何管理访问凭据的专家,但只要 "remote" SAS 会话也使用 Metadata Manager,那么您应该能够使用它来建立连接。
这是一篇关于您提到的个人登录管理器的博客post。
https://platformadmin.com/blogs/paul/2010/11/sas-personal-login-manager/
在讨论结束时,有一个示例说明如何使用元数据管理器创建 libref 以提供凭据
From a user perspective to use the (outbound login) credentials to get
access to third party systems look for authentication domain support
in the SAS feature you are using. For example SAS/ACCESS AUTHDOMAIN=
LIBNAME Option.
该页面的示例:
options metauser="metadata-userid" metapass="metadata-password"
metaport=8561 metaprotocol=bridge
metarepository="metadata-repository"
metaserver="server-name";
libname A1 saphana server=mysrv1 port=30015 authodomain="hanaauth";
感谢 SAS 的个人登录管理器,与远程服务器的初始连接无需密码(或密码哈希)即可工作。但是,似乎有必要指定各个数据库的密码(用户 xxuser
密码 xxpwd
,请参见下面的示例)。
有没有办法在 SAS 代码中不使用密码(哈希)连接到数据库服务器上的不同数据库?
/* Connect to database server works without password
thanks to SAS's Personal Login Manager */
%dosignon(srvcomponent=xxxremoteSAS);
/* SQL direct pass-through to server */
rsubmit;
/* Define SAS-libraries (on server) */
libname remote_db_a db2 dsn=dbxa schema=xxschema1 user=xxuser password= "xxpwd";
libname remote_db_b db2 dsn=dbxa schema=xxschema2 user=xxuser password= "xxpwd";
endrsubmit;
/* Link local library names with the ones the server */
libname remote_db_a a libref=remote_db_a server=&sessid.;
libname remote_db_b a libref=remote_db_b server=&sessid.;
一种解决方法是使用 proc pwencode in="plaintextPassword"; run;
对密码字符串进行编码,并在源代码中使用此散列代替 xxpwd
。潜在的攻击者现在不能再使用密码访问其他帐户,但当然仍然可以访问任何数据库。
PS:我是 SAS 的新手,所以 SAS documentation 对我来说就像一本有七个印章的书。我问过各种 SAS 专家,但我对密码散列建议不满意。
相关问答:
- SAS SQL Pass Through
- ODBC Password Security in SAS
我不是 SAS Metadata Manager 如何管理访问凭据的专家,但只要 "remote" SAS 会话也使用 Metadata Manager,那么您应该能够使用它来建立连接。
这是一篇关于您提到的个人登录管理器的博客post。 https://platformadmin.com/blogs/paul/2010/11/sas-personal-login-manager/
在讨论结束时,有一个示例说明如何使用元数据管理器创建 libref 以提供凭据
From a user perspective to use the (outbound login) credentials to get access to third party systems look for authentication domain support in the SAS feature you are using. For example SAS/ACCESS AUTHDOMAIN= LIBNAME Option.
该页面的示例:
options metauser="metadata-userid" metapass="metadata-password"
metaport=8561 metaprotocol=bridge
metarepository="metadata-repository"
metaserver="server-name";
libname A1 saphana server=mysrv1 port=30015 authodomain="hanaauth";