共用方式為


實作 SQL Server Agent 安全性

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 固定資料庫角色>。

系統管理員 (sysadmin) 固定伺服器角色的成員擁有建立、修改與刪除 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 驗證

    • Cluster – Microsoft.SqlServer.Configuration.Cluster.dll

    • SFC – Microsoft.SqlServer.Configuration.SqlConfigBase.dll

    • Extension – Microsoft.SqlServer.Configuration.ConfigExtension.dll

請參閱

參考

sp_addrolemember (Transact-SQL)

sp_droprolemember (Transact-SQL)

概念

預先定義的角色

安全性與保護 (Database Engine)