Azure Monitor에 대한 기본 제공 정책
이 문서의 내용
정책 및 정책 이니셔티브는 Azure Monitor에 대한 진단 설정을 통해 대규모 로깅을 사용하도록 설정하는 간단한 방법을 제공합니다. 정책 이니셔티브를 사용하여 Azure 환경에서 지원되는 모든 리소스 에 대해 감사 로깅을 켤 수 있습니다.
리소스에서 발생하는 작업 및 이벤트를 추적하고 발생하는 변경 내용에 대한 표시 형식과 인사이트를 제공하려면 리소스 로그를 사용하도록 설정합니다.
리소스 로그를 사용하도록 설정하고 필요에 따라 대상으로 보내는 정책을 할당합니다. 타사 SIEM 시스템의 이벤트 허브에 로그를 보내 연속 보안 작업을 사용하도록 설정합니다. 장기 스토리지 또는 규정 준수 이행을 위해 스토리지 계정에 로그를 보냅니다.
리소스 로그를 Log Analytics 작업 영역, 이벤트 허브 및 스토리지 계정으로 보내는 기본 제공 정책 및 이니셔티브 집합이 있습니다. 정책은 감사 로깅을 사용하도록 설정하고 감사 로그 범주 그룹에 속한 로그를 이벤트 허브, Log Analytics 작업 영역 또는 스토리지 계정으로 보냅니다. 정책 effect
은(는) DeployIfNotExists
이며, 다른 설정이 정의되지 않은 경우 정책을 기본값으로 배포합니다.
정책을 배포합니다.
포털, CLI, PowerShell 또는 Azure 리소스 관리 템플릿을 사용하여 정책 및 이니셔티브 배포
다음 단계에서는 정책을 적용하여 키 자격 증명 모음에 대한 감사 로그를 로그 분석 작업 영역으로 보내는 방법을 보여 줍니다.
정책 페이지에서 정의 를 선택합니다.
범위를 선택합니다. 전체 구독, 리소스 그룹 또는 개별 리소스에 정책을 적용할 수 있습니다.
정의 유형 드롭다운에서 정책 을 선택합니다.
범주 드롭다운에서 모니터링 선택
‘검색’ 필드에 keyvault 를 입력합니다.
키 자격 증명 모음(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>
예를 들어 Log Analytics 작업 영역에 감사 로그를 보내는 정책을 적용하려면
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 정책 할당 을 참조하세요.
PowerShell을 사용하여 정책을 적용하려면 다음 명령을 사용하세요.
환경을 설정합니다.
구독을 선택하고 리소스 그룹을 설정합니다.
Select-AzSubscription <subscriptionID>
$rg = Get-AzResourceGroup -Name <resource groups name>
정책 정의를 가져와서 정책에 대한 매개 변수를 구성합니다. 아래 예제에서는 Log Analytics 작업 영역에 keyVault 로그를 보내는 정책을 할당합니다.
$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 진단 설정에는 다음 세 가지 이니셔티브가 있습니다.
이 예제에서는 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 작업 영역 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
일반 매개 변수
다음 표에서는 각 정책 집합에 대한 일반적인 매개 변수에 대해 설명합니다.
매개 변수
설명
유효한 값
기본값
effect
정책 실행 사용 또는 사용 안 함
DeployIfNotExists, AuditIfNotExists, 사용 안 함
DeployIfNotExists
diagnosticSettingName
진단 설정 이름
setByPolicy-LogAnalytics
categoryGroup
진단 범주 그룹
없음, 감사, allLogs
감사
정책별 매개 변수
Log Analytics 정책 매개 변수
이 정책은 범주 그룹을 사용하여 로그를 Log Analytics 작업 영역으로 라우팅하는 진단 설정을 배포합니다.
매개 변수
설명
유효한 값
기본값
resourceLocationList
근처 Log Analytics에 로그를 보낼 리소스 위치 목록입니다. "*"는 모든 위치를 선택합니다.
지원되는 위치
*
logAnalytics
Log Analytics 작업 영역
Event Hubs 정책 매개 변수
이 정책은 범주 그룹을 사용하여 진단 설정을 배포하여 로그를 이벤트 허브로 라우팅합니다.
매개 변수
설명
유효한 값
기본값
resourceLocation
리소스 위치는 이벤트 허브 네임스페이스와 동일한 위치여야 합니다.
지원되는 위치
eventHubAuthorizationRuleId
이벤트 허브 권한 부여 규칙 ID입니다. 권한 부여 규칙은 이벤트 허브 네임스페이스 수준에 있습니다. 예: /subscriptions/{subscription ID}/resourceGroups/{resource group}/providers/Microsoft.EventHub/namespaces/{Event Hub namespace}/authorizationrules/{authorization rule}
eventHubName
이벤트 허브 이름
모니터링
스토리지 계정 정책 매개 변수
이 정책은 범주 그룹을 사용하여 진단 설정을 배포하여 로그를 스토리지 계정으로 라우팅합니다.
매개 변수
설명
유효한 값
기본값
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
다음 단계