ポリシー ベースの管理を使用したサーバーの管理

ポリシー ベースの管理とは、1 つ以上の SQL Server 2008 インスタンスを管理するためのシステムのことです。SQL Server ポリシー管理者は、ポリシー ベースの管理を使用する際、SQL Server Management Studio を使用してサーバー上のエンティティ (SQL Server インスタンス、データベース、その他の SQL Server オブジェクトなど) を管理するためのポリシーを作成します。

ポリシー ベースの管理は 3 つの要素で構成されます。

  • ポリシー管理

    ポリシー管理者がポリシーを作成します。

  • 明示的な管理

    管理者が 1 つ以上の管理対象を選択し、対象が特定のポリシーに準拠しているかどうかを明示的に確認するか、対象をポリシーに明示的に準拠させます。

  • 評価モード

    実行モードには次の 4 種類があり、そのうち 3 つは自動化できます。

    • [要求時]: このモードでは、ユーザーが直接指定した場合にポリシーが評価されます。

    • [変更中 - 禁止]: この自動モードでは、DDL トリガを使用してポリシー違反が防止されます。

      重要な注意事項重要

      nested triggers サーバー構成オプションが無効になっている場合、[変更時: 回避] は正しく動作しません。ポリシー ベースの管理では、この評価モードを使用するポリシーに準拠しない DDL 操作の検出およびロールバックに DDL トリガが使用されます。ポリシー ベースの管理の DDL トリガを削除するか、nested triggers を無効にすると、この評価モードが失敗したり、予期しない動作をすることがあります。

    • [変更中 - ログのみ]: この自動モードでは、関連する変更が行われたときにイベント通知を使用してポリシーが評価されます。

    • [スケジュールで実行]: この自動モードでは、SQL Server エージェント ジョブを使用してポリシーが定期的に評価されます。

    自動ポリシーが有効になっていない場合、ポリシー ベースの管理はシステム パフォーマンスに影響しません。

ポリシー ベースの管理の用語と概念

  • ポリシー ベースの管理の管理対象
    ポリシー ベースの管理で管理する SQL Server データベース エンジン インスタンス、データベース、テーブル、インデックスなどのエンティティ。サーバー インスタンス内のすべての対象で、対象となる階層が構成されます。対象セットは、対象となる階層に一連の対象フィルタを適用した結果得られる一連の対象です (HumanResources スキーマが所有するデータベース内のすべてのテーブルなど)。

  • ポリシー ベースの管理ファセット
    特定の種類の管理対象の動作または特性をモデル化した一連の論理プロパティ。プロパティの数と特性がファセットに組み込まれ、その追加や削除はファセットの作成者のみが実行できます。1 種類の対象で 1 つ以上の管理ファセットを実装したり、1 種類以上の対象で 1 つの管理ファセットを実装したりすることができます。ファセットのプロパティの中には、特定のバージョンにしか適用できないものもあります。たとえば、セキュリティ構成ファセットの "データベース メール" プロパティは、SQL Server 2005 以降のバージョンにのみ適用されます。

  • ポリシー ベースの管理条件
    管理ファセットについて、ポリシー ベースの管理の管理対象の一連の許可状態を指定するブール式。

  • ポリシー ベースの管理ポリシー
    ポリシー ベースの管理条件と、評価モード、対象フィルタ、スケジュールなどの想定される動作。1 つのポリシーには 1 つの条件しか含めることができません。ポリシーは有効または無効にできます。

  • ポリシー ベースの管理のポリシー カテゴリ
    ポリシーの管理に役立つユーザー定義のカテゴリ。ユーザーは、ポリシーをさまざまなポリシー カテゴリに分類できます。ポリシーは 1 つのポリシー カテゴリだけに属します。ポリシー カテゴリはデータベースとサーバーに適用されます。データベース レベルでは、次の条件が適用されます。

    • データベース所有者は、データベースを一連のポリシー カテゴリにサブスクライブできます。

    • そのサブスクライブ先のカテゴリのポリシーのみがデータベースを制御できます。

    • データベースはすべて、既定のポリシー カテゴリに暗黙的にサブスクライブしています。

    サーバー レベルでは、すべてのデータベースにポリシー カテゴリを適用できます。

  • 有効なポリシー
    対象の有効なポリシーとは、この対象を制御するポリシーのことです。ポリシーは、次のすべての条件を満たす場合にのみ対象について有効になります。

    • ポリシーが有効になっている。

    • 対象がポリシーの対象セットに属している。

    • 対象または対象のいずれかの先祖がこのポリシーを含んでいるポリシー グループにサブスクライブしている。

