Azure Monitor 用の組み込みポリシー
- [アーティクル]
-
-
ポリシーとポリシー イニシアチブにより、Azure Monitor の診断設定を使用して大規模なログ記録を有効にする簡単な方法が提供されます。 ポリシー イニシアチブを使用すると、Azure 環境内のサポートされているすべてのリソースの監査ログを有効にすることができます。
リソース ログを有効にして、リソースで発生するアクティビティとイベントを追跡し、発生した変更を可視化し、分析情報を入手します。
ポリシーを割り当ててリソース ログを有効にし、必要に応じた宛先に送信します。 サードパーティの SIEM システム用にイベント ハブにログを送信し、継続的なセキュリティ オペレーションを可能にします。 長期的なストレージまたは規制コンプライアンスの達成のために、ログをストレージ アカウントに送信します。
リソース ログを Log Analytics ワークスペース、Event Hubs、ストレージ アカウントに転送するための一連の組み込みポリシーとイニシアティブが存在します。 ポリシーにより監査ログが有効になり、監査ログ カテゴリ グループに属するログがイベント ハブ、Log Analytics ワークスペース、またはストレージ アカウントに送信されます。 ポリシーの effect
は DeployIfNotExists
です。これは、他の設定が定義されていない場合に、ポリシーを既定としてデプロイします。
ポリシーのデプロイ
ポータル、CLI、PowerShell、または Azure Resource Management テンプレートを使用してポリシーとイニシアティブをデプロイします
次の手順では、キー コンテナーの監査ログを Log Analytics ワークスペースに送信するポリシーを適用する方法を示します。
[ポリシー] ページで、[定義] を選択します。
スコープを選択します。 ポリシーは、サブスクリプション全体、リソース グループ、または個々のリソースに対して適用できます。
[定義の種類] ドロップダウンから [ポリシー] を選択します。
[カテゴリ] ドロップダウンから [監視] を選択します。
[検索] フィールドに「keyvault」と入力します。
[Enable logging by category group for Key vaults (microsoft.keyvault/vaults) to Log Analytics] (キー コンテナー (microsoft.keyvault/vaults) から Log Analytics へのカテゴリ グループ別ログ記録を有効にする) ポリシーを選択します。
ポリシー定義ページで、[割り当て] を選択します
[パラメーター] タブをクリックします。
監査ログの送信先とする Log Analytics ワークスペースを選択します。
[修復] タブを選択します。
[修復] タブで、[修復するポリシー] ドロップダウンから keyvault ポリシーを選択します。
[マネージド ID を作成します] チェックボックスをオンにします。
[マネージド ID の種類] で、[システム割り当てマネージド ID] を選択します。
[確認および作成] を選択し、[作成] を選択します。
CLI を使用してポリシーを適用するには、次のコマンドを使用します。
az policy assignment create
を使用してポリシー割り当てを作成します。
az policy assignment create --name <policy assignment name> --policy "6b359d8f-f88d-4052-aa7c-32015963ecc1" --scope <scope> --params "{\"logAnalytics\": {\"value\": \"<log analytics workspace resource ID"}}" --mi-system-assigned --location <location>
たとえば、ログ分析ワークスペースに監査ログを送信するポリシーを適用します
az policy assignment create --name "policy-assignment-1" --policy "6b359d8f-f88d-4052-aa7c-32015963ecc1" --scope /subscriptions/12345678-aaaa-bbbb-cccc-1234567890ab/resourceGroups/rg-001 --params "{\"logAnalytics\": {\"value\": \"/subscriptions/12345678-aaaa-bbbb-cccc-1234567890ab/resourcegroups/rg-001/providers/microsoft.operationalinsights/workspaces/workspace-001\"}}" --mi-system-assigned --location eastus
ポリシー割り当て用に作成された ID に必要なロールを割り当てます。
roleDefinitionIds を検索して、ポリシー定義でロールを見つけます
...},
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293"
],
"deployment": {
"properties": {...
az policy assignment identity assign
を使用して、必要なロールを割り当てます。
az policy assignment identity assign --system-assigned --resource-group <resource group name> --role <role name or ID> --identity-scope </scope> --name <policy assignment name>
たとえば、次のように入力します。
az policy assignment identity assign --system-assigned --resource-group rg-001 --role 92aaf0da-9dab-42b6-94a3-d43ce8d16293 --identity-scope /subscriptions/12345678-aaaa-bbbb-cccc-1234567890ab/resourceGroups/rg001 --name policy-assignment-1
az policy state trigger-scan
を使用して、既存のリソースを検索するスキャンをトリガーします。
az policy state trigger-scan --resource-group rg-001
az policy remediation create
を使用して、既存のリソースにポリシーを適用する修復タスクを作成します。
az policy remediation create -g <resource group name> --policy-assignment <policy assignment name> --name <remediation name>
たとえば、次のように入力します。
az policy remediation create -g rg-001 -n remediation-001 --policy-assignment policy-assignment-1
CLI を使用したポリシーの割り当ての詳細については、「Azure CLI リファレンス - az policy assignment」を参照してください。
PowerShell を使用してポリシーを適用するには、次のコマンドを使用します。
環境を設定します。
サブスクリプションを選択し、リソース グループを設定します
Select-AzSubscription <subscriptionID>
$rg = Get-AzResourceGroup -Name <resource groups name>
ポリシー定義を取得し、ポリシーのパラメーターを構成します。 下の例では、keyVault ログを Log Analytics ワークスペースに送信するポリシーを割り当てます
$definition = Get-AzPolicyDefinition |Where-Object Name -eq 6b359d8f-f88d-4052-aa7c-32015963ecc1
$params = @{"logAnalytics"="/subscriptions/<subscriptionID/resourcegroups/<resourcgroup>/providers/microsoft.operationalinsights/workspaces/<log anlaytics workspace name>"}
ポリシーを割り当てる
$policyAssignment=New-AzPolicyAssignment -Name <assignment name> -DisplayName "assignment display name" -Scope $rg.ResourceId -PolicyDefinition $definition -PolicyparameterObject $params -IdentityType 'SystemAssigned' -Location <location>
#To get your assignemnt use:
$policyAssignment=Get-AzPolicyAssignment -Name '<assignment name>' -Scope '/subscriptions/<subscriptionID>/resourcegroups/<resource group name>'
必要なロールをシステム割り当てマネージド ID に割り当てます
$principalID=$policyAssignment.Identity.PrincipalId
$roleDefinitionIds=$definition.Properties.policyRule.then.details.roleDefinitionIds
$roleDefinitionIds | ForEach-Object {
$roleDefId = $_.Split("/") | Select-Object -Last 1
New-AzRoleAssignment -Scope $rg.ResourceId -ObjectId $policyAssignment.Identity.PrincipalId -RoleDefinitionId $roleDefId
}
コンプライアンスをスキャンしてから、既存のリソースのコンプライアンスを強制する修復タスクを作成します。
Start-AzPolicyComplianceScan -ResourceGroupName $rg.ResourceGroupName
Start-AzPolicyRemediation -Name $policyAssignment.Name -PolicyAssignmentId $policyAssignment.PolicyAssignmentId -ResourceGroupName $rg.ResourceGroupName
ポリシー準拠状況の確認
Get-AzPolicyState -PolicyAssignmentName $policyAssignment.Name -ResourceGroupName $policyAssignment.ResourceGroupName|select-object IsCompliant , ResourceID
約 30 分後にリソースの診断設定にポリシーが表示されます。
新しいリソースの作成時に、それらにポリシーが適用されます。 既存のリソースにポリシーを適用するには、修復タスクを作成します。 修復タスクにより、リソースがポリシーに準拠します。
修復タスクは、特定のポリシーに対して機能します。 複数のポリシーを含むイニシアティブの場合は、コンプライアンスに準拠させる必要があるリソースがあるイニシアティブ内のポリシーごとに修復タスクを作成します。
最初にポリシーを割り当てるときに修復タスクを定義するか、割り当て後の任意の段階で修復タスクを定義します。
ポリシーの割り当て中にポリシーの修復タスクを作成するには、[ポリシーの割り当て] ページの [修復] タブを選択し、[修復タスクの作成] チェックボックスをオンにします。
ポリシーが割り当てられた後に修復タスクを作成するには、[ポリシーの割り当て] ページの一覧から、割り当て済みのポリシーを選択します。
[修復] を選択します。
ポリシーの修復ページの [修復タスク] タブで、修復タスクの状態を追跡します。
修復タスクの詳細については、「準拠していないリソースを修復する」を参照してください。
イニシアティブを割り当てる
イニシアチブはポリシーのコレクションです。 Azure Monitor の診断設定には、次の 3 つのイニシアチブがあります。
この例では、Log Analytics ワークスペースに監査ログを送信するためのイニシアティブを割り当てます。
ポリシーの [定義] ページで、スコープを選択します。
[定義の種類] ドロップダウンで [イニシアティブ] を選択します。
[カテゴリ] ドロップダウンで [監視] を選択します。
[検索] フィールドに「audit」と入力します。
[サポートされているリソース用の監査カテゴリ グループ リソースの Log Analytics へのログ記録を有効にする] イニシアティブを選択します。
次のページで、[割り当て] を選択します。
[イニシアティブの割り当て] ページの [基本] タブで、イニシアティブを適用するスコープを選択します。
[割り当て名] フィールドに名前を入力します。
[パラメーター] タブを選択します。
[パラメーター] には、ポリシーで定義されているパラメーターが含まれています。 この場合は、ログを送信する Log Analytics ワークスペースを選択する必要があります。 各ポリシーの個々のパラメーターの詳細については、「ポリシー固有のパラメーター」を参照してください。
監査ログを送信する Log Analytics ワークスペースを選択します。
[確認と作成]、[作成] の順に選択します。
ポリシーまたはイニシアティブの割り当てが機能していることを確認するには、ポリシー割り当てで定義したサブスクリプションまたはリソース グループ スコープにリソースを作成します。
10 分後に、リソースの [診断設定] ページを選択します。
既定の名前 setByPolicy-LogAnalytics と、ポリシーで構成したワークスペース名を含む診断設定が一覧に表示されます。
[イニシアティブの割り当て] またはポリシー ページの [パラメーター] タブで、[入力またはレビューが必要なパラメーターのみを表示する] チェックボックスをオフにして、既定の名前を変更します。
環境変数を設定します
# Set up your environment variables.
$subscriptionId = <your subscription ID>;
$rg = Get-AzResourceGroup -Name <your resource group name>;
Select-AzSubscription $subscriptionId;
$logAnlayticsWorskspaceId=</subscriptions/$subscriptionId/resourcegroups/$rg.ResourceGroupName/providers/microsoft.operationalinsights/workspaces/<your log analytics workspace>;
イニシアティブ定義を取得します。 この例では、イニシアティブ "サポートされているリソース用の監査カテゴリ グループ リソースの Log Analytics へのログ記録を有効にする"、ResourceID "/providers/Microsoft.Authorization/policySetDefinitions/f5b29bc4-feca-4cc6-a58a-772dd5e290a5" を使用します
$definition = Get-AzPolicySetDefinition |Where-Object ResourceID -eq /providers/Microsoft.Authorization/policySetDefinitions/f5b29bc4-feca-4cc6-a58a-772dd5e290a5;
割り当て名を設定し、パラメーターを構成します。 このイニシアチブの場合、パラメーターには Log Analytics ワークスペース ID が含まれます。
$assignmentName=<your assignment name>;
$params = @{"logAnalytics"="/subscriptions/$subscriptionId/resourcegroups/$($rg.ResourceGroupName)/providers/microsoft.operationalinsights/workspaces/<your log analytics workspace>"}
パラメーターを使用してイニシアティブを割り当てます
$policyAssignment=New-AzPolicyAssignment -Name $assignmentName -Scope $rg.ResourceId -PolicySetDefinition $definition -PolicyparameterObject $params -IdentityType 'SystemAssigned' -Location eastus;
Contributor
のロールをシステム割り当てマネージド ID に割り当てます。 その他のイニシアティブについては、必要なロールを確認してください。
New-AzRoleAssignment -Scope $rg.ResourceId -ObjectId $policyAssignment.Identity.PrincipalId -RoleDefinitionName Contributor;
ポリシー コンプライアンスをスキャンします。 Start-AzPolicyComplianceScan
コマンドが返されるまで数分かかります
Start-AzPolicyComplianceScan -ResourceGroupName $rg.ResourceGroupName;
Get-AzPolicyState
を呼び出して、修復するリソースと必要なパラメーターの一覧を取得します
$assignmentState=Get-AzPolicyState -PolicyAssignmentName $assignmentName -ResourceGroupName $rg.ResourceGroupName;
$policyAssignmentId=$assignmentState.PolicyAssignmentId[0];
$policyDefinitionReferenceIds=$assignmentState.PolicyDefinitionReferenceId;
非準拠のリソースがあるリソースの種類ごとに、修復タスクを開始します。
$policyDefinitionReferenceIds | ForEach-Object {
$referenceId = $_
Start-AzPolicyRemediation -ResourceGroupName $rg.ResourceGroupName -PolicyAssignmentId $policyAssignmentId -PolicyDefinitionReferenceId $referenceId -Name "$($rg.ResourceGroupName) remediation $referenceId";
}
修復タスクが完了したら、コンプライアンスの状態を確認します。
Get-AzPolicyState -PolicyAssignmentName $assignmentName -ResourceGroupName $rg.ResourceGroupName|select-object IsCompliant , ResourceID
ポリシー割り当ての詳細は、次のコマンドを使用して取得できます。
$policyAssignment=Get-AzPolicyAssignment -Name $assignmentName -Scope "/subscriptions/$subscriptionId/resourcegroups/$($rg.ResourceGroupName)";
az login
コマンドを使用して Azure アカウントにサインインします。
az account set
コマンドを使用して、ポリシー イニシアチブを適用するサブスクリプションを選択します。
az policy assignment create
を使用してイニシアティブを割り当てます。
az policy assignment create --name <assignment name> --resource-group <resource group name> --policy-set-definition <initiative name> --params <parameters object> --mi-system-assigned --location <location>
次に例を示します。
az policy assignment create --name "assign-cli-example-01" --resource-group "cli-example-01" --policy-set-definition 'f5b29bc4-feca-4cc6-a58a-772dd5e290a5' --params '{"logAnalytics":{"value":"/subscriptions/12345678-aaaa-bbbb-cccc-1234567890ab/resourcegroups/cli-example-01/providers/microsoft.operationalinsights/workspaces/cli-example-01-ws"}, "diagnosticSettingName":{"value":"AssignedBy-cli-example-01"}}' --mi-system-assigned --location eastus
システム マネージド ID に必要なロールを割り当てます
roleDefinitionIds の定義を検索して、イニシアティブ内のポリシー定義で割り当てるロールを見つけます。次に例を示します。
...},
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293"
],
"deployment": {
"properties": {...
az policy assignment identity assign
を使用して、必要なロールを割り当てます。
az policy assignment identity assign --system-assigned --resource-group <resource group name> --role <role name or ID> --identity-scope <scope> --name <policy assignment name>
次に例を示します。
az policy assignment identity assign --system-assigned --resource-group "cli-example-01" --role 92aaf0da-9dab-42b6-94a3-d43ce8d16293 --identity-scope "/subscriptions/12345678-aaaa-bbbb-cccc-1234567890ab/resourcegroups/cli-example-01" --name assign-cli-example-01
イニシアティブ内のポリシーの修復タスクを作成します。
修復タスクはポリシーごとに作成されます。 各タスクは、イニシアティブで policyDefinitionReferenceId
として指定された特定の definition-reference-id
に対するものです。 definition-reference-id
パラメーターを見つけるには、次のコマンドを使用します。
az policy set-definition show --name f5b29bc4-feca-4cc6-a58a-772dd5e290a5 |grep policyDefinitionReferenceId
az policy remediation create
を使用してリソースを修復します
az policy remediation create --resource-group <resource group name> --policy-assignment <assignment name> --name <remediation task name> --definition-reference-id "policy specific reference ID" --resource-discovery-mode ReEvaluateCompliance
例:
az policy remediation create --resource-group "cli-example-01" --policy-assignment assign-cli-example-01 --name "rem-assign-cli-example-01" --definition-reference-id "keyvault-vaults" --resource-discovery-mode ReEvaluateCompliance
イニシアティブ内のすべてのポリシーの修復タスクを作成するには、次の例を使用します。
for policyDefinitionReferenceId in $(az policy set-definition show --name f5b29bc4-feca-4cc6-a58a-772dd5e290a5 |grep policyDefinitionReferenceId |cut -d":" -f2|sed s/\"//g)
do
az policy remediation create --resource-group "cli-example-01" --policy-assignment assign-cli-example-01 --name remediate-$policyDefinitionReferenceId --definition-reference-id $policyDefinitionReferenceId;
done
共通パラメーター
次の表では、ポリシーの各セットの共通パラメーターについて説明します。
パラメーター |
説明 |
有効な値 |
Default |
効果 |
ポリシーの実行を有効または無効にします |
DeployIfNotExists、 AuditIfNotExists、 無効 |
DeployIfNotExists |
diagnosticSettingName |
診断設定の名前 |
|
setByPolicy-LogAnalytics |
categoryGroup |
診断カテゴリ グループ |
none、 audit、 allLogs |
監査 |
ポリシー固有のパラメーター
Log Analytics ポリシーのパラメーター
このポリシーでは、カテゴリ グループを使用して診断設定をデプロイし、ログを Log Analytics ワークスペースにルーティングします。
パラメーター |
説明 |
有効な値 |
Default |
resourceLocationList |
近くの Log Analytics にログを送信するリソースの場所リスト。 "*" は、すべての場所を選択します |
サポートされる場所 |
* |
logAnalytics |
Log Analytics ワークスペース |
|
|
イベント ハブ ポリシーのパラメーター
このポリシーでは、カテゴリ グループを使用して診断設定をデプロイし、ログをイベント ハブにルーティングします。
パラメーター |
説明 |
有効な値 |
Default |
resourceLocation |
リソースの場所は、イベント ハブの名前空間と同じ場所である必要があります |
サポートされる場所 |
|
eventHubAuthorizationRuleId |
イベント ハブの認可規則 ID。 承認規則は、イベント ハブの名前空間レベルです。 例: /subscriptions/{サブスクリプション ID}/resourceGroups/{リソース グループ}/providers/Microsoft.EventHub/namespaces/{イベント ハブ名前空間}/authorizationrules/{承認規則} |
|
|
eventHubName |
イベント ハブ名 |
|
監視 |
ストレージ アカウント ポリシーのパラメーター
このポリシーでは、カテゴリ グループを使用して診断設定をデプロイし、ログをストレージ アカウントにルーティングします。
パラメーター |
説明 |
有効な値 |
Default |
resourceLocation |
リソースの場所は、ストレージ アカウントと同じ場所にある必要があります |
サポートされる場所 |
|
storageAccount |
ストレージ アカウントの resourceId |
|
|
サポートされているリソース
Log Analytics ワークスペース、Event Hubs、ストレージ アカウント用の組み込み監査ログ ポリシーは、次のリソースに対して存在します。
- microsoft.agfoodplatform/farmbeats
- microsoft.apimanagement/service
- microsoft.appconfiguration/configurationstores
- microsoft.attestation/attestationproviders
- microsoft.automation/automationaccounts
- microsoft.avs/privateclouds
- microsoft.cache/redis
- microsoft.cdn/profiles
- microsoft.cognitiveservices/accounts
- microsoft.containerregistry/registries
- microsoft.devices/iothubs
- microsoft.eventgrid/topics
- microsoft.eventgrid/domains
- microsoft.eventgrid/partnernamespaces
- microsoft.eventhub/namespaces
- microsoft.keyvault/vaults
- microsoft.keyvault/managedhsms
- microsoft.machinelearningservices/workspaces
- microsoft.media/mediaservices
- microsoft.media/videoanalyzers
- microsoft.netapp/netappaccounts/capacitypools/volumes
- microsoft.network/publicipaddresses
- microsoft.network/virtualnetworkgateways
- microsoft.network/p2svpngateways
- microsoft.network/frontdoors
- microsoft.network/bastionhosts
- microsoft.operationalinsights/workspaces
- microsoft.purview/accounts
- microsoft.servicebus/namespaces
- microsoft.signalrservice/signalr
- microsoft.signalrservice/webpubsub
- microsoft.sql/servers/databases
- microsoft.sql/managedinstances
次の手順