我需要锁定对MSSQL服务器中链接服务器对象的访问。
我正在构建一个主机数据库的视图,我从中查询填充仓库服务器上的临时表。我正在使用Data Tools / SSIS来提取视图数据。为了简化SSIS包,我使用OPENQUERY
语法查询仓库服务器上存在的链接服务器对象,并通过链接服务器对象连接到其他SQL服务器,Oracle服务器等。
为了提供对链接服务器的访问,我在具有读访问权限的主机数据库上设置了本地SQL登录,然后使用'使用此安全上下文:'并传递本地SQL登录。这很好用。
我现在意识到我遇到了一个问题:任何具有仓库访问权限的用户都可以查询链接的服务器对象,因为存储了安全上下文!我不想要那个!我确实需要能够查询的人(因此我可以编写我的SSIS包)以及SQL Server代理服务帐户以便访问,以便当SQL Server代理作业以该用户成功运行时它可以成功查询链接服务器。
我认为锁定对链接服务器对象的查询访问权限的关键在“本地服务器登录到远程服务器登录映射”中,但我很难搞清楚。当我尝试添加例如NT SERVICE\SQLAgent
映射到具有访问权限的本地登录时,然后保存,我在保存时点击'登录失败'NT AUTHORITY \ ANONYMOUS LOGON'。
有关如何允许具有访问权限的安全组和SQL Server代理服务帐户查询链接服务器,而不是其他具有仓库访问权限的人员的任何想法?
答案 0 :(得分:0)
这被称为“双跃点”'问题
(https://blogs.technet.microsoft.com/askds/2008/06/13/understanding-kerberos-double-hop/)
要摆脱匿名登录错误,您必须正确设置Kerberos传递身份验证;
然而,这是非常复杂的 - 你提到要简化'您使用链接服务器的SSIS包,但SSIS正好解决了这个问题...为什么不使用SSIS从其他服务器复制数据以避免使用链接服务器?