Mulai Cepat: Membuat penugasan kebijakan untuk mengidentifikasi sumber daya yang tidak sesuai dengan Azure PowerShell

Langkah pertama dalam memahami kepatuhan di Azure adalah dengan mengidentifikasi status sumber daya Anda. Dalam mulai cepat ini, Anda membuat penetapan kebijakan untuk mengidentifikasi sumber daya yang tidak sesuai menggunakan Azure PowerShell. Kebijakan ini ditetapkan ke grup sumber daya dan mengaudit komputer virtual yang tidak menggunakan disk terkelola. Setelah membuat penetapan kebijakan, Anda mengidentifikasi komputer virtual yang tidak patuh.

Modul Azure PowerShell dapat digunakan untuk mengelola sumber daya Azure dari baris perintah atau dalam skrip. Artikel ini menjelaskan cara menggunakan Azure PowerShell untuk membuat penetapan kebijakan.

Prasyarat

  • Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
  • Azure PowerShell.
  • Visual Studio Code.
  • Microsoft.PolicyInsights harus terdaftar di langganan Azure Anda. Untuk mendaftarkan penyedia sumber daya, Anda harus memiliki izin untuk mendaftarkan penyedia sumber daya. Izin tersebut disertakan dalam peran Kontributor dan Pemilik.
  • Grup sumber daya dengan setidaknya satu komputer virtual yang tidak menggunakan disk terkelola.

Hubungkan ke Azure

Dari sesi terminal Visual Studio Code, sambungkan ke Azure. Jika Anda memiliki lebih dari satu langganan, jalankan perintah untuk mengatur konteks ke langganan Anda. Ganti <subscriptionID> dengan ID langganan Azure Anda.

Connect-AzAccount

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

Mendaftarkan penyedia sumber daya

Saat penyedia sumber daya terdaftar, penyedia sumber daya tersedia untuk digunakan dalam langganan Azure Anda.

Untuk memverifikasi apakah Microsoft.PolicyInsights terdaftar, jalankan Get-AzResourceProvider. Penyedia sumber daya berisi beberapa jenis sumber daya. Jika hasilnya NotRegistered dijalankan Register-AzResourceProvider:

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

Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'

Untuk informasi selengkapnya, buka Get-AzResourceProvider dan Register-AzResourceProvider.

Buat penetapan kebijakan

Gunakan perintah berikut untuk membuat penetapan kebijakan baru untuk grup sumber daya Anda. Contoh ini menggunakan grup sumber daya yang ada yang berisi komputer virtual tanpa disk terkelola. Grup sumber daya adalah cakupan untuk penetapan kebijakan. Contoh ini menggunakan definisi kebijakan bawaan Audit VM yang tidak menggunakan disk terkelola.

Jalankan perintah berikut dan ganti <resourceGroupName> dengan nama grup sumber daya Anda:

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

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

Variabel $rg menyimpan properti untuk grup sumber daya dan $definition variabel menyimpan properti definisi kebijakan. Properti digunakan dalam perintah berikutnya.

Jalankan perintah berikut untuk membuat penetapan kebijakan:

$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

Variabel $policyparms menggunakan splatting untuk membuat nilai parameter dan meningkatkan keterbacaan. New-AzPolicyAssignment Perintah menggunakan nilai parameter yang ditentukan dalam $policyparms variabel.

  • Name membuat nama penetapan kebijakan yang digunakan dalam tugas ResourceId.
  • DisplayNameadalah nama untuk penetapan kebijakan dan terlihat dalam portal Azure.
  • Scope$rg.ResourceId menggunakan properti untuk menetapkan kebijakan ke grup sumber daya.
  • PolicyDefinition menetapkan definisi kebijakan yang disimpan dalam $definition variabel.
  • Description dapat digunakan untuk menambahkan konteks tentang penetapan kebijakan.

Hasil penetapan kebijakan menyerupai contoh berikut:

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

Untuk informasi selengkapnya, buka New-AzPolicyAssignment.

Jika Anda ingin memutar ulang informasi penetapan kebijakan, jalankan perintah berikut:

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

Mengidentifikasi sumber daya yang tidak sesuai

Status kepatuhan untuk penetapan kebijakan baru membutuhkan waktu beberapa menit untuk menjadi aktif dan memberikan hasil tentang status kebijakan.

Gunakan perintah berikut untuk mengidentifikasi sumber daya yang tidak sesuai dengan penetapan kebijakan yang Anda buat:

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

Get-AzPolicyState @complianceparms

Variabel $complianceparms menggunakan splatting untuk membuat nilai parameter yang Get-AzPolicyState digunakan dalam perintah .

  • ResourceGroupName mendapatkan nama grup sumber daya dari $rg.ResourceGroupName properti .
  • PolicyAssignmentName menentukan nama yang digunakan saat penetapan kebijakan dibuat.
  • Filter menggunakan ekspresi untuk menemukan sumber daya yang tidak sesuai dengan penetapan kebijakan.

Hasil Anda menyerupai contoh berikut dan ComplianceState menunjukkan NonCompliant:

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, ]}

Untuk informasi selengkapnya, buka Get-AzPolicyState.

Membersihkan sumber daya

Untuk menghapus penetapan kebijakan, jalankan perintah berikut:

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

Untuk keluar dari sesi Azure PowerShell Anda:

Disconnect-AzAccount

Langkah berikutnya

Dalam mulai cepat ini, Anda telah menetapkan definisi kebijakan untuk mengidentifikasi sumber daya yang tidak sesuai di lingkungan Azure Anda.

Untuk mempelajari selengkapnya tentang cara menetapkan kebijakan yang memvalidasi kepatuhan sumber daya, lanjutkan ke tutorial.