ポリシー ベースの管理を使用して解決される問題の例

ポリシー ベースの管理は、次のシナリオに示すような問題の解決に役立ちます。

  • 会社のポリシーで、データベース メールまたは SQL Mail の有効化が禁止されています。これら 2 つの機能のサーバー状態を確認するポリシーが作成されます。管理者がサーバー状態をポリシーと比較します。サーバー状態が準拠していない場合、管理者が構成モードを選択すると、ポリシーによりサーバー状態が準拠するようになります。

  • AdventureWorks データベースに、すべてのストアド プロシージャが文字列 AW_ で始まることを必須とする名前付け規則があります。このポリシーを適用するポリシーが作成されます。管理者がこのポリシーをテストし、準拠していないストアド プロシージャの一覧を受け取ります。今後、ストアド プロシージャがこの名前付け規則に準拠しない場合、そのストアド プロシージャの作成ステートメントは失敗します。

使用できる評価モード

ポリシー評価モードは、ポリシーで使用されるポリシー ベースの管理ファセットの特性によって決まります。[要求時] および [スケジュールで実行] はすべてのファセットでサポートされます。ファセットの状態の変更をイベントでキャプチャできる場合は、[変更時: ログのみ] がファセットでサポートされます。ファセットの状態を変更する DDL ステートメントのトランザクション サポートがある場合は、[変更時: 回避] がファセットでサポートされます。これら 3 つの実行モードのいずれかで自動化されるポリシーは、有効または無効にできます。

SQL Server Management Studio の [ポリシーの評価] ダイアログ ボックスには、ポリシーを実行するときに使用できる次の 2 つのオプションがあります。

  • [評価]
    選択したターゲットに対してポリシーを評価します。

  • [適用]
    このオプションを使用すると、ポリシー違反に該当するターゲットに変更を適用できます。一部のターゲットは、ポリシー ベースの管理では再構成できません。たとえば、バックアップ ファイルとデータ ファイルが別々のデバイス上に存在しているかどうかを調べる場合、ポリシー ベースの管理では、この条件に対する違反を検出できますが、ポリシーに準拠させるために変更を適用することはできません。

ポリシー管理

ポリシーの作成と管理は、Management Studio を使用して行います。処理の手順は次のとおりです。

  1. 構成するプロパティを含むポリシー ベースの管理ファセットを選択します。

  2. 管理ファセットの状態を指定する条件を定義します。

  3. 条件、対象セットをフィルタ処理する追加条件、および評価モードを示すポリシーを定義します。

  4. SQL Server インスタンスがポリシーに準拠しているかどうかを確認します。

ポリシーに違反する場合は、オブジェクト エクスプローラで、対象およびオブジェクト エクスプローラ ツリーの上位にあるノードの横に、重大な状態の警告が赤いアイコンとして示されます。

ポリシーの格納

ポリシーは msdb データベースに格納されます。ポリシーまたは条件を変更した後、msdb をバックアップする必要があります。詳細については、「model データベースおよび msdb データベースのバックアップに関する注意点」を参照してください。

SQL Server 2008 には、SQL Server のインスタンスの監視に使用できるポリシーが用意されています。これらのポリシーは、データベース エンジンに既定でインストールされませんが、既定のインストール場所である C:\Program Files\Microsoft SQL Server\100\Tools\Policies\DatabaseEngine\1033 からインポートできます。詳細については、「ポリシー ベースの管理ポリシーをエクスポートおよびインポートする方法」を参照してください。

ポリシーを直接作成するには、[ファイル] メニューの [新規作成] を使用して、ポリシーをファイルに保存します。これにより、データベース エンジン インスタンスに接続していないときにポリシーを作成できます。

データベース エンジンの現在のインスタンスで評価されたポリシーのポリシー履歴は、msdb システム テーブルに格納されます。データベース エンジンのその他のインスタンスに適用されたポリシーまたは Reporting Services や Analysis Services に適用されたポリシーのポリシー履歴は保持されません。詳細については、「ポリシー ベースの管理ポリシーのトラブルシューティング」を参照してください。

