次の方法で共有


カスタム Azure ポリシーを使用して大規模な診断設定を作成する

ポリシーとポリシー イニシアチブは、Azure Monitor の 診断設定 を使用して大規模なログ記録を有効にする簡単な方法を提供します。 この記事では、組み込みのポリシーがない Azure リソースのカスタム ポリシーを作成する方法について説明します。 組み込みのポリシーを持つ Azure リソースの診断設定をより簡単に作成するには、組み込みの Azure ポリシーを使用して大規模な診断設定を作成する方法に関するページを参照してください。

ログ カテゴリ グループ化

ログ カテゴリ グループは、同様の種類のログをまとめてグループ化します。 カテゴリ グループを使用すると、1 つのコマンドで複数のログを簡単に参照できます。 すべてのログを含む allLogs カテゴリ グループが存在します。 さらに、すべての監査ログを含む audit カテゴリ グループもあります。 カテゴリ グループを使用すると、新しいログ カテゴリがグループに追加されると動的に更新されるポリシーを定義できます。

カスタム ポリシー定義

組み込みポリシーがないリソースの種類の場合、カスタム ポリシー定義を作成する必要があります。 既存の組み込みポリシーをコピーし、リソースの種類に合わせて変更することによって、Azure portal で手動で新規ポリシーを作成できます。 あるいは、PowerShell ギャラリーにあるスクリプトを使用して、プログラムによってポリシーを作成します。

Create-AzDiagPolicy スクリプトを使用すると、PowerShell または Azure CLI を使用してインストールできる特定のリソースの種類用ポリシー ファイルを作成できます。 診断設定のカスタム ポリシー定義を作成するには、次の手順を使用します。

  1. Azure PowerShell がインストールされていることを確認します。

  2. 次のコマンドを使用してスクリプトをインストールします。

    Install-Script -Name Create-AzDiagPolicy
    
  3. ログの送信先を指定するパラメーターを使用してスクリプトを実行します。 プロンプトで、サブスクリプションとリソースの種類を指定します。

    たとえば、Log Analytics ワークスペースとイベント ハブにログを送信するポリシー定義を作成するには、次のコマンドを使用します。

    Create-AzDiagPolicy.ps1 -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
    

    または、コマンドでサブスクリプションとリソースの種類を指定することもできます。 たとえば、SQL Server データベースの Log Analytics ワークスペースとイベント ハブにログを送信するポリシー定義を作成するには、次のコマンドを使用します。

    Create-AzDiagPolicy.ps1 -SubscriptionID <subscription id> -ResourceType Microsoft.Sql/servers/databases -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
    
  4. このスクリプトによって、ポリシー定義ごとに個別のフォルダーが作成されます。 各フォルダーには、azurepolicy.jsonazurepolicy.rules.jsonazurepolicy.parameters.json という名前の 3 つのファイルが含まれます。 Azure portal でポリシーを手動で作成する場合は、azurepolicy.json にはポリシー定義全体が含まれているため、その内容をコピーして貼り付けることができます。 PowerShell または Azure CLI で他の 2 つのファイルを使用して、コマンド ラインからポリシー定義を作成します。

    次の例は、PowerShell と Azure CLI の両方からポリシー定義をインストールする方法を示しています。 各例には、組み込みポリシー定義を使用して新しいポリシー定義をグループ化するために、監視カテゴリを指定するメタデータが含まれています。

    New-AzPolicyDefinition -name "Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace" -policy .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json -parameter .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json -mode All -Metadata '{"category":"Monitoring"}'
    
    az policy definition create --name 'deploy-diag-setting-sql-database--workspace' --display-name 'Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace'  --rules 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json' --params 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json' --subscription 'AzureMonitor_Docs' --mode All
    

イニシアチブ

一般的な戦略では、ポリシー定義ごとに割り当てを作成する代わりに、各 Azure サービスの診断設定を作成するためのポリシー定義を含むイニシアティブを作成します。 お使いの環境の管理方法に応じて、イニシアティブと管理グループ、サブスクリプション、またはリソース グループ間の割り当てを作成します。 この戦略には次の利点があります。

  • リソースの種類ごとに複数の割り当てを作成する代わりに、イニシアティブに対して単一の割り当てを作成します。 同じイニシアティブを複数の監視グループ、サブスクリプション、またはリソース グループに使用します。
  • 新しいリソースの種類または送信先を追加する必要が生じたら、イニシアティブを変更します。 たとえば、最初の要件では、データを Log Analytics ワークスペースのみに送信する必要があったが、後でイベント ハブを追加する必要が生じた場合などです。 新しい割り当てを作成するのではなく、イニシアティブを変更します。

イニシアティブの作成の詳細については、「イニシアティブ定義の作成と割り当て」を参照してください。 次の推奨事項を検討してください。

  • [カテゴリ][監視] に設定して、関連する組み込みおよびカスタムのポリシー定義を使用してグループ化します。
  • イニシアティブに含まれるポリシー定義の Log Analytics ワークスペースとイベント ハブの詳細を指定する代わりに、共通のイニシアティブ パラメーターを使用します。 このパラメーターを使用すると、すべてのポリシー定義に共通の値を簡単に指定し、必要に応じてその値を変更することができます。

イニシアティブ定義の設定を示すスクリーンショット。

割り当て

監視対象のリソースのスコープに応じて、イニシアティブを Azure 管理グループ、サブスクリプション、またはリソース グループに割り当てます。 管理グループは、特に組織に複数のサブスクリプションがある場合に、ポリシーのスコープ設定に役立ちます。

Azure portal 内の [Diagnostic settings to Log Analytics workspace]\(Log Analytics ワークスペースに対する診断設定\) の [イニシアティブの割り当て] セクションにある [基本] タブの設定のスクリーンショット。

イニシアティブ パラメーターを使用すると、イニシアティブ内のすべてのポリシー定義に対して 1 回でワークスペースまたはその他の詳細を指定することができます。

[パラメーター] タブのイニシアティブ パラメーターを示すスクリーンショット。

修復

イニシアティブは、各仮想マシンの作成時に適用されます。 修復タスクでは、イニシアティブ内のポリシー定義が既存のリソースにデプロイされるため、既に作成されているすべてのリソースの診断設定を作成できます。

Azure portal を使用して割り当てを作成するときに、修復タスクを同時に作成することができます。 修復の詳細については、「Azure Policy を使って準拠していないリソースを修復する」を参照してください。

Log Analytics ワークスペースのイニシアティブの修復を示すスクリーンショット。

次のステップ