使用以原則為基礎的管理來管理伺服器

以原則為基礎的管理是用於管理一或多個 SQL Server 2008 執行個體的系統。當 SQL Server 原則管理員使用以原則為基礎的管理時,他們就會使用 SQL Server Management Studio 來建立管理伺服器實體的原則,例如 SQL Server 的執行個體、資料庫或其他 SQL Server 物件。

以原則為基礎的管理有三個元件:

  • 原則管理

    原則管理員會建立原則。

  • 明確管理

    管理員會選取一或多個 Managed 目標並且明確檢查這些目標是否符合特定原則,或明確讓這些目標符合原則。

  • 評估模式

    有四種評估模式式,其中三種模式可以自動化:

    • 視需要。這種模式會在使用者直接指定時評估原則。

    • 變更時 - 避免。這種自動模式會使用 DDL 觸發程序來防止原則違規。

      重要事項重要事項

      如果停用了 nested triggers 伺服器組態選項,[變更時: 避免] 將無法正確運作。原則式管理會依賴 DDL 觸發程序來偵測及回復不符合使用此評估模式之原則的 DDL 作業。移除以原則為基礎的管理 DDL 觸發程序或停用巢狀觸發程序時,將會造成這個評估模式失敗或以非預期的方式執行。

    • 變更時 - 僅限記錄。這種自動模式會在發生相關變更時使用事件通知來評估原則。

    • 按排程時間。這種自動模式會使用 SQL Server Agent 作業來定期評估原則。

    沒有啟用自動原則時,以原則為基礎的管理將不會影響系統效能。

    [!附註]

    當系統計算原則的物件集時,預設會排除系統物件。例如,如果原則的物件集參考所有資料表,此原則將不會套用至系統資料表。如果使用者想要針對系統物件評估原則,可以將系統物件明確加入至物件集。不過,雖然所有原則都支援 [依排程檢查] 評估模式,但是基於效能考量,並非包含任意物件集的所有原則都支援 [變更時檢查] 評估模式。如需詳細資訊,請參閱 https://blogs.msdn.com/b/sqlpbm/archive/2009/04/13/policy-evaluation-modes.aspx

原則式管理詞彙和概念

  • 以原則為基礎的管理 Managed 目標
    以原則為基礎之管理所管理的實體,例如 SQL Server Database Engine 的執行個體、資料庫、資料表或索引。伺服器執行個體中的所有目標都會構成目標階層。目標集是指將一組目標篩選套用至目標階層所產生的目標集,例如 HumanResources 結構描述所擁有之資料庫中的所有資料表。

  • 原則式管理 Facet
    針對特定 Managed 目標類型建立行為或特性模型的一組邏輯屬性。屬性的數目和特性會建立在 Facet 中,而且只能由 Facet 的建立者加入或移除。一個目標類型可以實作一或多個管理 Facet,而一個管理 Facet 可以由一或多個目標類型實作。Facet 的某些屬性只能套用至特定版本。例如,介面區組態 Facet 的 Database Mail 屬性只會套用至 SQL Server 2005 和更新版本。

  • 以原則為基礎的管理條件
    一種布林運算式,可指定以原則為基礎之管理 Managed 目標所允許的一組狀態 (與管理 Facet 有關)。

  • 以原則為基礎的管理原則
    以原則為基礎的管理條件和預期的行為,例如評估模式、目標篩選和排程。一個原則只能包含一個條件。您可以啟用或停用原則。

  • 以原則為基礎的管理原則類別目錄
    協助管理原則的使用者定義類別目錄。使用者可以將原則分類至不同的原則類別目錄中。一個原則只能屬於一個原則類別目錄。原則類別目錄會套用至資料庫和伺服器。下列條件會在資料庫層級套用:

    • 資料庫擁有者可以讓資料庫訂閱一組原則類別目錄。

    • 只有來自其訂閱類別目錄的原則可以管理資料庫。

    • 所有資料庫都會隱含訂閱預設的原則類別目錄。

    原則類別目錄可以在伺服器層級上套用到所有資料庫。

  • 有效原則
    目標的有效原則就是管理此目標的這些原則。只有在滿足下列所有條件時,原則對於目標而言才有效:

    • 此原則已啟用。

    • 目標屬於此原則的目標集。

    • 目標或其中一個目標上階訂閱包含此原則的原則群組。

使用以原則為基礎之管理所解決之問題的範例

以原則為基礎的管理在解決下列狀況所呈現的問題方面很有用:

  • 公司原則禁止啟用 Database Mail 或 SQL Mail。因此,建立原則來檢查這兩項功能的伺服器狀態。管理員會比較伺服器狀態與此原則。如果伺服器狀態不符合,管理員就會選擇設定模式,而且此原則會讓伺服器狀態符合。

  • AdventureWorks2008R2 資料庫具有要求所有預存程序都以字母 AW_ 為開頭的命名規範。因此,建立原則來強制執行此原則。管理員會測試此原則,並且收到不符合之預存程序的清單。如果未來的預存程序不符合這個命名慣例,預存程序的建立陳述式就會失敗。

允許的評估模式

原則評估模式是由此原則使用的原則式管理 Facet 特性所決定。所有 Facet 都支援 [視需要][按排程時間]。如果某些事件可以擷取 Facet 狀態的變更,Facet 就會支援 [變更時: 僅限記錄]。如果變更 Facet 狀態的 DDL 陳述式具有交易式支援,Facet 就會支援 [變更時: 避免]。您可以啟用和停用使用其中一種執行模式自動化的原則。

