實作 SQL Server Agent 安全性
適用於:SQL Server Azure SQL 受控執行個體
重要
Azure SQL 受控執行個體目前支援多數 (但非全部) 的 SQL Server Agent 功能。 如需詳細資料,請參閱 Azure SQL 受控執行個體與 SQL Server 之間的 T-SQL 差異。
SQL Server Agent 讓資料庫管理員可以在只具有執行作業步驟所需權限的安全內容中執行每個工作步驟,此權限由 SQL Server Agent Proxy 決定。 若要設定特定作業步驟的權限,請建立具有必要權限的 Proxy,然後將該 Proxy 指派給作業步驟。 您可以將 Proxy 指派給多個作業步驟。 對於要求相同權限的作業步驟,可以使用相同的 Proxy。
下一節將解釋您必須授與使用者哪些資料庫角色,才能讓他們使用 SQL Server Agent 來建立或執行工作。
授與 SQL Server Agent 的存取權
如需使用 SQL Server Agent,使用者必須是下列一或多個固定資料庫角色的成員:
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
這些角色儲存在 msdb 資料庫中。 根據預設,沒有任何使用者隸屬於這些資料庫角色的成員。 您必須明確授與這些角色的成員資格。 系統管理員 (sysadmin) 固定伺服器角色的成員使用者對於 SQL Server Agent 具有完整的存取權,且不需要是這些固定資料庫角色的成員就能使用 SQL Server Agent。 若使用者不是這些資料庫角色或系統管理員 (sysadmin) 角色的成員,當他們使用 SQL Server Management Studio 連線至 SQL Server 時,將無法使用 SQL Server Agent 節點。
這些資料庫角色的成員可以檢視與執行自己所擁有的物件,並建立以現有 Proxy 帳戶身分執行的作業步驟。 如需上述每個角色所關聯之特定權限的詳細資訊,請參閱< SQL Server Agent 固定資料庫角色>。
系統管理員 固定伺服器角色的成員有權建立、修改與刪除 Poxy 帳戶。 系統管理員 (sysadmin) 角色的成員擁有建立以 SQL Server Agent 服務帳戶身分執行之工作步驟 (不指定 Proxy) 的權限,此帳戶是用來啟動 SQL Server Agent 的帳戶。
指導方針
請遵循下列指導方針來改善 SQL Server Agent 實作的安全性:
為 Proxy 建立專屬的使用者帳戶,並只使用這些 Proxy 使用者帳戶來執行作業步驟。
只授與必要的權限給 Proxy 使用者帳戶。 對於指派至特定 Proxy 帳戶的作業步驟,只授與它們執行所需的必要權限。
請勿使用隸屬於 Windows Administrators 群組的 Microsoft Windows 帳戶身分來執行 SQL Server Agent 服務。
只有在 SQL Server 認證存放區安全的情況下,Proxy 才會安全。
如果使用者寫入作業可以寫入 NT 事件記錄檔,則其可以透過 SQL Server Agent 引發警示。
請勿將 NT 管理員帳戶指定為服務帳戶或 Proxy 帳戶。
SQL Server 和 SQL Server Agent 有相互存取對方資產的權限。 這兩項服務共用單一處理序空間,且 SQL Server Agent 是 SQL Server 服務上的系統管理員 (sysadmin)。
當 TSX (目標伺服器) 在 MSX (主要伺服器) 上登錄時,MSX 系統管理員 (sysadmin) 會取得 SQL Server TSX 執行個體的完整控制權。
ACE 是延伸項目,並不能叫用它本身。 Chainer ScenarioEngine.exe (也稱為 Microsoft.SqlServer.Chainer.Setup.exe) 可叫用 ACE。 其他主機處理序也可以叫用 ACE。
ACE 取決於 SSDP 所擁有的下列設定 DLL,因為 ACE 會呼叫 DLL 的這些 API:
SCO - Microsoft.SqlServer.Configuration.Sco.dll,包括虛擬帳戶的新 SCO 驗證
叢集 - Microsoft.SqlServer.Configuration.Cluster.dll
SFC - Microsoft.SqlServer.Configuration.SqlConfigBase.dll
延伸模組 - Microsoft.SqlServer.Configuration.ConfigExtension.dll
連結的伺服器
在某些案例中,例如使用 Azure SQL 受控執行個體,若要執行會透過連結的伺服器在遠端伺服器上執行 Transact-SQL (T-SQL) 查詢的 SQL Agent 工作,您必須將本機登入對應至遠端伺服器上的登入。
使用 sp_addlinkedsrvlogin,在本機伺服器上的登入與遠端伺服器上具有執行 T-SQL 查詢所需權限的登入之間建立對應。 當 SQL Agent 作業透過連結的伺服器連線到遠端伺服器時,它會在遠端登入的內容中執行 T-SQL 查詢。
下表會描述如何根據 Azure SQL 受控執行個體 中的 SQL Agent 工作擁有者來對應登入:
SQL Agent 工作擁有者 | 如何對應登入 |
---|---|
使用者不是系統管理員 | 將擁有 SQL Agent 工作的本機使用者對應至遠端登入。 |
sysadmin | 將 @locallogin 參數設定為 NULL ,以將所有本機使用者對應至遠端登入。 |
注意
當本機伺服器為 Azure SQL 受控執行個體 時,需要針對 SQL Agent 工作在遠端伺服器上建立登入。 無法正確對應使用者可能會導致錯誤,例如以下範例:
Windows logins are not supported in this version of SQL Server
Linked servers cannot be used under impersonation without a mapping for the impersonated login