ポリシー管理者にポリシー エラーを通知する警告の構成

ポリシー ベースの管理ポリシーが 3 つの自動評価モードのいずれかで実行された場合にポリシー違反が発生すると、メッセージがイベント ログに書き込まれます。このメッセージがイベント ログに書き込まれたときに通知を受けるには、メッセージを検出してアクションを実行する警告を作成します。警告は、次の表に示すようにメッセージを検出します。

実行モード

メッセージ番号

変更中 - 禁止

(自動の場合)

34050

変更中 - 禁止

(要求時に実行する場合)

34051

スケジュールで実行

34052

変更中

34053

ポリシー ベースの管理のエラー メッセージに対処するように警告を設定するには、次のトピックを参照してください。

警告に関するその他の注意点

警告に関するその他の注意点を次に示します。

  • 警告は、有効になっているポリシーに対してのみ発生します。[要求時] ポリシーは有効にできないので、要求時に実行されるポリシーに対して警告は発生しません。

  • 実行するアクションに電子メール メッセージの送信が含まれる場合は、メール アカウントを構成する必要があります。データベース メールを使用することをお勧めします。データベース メールをセットアップする方法の詳細については、「データベース メール アカウントを作成する方法 (Transact-SQL)」を参照してください。

  • 警告のセキュリティ :

    要求時に評価されるポリシーは、ユーザーのセキュリティ コンテキストで実行されます。エラー ログに書き込むには、ALTER TRACE 権限を持っているか、固定サーバー ロール sysadmin のメンバである必要があります。権限が不十分なユーザーがポリシーを評価した場合、イベント ログへの書き込みは行われず、警告は発生しません。

    自動実行モードは、sysadmin ロールのメンバとして実行されます。これにより、エラー ログへの書き込みと警告の生成が可能になります。

セキュリティ

ポリシー ベースの管理には、msdb データベースの PolicyAdministratorRole ロールのメンバシップが必要です。このロールは、システム上のすべてのポリシーを完全に制御できます。たとえば、ポリシーと条件の作成および編集や、ポリシーの有効化および無効化などを実行できます。

セキュリティに関する注意セキュリティに関する注意

資格情報が昇格される可能性について : PolicyAdministratorRole ロールに割り当てられているユーザーは、サーバー トリガを作成して、データベース エンジン インスタンスの動作に影響する可能性があるポリシーの実行をスケジュールできます。たとえば、PolicyAdministratorRole は、ほとんどのオブジェクトがデータベース エンジンで作成されないようにすることができるポリシーを作成できます。このように、資格情報が昇格される可能性があるので、PolicyAdministratorRole ロールは、データベース エンジンの構成の制御について信頼できるユーザーにのみ許可してください。

次のセキュリティ プリンシパルが適用されます。

  • システム管理者またはデータベース所有者は、データベースをポリシーまたはポリシー グループにサブスクライブできます。

  • PolicyAdministratorRole ロールのメンバは、ポリシーを有効または無効にすることができます。

  • PolicyAdministratorRole のメンバは、ポリシーを作成できます。このメンバにはポリシーをアドホック実行するための権限はありませんが、十分な権限を持つ他のユーザーが実行すると、ポリシーは正常に実行されます。

    セキュリティに関する注意セキュリティに関する注意

    資格情報が昇格される可能性について : PolicyAdministratorRole ロールに割り当てられているユーザーは、ExecuteSql 関数または ExecuteWql 関数を使用する条件を含むポリシーを作成できます。sysadmin 権限のあるユーザーが後からこのポリシーを実行した場合、ポリシー管理者から提供される Transact-SQL は、その Transact-SQL を実行しているユーザーの sysadmin 権限で実行されます。

  • ポリシーのアドホック実行は、ユーザーのセキュリティ コンテキストで実行されます。

  • 評価モードが [スケジュールで実行] のポリシーでは、sa ログインが所有する SQL Server エージェント ジョブが使用されます。

ポリシー ベースの管理の使用に関する注意点

ポリシーは、SQL Server の一部の機能の動作に影響を及ぼすことがあります。たとえば、変更データ キャプチャとトランザクション レプリケーションでは、インデックスがない systranschemas テーブルが使用されます。すべてのテーブルにインデックスが必要であるというポリシーを有効にして、このポリシーへの準拠を適用した場合、これらの機能が失敗します。