適用於 Azure 監視器的內建原則
原則和原則計劃提供簡單的方法,可透過 Azure 監視器的診斷設定大規模啟用記錄。 您可以使用原則計劃,針對 Azure 環境中所有支援的資源開啟稽核記錄。
啟用資源記錄以追蹤在資源上發生的活動與事件,並讓您查看和深入解析已發生的任何變更。
指派原則以啟用資源記錄,並根據需求將其傳送至目的地。 將記錄傳送至第三方 SIEM 系統的事件中樞,以實現持續的安全性作業。 將記錄傳送至儲存體帳戶以進行長期儲存或履行法規合規性。
有一組內建原則和計劃可用來將資源記錄導向 Log Analytics 工作區、事件中樞和儲存體帳戶。 這些原則會啟用稽核記錄,將屬於稽核記錄類別群組的記錄傳送至事件中樞、Log Analytics 工作區或儲存體帳戶。 這些原則 effect
是 DeployIfNotExists
,如果未定義其他設定,則會將原則部署為預設值。
部署原則。
使用入口網站、CLI、PowerShell 或 Azure 資源管理範本來部署原則和計劃
下列步驟示範如何套用原則,以將金鑰保存庫的稽核記錄傳送至記錄分析工作區。
從 [原則] 頁面中,選取 [定義 ]。
選取範圍。 您可以將原則套用至整個訂用帳戶、資源群組,或個別的資源。
從 [定義類型] 下拉式清單中,選取 [原則]。
從 [類別] 下拉式清單中選取 [監視]
在 [搜尋] 欄位中輸入 keyvault。
選取 [依類別群組 (microsoft.keyvault/vaults) 針對金鑰保存庫啟用目的地為 Log Analytics 的記錄] 原則,
從原則定義頁面時,選取 [指派]
選取參數索引標籤。
選取要將稽核記錄傳送至其中的 Log Analytics 工作區。
選取 [補救] 索引標籤。
在 [補救] 索引標籤上,從 [補救原則] 下拉式清單中選取 keyvault 原則。
選取 [建立受控識別] 核取方塊。
在 [受控識別類型] 下,選取 [系統指派的受控識別]。
選取 [檢閱 + 建立],然後選取 [建立]。
若要使用 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
將必要的角色指派給為原則指派所建立的身分識別。
搜尋 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 原則指派
若要使用 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>'
將所需的一或多個角色指派給系統指派的受控識別
$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 監視器診斷設定有三個計劃:
在此範例中,我們會指派將稽核記錄傳送至 Log Analytics 工作區的計劃。
從原則 [定義] 頁面中,選取範圍。
從 [定義類型] 下拉式清單中,選取 [計劃]。
從 [類別] 下拉式清單中選取 [監視]。
在 [搜尋] 欄位中輸入 [稽核]。
選取 [針對支援的資源啟用目的地為 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 工作區識別碼。
$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
角色指派給系統指派的受控識別。 針對其他計劃,請確認需要哪些角色。
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
將所需角色指派給系統受控識別
藉由搜尋 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
Common parameters
下表描述每組原則的共同參數。
參數 |
描述 |
有效的值 |
預設 |
效果 |
啟用或停用原則的執行 |
DeployIfNotExists、 AuditIfNotExists、 停用 |
DeployIfNotExists |
diagnosticSettingName |
診斷設定名稱 |
|
setByPolicy-LogAnalytics |
categoryGroup |
診斷類別群組 |
無、 稽核、 allLogs |
稽核 |
原則特有的參數
Log Analytics 原則參數
此原則會使用類別群組部署診斷設定,以將記錄路由傳送至 Log Analytics 工作區。
參數 |
描述 |
有效的值 |
預設 |
resourceLocationList |
將記錄傳送至鄰近 Log Analytics 的資源位置清單。 "*" 選取所有位置 |
支援的位置 |
* |
logAnalytics |
Log Analytics 工作區 |
|
|
事件中樞原則參數
此原則會使用類別群組部署診斷設定,以將記錄路由傳送至事件中樞。
參數 |
描述 |
有效的值 |
預設 |
resourceLocation |
資源位置必須與事件中樞命名空間位於相同的位置 |
支援的位置 |
|
eventHubAuthorizationRuleId |
事件中樞授權規則識別碼。 授權規則位於事件中樞命名空間層級。 例如,/subscriptions/{subscription ID}/resourceGroups/{resource group}/providers/Microsoft.EventHub/namespaces/{Event Hub namespace}/authorizationrules/{authorization rule} |
|
|
eventHubName |
事件中樞名稱 |
|
監視 |
儲存體帳戶原則參數
此原則會使用類別群組部署診斷設定,以將記錄路由傳送至儲存體帳戶。
參數 |
描述 |
有效的值 |
預設 |
resourceLocation |
資源位置必須與儲存體帳戶位於相同位置 |
支援的位置 |
|
storageAccount |
儲存體帳戶資源識別碼 |
|
|
支援的資源
下列資源有 Log Analytics 工作區、事件中樞和儲存體帳戶的內建稽核記錄原則:
- 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
後續步驟