在 SQL Server Management Studio 中,[評估原則] 對話方塊會提供兩個選項供您用來執行原則:

  • 評估
    這將會針對選取的目標評估原則。

  • 套用
    此選項可讓您將變更套用到違反原則的適用目標。某些目標不可透過以原則為基礎的管理來重新設定。例如,如果您正在評估備份檔和資料檔是否存在於個別的裝置上,以原則為基礎的管理可以偵測違反此條件的情況;但是,您無法透過以原則為基礎的管理套用變更來強制符合原則。

原則管理

原則是使用 Management Studio 建立和管理的。此程序包含下列步驟:

  1. 選取包含要設定之屬性的以原則為基礎的管理 Facet。

  2. 定義指定管理 Facet 狀態的條件。

  3. 定義包含此條件、可篩選目標集的其他條件及評估模式的原則。

  4. 檢查 SQL Server 的執行個體是否符合此原則。

若為失敗的原則,[物件總管] 會指出嚴重健全狀況警告成為目標旁的紅色圖示以及 [物件總管] 樹狀結構中較高的節點。

原則儲存

原則會儲存在 msdb 資料庫中。變更原則或條件之後,就應該備份 msdb。如需詳細資訊,請參閱<備份 model 和 msdb 資料庫的考量>。

SQL Server 2008 包含一些可用來監視 SQL Server 執行個體的原則。根據預設,這些原則不會安裝在 Database Engine 上。不過,您可以從預設安裝位置 C:\Program Files\Microsoft SQL Server\100\Tools\Policies\DatabaseEngine\1033 匯入這些原則。如需詳細資訊,請參閱<如何:匯出和匯入以原則為基礎的管理原則>。

您可以使用 [檔案/新增] 功能表來直接建立原則,然後將它們儲存至檔案。當您沒有連接至 Database Engine 的執行個體時,這樣就可讓您建立原則。

在目前 Database Engine 執行個體中評估之原則的原則記錄會保存在 msdb 系統資料表中。套用至其他 Database Engine 執行個體或套用至 Reporting Services 或 Analysis Services 之原則的原則記錄則不會保留。如需詳細資訊,請參閱<疑難排解以原則為基礎的管理原則>。

設定警示以便向原則管理員通知原則失敗

當原則式管理原則在其中一種自動評估模式中執行時,如果發生原則違規,系統就會在事件記錄檔中寫入一則訊息。若要在這則訊息寫入事件記錄檔時收到通知,您可以建立偵測訊息並執行動作的警示。此警示應該會偵測到下表所列的訊息。

執行模式

訊息編號

變更時 - 避免

(若為自動)

34050

變更時 - 避免

(若為視需要)

34051

按排程時間

34052

變更時

34053

若要設定警示來回應以原則為基礎的管理錯誤訊息,請參閱下列主題:

關於警示的其他考量

請注意下列關於警示的其他考量:

  • 系統只會針對啟用的原則引發警示。由於無法啟用 [視需要] 原則,因此無法針對視需要執行的原則引發警示。

  • 如果您想要採取的動作包含傳送電子郵件訊息,就必須設定郵件帳戶。我們建議您使用 Database Mail。如需有關如何設定 Database Mail 的詳細資訊,請參閱<如何:建立 Database Mail 帳戶 (Transact-SQL)>。

  • 警示安全性:

    視需要評估原則時,這些原則就會在使用者的安全性內容中執行。若要寫入錯誤記錄檔,使用者必須擁有 ALTER TRACE 權限或屬於系統管理員 (sysadmin) 固定伺服器角色的成員。擁有較低權限之使用者所評估的原則不會寫入事件記錄檔,而且不會引發警示。

    自動執行模式會以系統管理員 (sysadmin) 角色成員的身分執行。這樣可讓原則寫入錯誤記錄檔並且引發警示。

安全性

管理原則式管理需要 msdb 資料庫中 PolicyAdministratorRole 角色的成員資格。這個角色對於系統上的所有原則擁有完整控制權。這個控制權包括建立和編輯原則與條件,以及啟用和停用原則。

安全性注意事項安全性注意事項

可能會提高認證:PolicyAdministratorRole 角色中的使用者可以建立伺服器觸發程序以及排程可能會影響 Database Engine 執行個體作業的原則執行。例如,PolicyAdministratorRole 可以建立防止在 Database Engine 中建立大部分物件的原則。由於可能會提高認證,因此 PolicyAdministratorRole 角色應該只授與可控制 Database Engine 組態的受信任使用者。

下面是適用的安全性原則:

  • 系統管理員或資料庫擁有者可以讓資料庫訂閱原則或原則群組。

  • PolicyAdministratorRole 角色的成員可以啟用或停用原則。

  • PolicyAdministratorRole 的成員可以建立他們沒有執行特定項目之權限的原則,但是當擁有足夠權限的其他使用者執行這些原則時,這些原則可能會成功。

    安全性注意事項安全性注意事項

    可能會提高認證:PolicyAdministratorRole 角色中的使用者可以建立包含使用 ExecuteSqlExecuteWql 函數之條件的原則。如果擁有系統管理員 (sysadmin) 權限的使用者之後執行此原則,原則管理員所提供的 Transact-SQL 就會使用執行此原則之使用者的系統管理員 (sysadmin) 權限執行。

  • 特定原則執行會在使用者的安全性內容中進行。

  • 如果是具有 [按排程時間] 評估模式的原則,請使用 sa 登入所擁有的 SQL Server Agent 作業。

使用以原則式管理的考量

請注意可能影響某些 SQL Server 功能之運作方式的原則。例如,異動資料擷取和交易式複寫都會使用沒有索引的 systranschemas 資料表。如果您啟用一個所有資料表都必須擁有索引的原則,則強制符合此原則將會造成這些功能失敗。