實作 SQL Server Agent 安全性

適用於:SQL ServerAzure 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 是延伸模組,並不能叫用它本身。 ACE 是由 Chainer ScenarioEngine.exe (也稱為 Microsoft.SqlServer.Chainer.Setup.exe) 叫用,也可由另一個主機處理序叫用。

  • 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

另請參閱

使用預先定義的角色
sp_addrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)
安全性與保護 (Database Engine)