0

我需要锁定对 MSSQL 服务器中链接服务器对象的访问。

我正在主机数据库上构建视图,我从中查询以填充仓库服务器上的临时表。我正在使用数据工具/SSIS 来提取视图数据。为了简化 SSIS 包,我使用OPENQUERY语法来查询我的仓库服务器上存在的链接服务器对象,并通过链接服务器对象连接到其他 SQL 服务器、Oracle 服务器等。

为了提供对链接服务器的访问,我在具有读取访问权限的主机 db 上设置了一个本地 SQL 登录,然后我使用“使用此安全上下文:”并传递本地 SQL 登录。这工作得很好。

我现在意识到我有一个问题:任何具有仓库访问权限的用户都可以因为隐藏的安全上下文查询链接的服务器对象!我不想要那个!我确实需要有权查询的人(这样我就可以编写我的 SSIS 包)以及 SQL Server 代理服务帐户才能访问,以便当 SQL Server 代理作业以该用户身份运行时它可以成功查询链接服务器。

我相信锁定对链接服务器对象的查询访问的关键在于“本地服务器登录到远程服务器登录映射”中的某个位置,但我很难弄清楚这一点。当我尝试添加例如NT SERVICE\SQLAgent映射到具有访问权限的本地登录名,然后保存时,我在保存时点击了“NT AUTHORITY\ANONYMOUS LOGON”登录失败。

关于如何允许具有访问权限的安全组和 SQL Server 代理服务帐户查询链接服务器而不是其他具有仓库访问权限的人的任何想法?

4

1 回答 1

0

这被称为“双跳”问题

( https://blogs.technet.microsoft.com/askds/2008/06/13/understanding-kerberos-double-hop/ )

为了摆脱匿名登录错误,您必须正确设置 Kerberos 直通身份验证;

https://blogs.msdn.microsoft.com/farukcelik/2008/01/02/how-to-set-up-a-kerberos-authentication-scenario-with-sql-server-linked-servers/

https://www.databasejournal.com/features/mssql/article.php/3696506/Setting-Up-Delegation-for-Linked-Servers.htm

但是,这涉及到很多问题-您提到要“简化”您使用链接服务器的 SSIS 包,但是 SSIS 正好解决了这个问题……您为什么不直接使用 SSIS 从其他服务器复制数据以避免使用链接服务器?

于 2018-02-14T22:49:27.477 回答