다음을 통해 공유


빠른 시작: Azure PowerShell을 사용하여 비준수 리소스를 식별하는 정책 할당 만들기

Azure의 규정 준수를 이해하는 첫 번째 단계는 리소스 상태를 식별하는 것입니다. 이 빠른 시작에서는 Azure PowerShell을 사용하여 비준수 리소스를 식별하는 정책 할당을 만듭니다. 정책은 리소스 그룹에 할당되고 관리 디스크를 사용하지 않는 가상 머신을 감사합니다. 정책 할당을 만든 후 비준수 가상 머신을 식별합니다.

명령줄 또는 스크립트에서 Azure 리소스를 관리하는 데 Azure PowerShell 모듈을 사용할 수 있습니다. 이 문서에서는 Azure PowerShell을 사용하여 정책 할당을 만드는 방법을 설명합니다.

기본 제공 정책 또는 이니셔티브 정의를 할당할 때 버전을 참조하는 것은 선택 사항입니다. 기본 제공 정의의 정책 할당은 기본적으로 최신 버전으로 지정되며 별도로 지정하지 않는 한 자동으로 부 버전 변경 내용을 상속합니다.

필수 조건

  • Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
  • Azure PowerShell.
  • Visual Studio Code
  • Microsoft.PolicyInsights는 Azure 구독에 등록되어야 합니다. 리소스 공급자를 등록하려면 리소스 공급자를 등록할 수 있는 권한이 있어야 합니다. 해당 권한은 기여자 및 소유자 역할에 포함되어 있습니다.
  • 관리 디스크를 사용하지 않는 가상 머신이 하나 이상 포함된 리소스 그룹입니다.

Azure에 연결

Visual Studio Code 터미널 세션에서 Azure에 연결합니다. 구독이 두 개 이상인 경우 명령을 실행하여 구독에 대한 컨텍스트를 설정합니다. <subscriptionID> 를 Azure 구독 ID로 바꿉니다.

Connect-AzAccount

# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>

리소스 공급자 등록

리소스 공급자가 등록되면 Azure 구독에서 사용할 수 있습니다.

Microsoft.PolicyInsights가 등록되었는지 확인하려면 Get-AzResourceProvider를 실행합니다. 리소스 공급자에는 여러 리소스 종류가 포함됩니다. 결과가 NotRegistered이면 Register-AzResourceProvider를 실행합니다.

 Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
   Select-Object -Property ResourceTypes, RegistrationState

Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'

자세한 내용은 Get-AzResourceProviderRegister-AzResourceProvider에서 확인하세요.

정책 할당 만들기

리소스 그룹에 대해 새 정책 할당을 만들려면 다음 명령을 사용합니다. 이 예제에서는 관리 디스크가 없는 가상 머신을 포함하는 기존 리소스 그룹을 사용합니다. 리소스 그룹은 정책 할당의 범위입니다. 이 예제에서는 기본 제공된 관리 디스크를 사용하지 않는 VM 감사 정책 정의를 사용합니다.

다음 명령을 실행하고 <resourceGroupName>을 리소스 그룹 이름으로 바꿉니다.

$rg = Get-AzResourceGroup -Name '<resourceGroupName>'

$definition = Get-AzPolicyDefinition |
  Where-Object { $_.DisplayName -eq 'Audit VMs that do not use managed disks' }

$rg 변수는 리소스 그룹에 대한 속성을 저장하고 $definition 변수는 정책 정의의 속성을 저장합니다. 속성은 후속 명령에 사용됩니다.

다음 명령을 실행하여 정책 할당을 만듭니다.

$policyparms = @{
Name = 'audit-vm-managed-disks'
DisplayName = 'Audit VM managed disks'
Scope = $rg.ResourceId
PolicyDefinition = $definition
Description = 'Az PowerShell policy assignment to resource group'
}

New-AzPolicyAssignment @policyparms

$policyparms 변수는 스플래팅을 사용하여 매개 변수 값을 만들고 가독성을 향상합니다. New-AzPolicyAssignment 명령은 $policyparms 변수에서 정의된 매개 변수 값을 사용합니다.

  • Name은 할당 ResourceId에 사용되는 정책 할당 이름을 만듭니다.
  • DisplayName은 정책 할당의 이름이며 Azure Portal에 표시됩니다.
  • Scope$rg.ResourceId 속성을 사용하여 리소스 그룹에 정책을 할당합니다.
  • PolicyDefinition$definition 변수에 저장된 정책 정의를 할당합니다.
  • Description은 정책 할당에 대한 컨텍스트를 추가하는 데 사용할 수 있습니다.

정책 할당의 결과는 다음 예제와 유사합니다.

Name               : audit-vm-managed-disks
ResourceId         : /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
ResourceName       : audit-vm-managed-disks
ResourceGroupName  : {resourceGroupName}
ResourceType       : Microsoft.Authorization/policyAssignments
SubscriptionId     : {subscriptionId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
Properties         : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.Policy.PsPolicyAssignmentProperties

자세한 내용은 New-AzPolicyAssignment에서 확인하세요.

정책 할당 정보를 다시 표시하려면 다음 명령을 실행합니다.

Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId

비규격 리소스 식별

새 정책 할당에 대한 준수 상태가 활성화되고 정책 상태에 대한 결과를 제공하는 데 몇 분 정도 걸립니다.

만든 정책 할당을 준수하지 않는 리소스를 식별하기 위해 다음 명령을 사용합니다.

$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}

Get-AzPolicyState @complianceparms

$complianceparms 변수는 스플래팅을 사용하여 Get-AzPolicyState 명령에 사용되는 매개 변수 값을 만듭니다.

  • ResourceGroupName$rg.ResourceGroupName 속성에서 리소스 그룹 이름을 가져옵니다.
  • PolicyAssignmentName은 정책 할당을 만들 때 사용된 이름을 지정합니다.
  • Filter는 식을 사용하여 정책 할당을 준수하지 않는 리소스를 찾습니다.

결과는 다음 예시와 유사하며 ComplianceStateNonCompliant를 보여 줍니다.

Timestamp                : 2/14/2024 18:25:37
ResourceId               : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmId}
PolicyAssignmentId       : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks
PolicyDefinitionId       : /providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d
IsCompliant              : False
SubscriptionId           : {subscriptionId}
ResourceType             : Microsoft.Compute/virtualMachines
ResourceLocation         : {location}
ResourceGroup            : {resourceGroupName}
ResourceTags             : tbd
PolicyAssignmentName     : audit-vm-managed-disks
PolicyAssignmentOwner    : tbd
PolicyAssignmentScope    : /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
PolicyDefinitionName     : 06a78e20-9358-41c9-923c-fb736d382a4d
PolicyDefinitionAction   : audit
PolicyDefinitionCategory : tbd
ManagementGroupIds       : {managementGroupId}
ComplianceState          : NonCompliant
AdditionalProperties     : {[complianceReasonCode, ]}

자세한 내용은 Get-AzPolicyState에서 확인하세요.

리소스 정리

정책 할당을 제거하려면 다음 명령을 실행합니다.

Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId

Azure PowerShell 세션에서 로그아웃하려면 다음을 수행합니다.

Disconnect-AzAccount

다음 단계

이 빠른 시작에서는 Azure 환경에서 규정 비준수 리소스를 식별하는 정책 정의를 할당했습니다.

리소스 준수의 유효성을 검사하는 정책을 할당하는 방법에 대해 자세히 알아보려면 자습서를 계속 진행합니다.