假設我必須創建一個 SSIS 包并將其部署到 sql server(將其命名為 SQL1)從另一個 sql server(SQL2)加載一些資料。在 SQL 上,我也想創建一個作業來執行這個包。讓我們假設其他不受信任的人也可以在此服務器上創建 SSIS 包和作業,不允許他們從這里訪問 SQL2 資料庫。
但首先我認為我必須授予一些權限,讓我的作業訪問 SQL2 上所需的資料庫。問題從這里開始——如何?
- 正如我所見,SSIS 作業在名為“NT SERVICE\SQLSERVERAGENT”的服務用戶上運行在 SQL1 上,這似乎是本地用戶(但我不理解 NT SERVICE\ 前綴) - 如何為該用戶添加權限在 SQL2 上?
- 據我所知,我可以將 SQL1 代理更改為作為定義的 AD 服務用戶運行 - 但這會影響 SQL1 上的所有 SSIS 作業 - 看起來很糟糕
- 我可以在 SQL1 上添加一個 AD 服務用戶帳戶作為憑據和一個代理,并讓 SSIS 步驟以此用戶身份運行
- 另一種方式?哪種方式是最佳實踐?
那么在不涉及 AD 服務用戶的情況下,我可以解決這個問題嗎?對我來說,#1 解決方案不需要其他服務用戶 - 但 #2 和 #3。
安全級別:我能否在不讓其他不受信任的人輕松重用 SQL1 上為我自己的 SSIS 授予的權限的情況下解決此問題?正如我所見,#1 非常糟糕——在這種情況下,SQL1 上的所有 SSIS 包都可以訪問 SQL2。在案例#2 - 出于同樣的原因,似乎也很糟糕。在#3 案例中——因為憑據和代理在 SQL1 上是“公開的”,所以每個人都可以為他自己的 SSIS 步驟分配這個代理——所以看起來很糟糕。
也許我的問題沒有好的解決方案——就在我使用全新的 SQL 服務器而不讓其他不受信任的人訪問它的時候?
非常感謝您閱讀有關此主題的任何建議或文章!謝謝!
uj5u.com熱心網友回復:
使用 SQL Server 代理運行 SSIS 包的最佳實踐是 SQL Server 代理由域帳戶運行(實際上這是所有 SQL Server 服務的最佳實踐,您不應在生產環境中使用默認值)并創建一個用于運行 SSIS 包的憑據和代理帳戶。
從安全的角度來看,您可以在 SSIS 包中創建到 SQL2 的連接,并為連接提供硬編碼的用戶和密碼。要保護憑據,您可以使用適合您的包保護級別(密碼保護可能是最簡單的):https ://docs.microsoft.com/en-us/sql/integration-services/security/access-control- for-sensitive-data-in-packages?view=sql-server-ver15#protection-levels
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/464505.html
