Sql-Server
如何保護插入到連結伺服器的 SQL 代理作業
保護在連結伺服器之間移動數據的 T-SQL 代理作業的正確方法是什麼?
設置:
- Microsoft SQL Server 2012 (SP3) 企業版
- SQL Server 代理執行為
NT Service\SQLSERVERAGENT
- Microsoft SQL Server 2008 R2 (SP3-GDR) 速成版
- 伺服器相互連結
- 連結安全上下文設置為“使用登錄的目前安全上下文進行”。
我的目標是從企業伺服器中選擇數據並將其插入到 Express 伺服器上的表中。Express 伺服器正在執行需要與我們的主數據庫集成的供應商軟體。
我正在嘗試使用具有最低權限的專用帳戶來完成這項工作,因為企業伺服器是我們具有各種工作負載的核心伺服器,而且我真的不相信託管供應商軟體的 Express 伺服器總是安全的。
我嘗試在每台伺服器上創建一個具有必要數據庫和表權限的 Active Directory 使用者,但後來我發現 T-SQL 類型的代理作業步驟不能使用代理作為另一個使用者執行。
這樣做的正確方法是什麼?我發現的解決方案看起來很愚蠢或有風險,例如降低伺服器連結的安全上下文、製作 PowerShell 包裝器或將憑據放入 T-SQL 本身。肯定有一種優雅、安全的方式可以按計劃在連結伺服器之間移動數據嗎?還是 SQL Server 在這方面缺乏?
SQL Express 沒有 SQL 代理,所以我假設您在 EE 伺服器上執行該作業。
在這種情況下,您應該能夠簡單地在 SQL EE 框上使用 TSQL 作業步驟 EE 伺服器上的 SQL Server 代理帳戶已經擁有本地 SQL Server 的權限。您可以授予它訪問遠端 SQL Express 伺服器的權限。如果在網路服務或本地虛擬帳戶下執行,您將授予 EE 伺服器的電腦帳戶權限。例如
CREATE LOGIN [MyDomain\SQLEEComputerName$] FROM WINDOWS
然而,通過連結伺服器推送數據並不是很快。拉動速度更快。所以你需要測試性能。