Mulai Cepat: Membuat penugasan kebijakan untuk mengidentifikasi sumber daya yang tidak patuh dengan menggunakan file Bicep
Dalam mulai cepat ini, Anda menggunakan file Bicep untuk membuat penetapan kebijakan yang memvalidasi kepatuhan sumber daya dengan kebijakan Azure. 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.
Bicep adalah bahasa pemrogram khusus domain (DSL) yang menggunakan sintaks deklaratif untuk menyebarkan sumber daya Azure. Bicep menyediakan sintaks ringkas, keamanan jenis yang andal, dan dukungan untuk penggunaan kembali kode. Bicep menawarkan pengalaman penulisan terbaik untuk solusi infrastructure-as-code di Azure.
Saat menetapkan definisi kebijakan atau inisiatif bawaan, opsional untuk mereferensikan versi. Penetapan kebijakan definisi bawaan default ke versi terbaru dan secara otomatis mewarisi perubahan versi minor kecuali ditentukan lain.
Prasyarat
- Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
- Bicep.
- Azure PowerShell atau Azure CLI.
- Visual Studio Code dan ekstensi Bicep untuk 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.
Tinjau file Bicep
File Bicep membuat penetapan kebijakan untuk cakupan grup sumber daya dan menetapkan definisi kebijakan bawaan Audit VM yang tidak menggunakan disk terkelola.
Buat file Bicep berikut sebagai policy-assignment.bicep.
- Buka Visual Studio Code dan pilih File> Teks Baru.
- Salin dan tempel file Bicep ke Visual Studio Code.
- Pilih Simpan File>dan gunakan nama file policy-assignment.bicep.
param policyAssignmentName string = 'audit-vm-managed-disks'
param policyDefinitionID string = '/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d'
param policyDisplayName string = 'Audit VM managed disks'
resource assignment 'Microsoft.Authorization/policyAssignments@2023-04-01' = {
name: policyAssignmentName
scope: resourceGroup()
properties: {
policyDefinitionId: policyDefinitionID
description: 'Policy assignment to resource group scope created with Bicep file'
displayName: policyDisplayName
nonComplianceMessages: [
{
message: 'Virtual machines should use managed disks'
}
]
}
}
output assignmentId string = assignment.id
Jenis sumber daya yang ditentukan dalam file Bicep adalah Microsoft.Authorization/policyAssignments.
File Bicep menggunakan tiga parameter untuk menyebarkan penetapan kebijakan:
policyAssignmentName
membuat penetapan kebijakan bernama audit-vm-managed-disks.policyDefinitionID
menggunakan ID definisi kebijakan bawaan. Sebagai referensi, perintah untuk mendapatkan ID ada di bagian untuk menyebarkan templat.policyDisplayName
membuat nama tampilan yang terlihat di portal Azure.
Untuk informasi selengkapnya tentang file Bicep:
- Untuk menemukan lebih banyak sampel Bicep, buka Menelusuri sampel kode.
- Untuk mempelajari selengkapnya tentang referensi templat untuk penyebaran, buka referensi templat Azure.
- Untuk mempelajari cara mengembangkan file Bicep, buka dokumentasi Bicep.
- Untuk mempelajari tentang penyebaran tingkat langganan, buka Penyebaran langganan dengan file Bicep.
Menerapkan file Bicep
Anda dapat menyebarkan file Bicep dengan Azure PowerShell atau Azure CLI.
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>
Anda dapat memverifikasi apakah Microsoft.PolicyInsights
terdaftar. Jika tidak, Anda dapat menjalankan perintah untuk mendaftarkan penyedia sumber daya.
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Untuk informasi selengkapnya, buka Get-AzResourceProvider dan Register-AzResourceProvider.
Perintah berikut menampilkan policyDefinitionID
nilai parameter:
(Get-AzPolicyDefinition |
Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId
Perintah berikut menyebarkan definisi kebijakan ke grup sumber daya Anda. Ganti <resourceGroupName>
dengan nama grup sumber daya Anda:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.bicep'
}
New-AzResourceGroupDeployment @deployparms
Variabel $rg
menyimpan properti untuk grup sumber daya. Variabel $deployparms
menggunakan splatting untuk membuat nilai parameter dan meningkatkan keterbacaan. New-AzResourceGroupDeployment
Perintah menggunakan nilai parameter yang ditentukan dalam $deployparms
variabel.
Name
adalah nama penyebaran yang ditampilkan dalam output dan di Azure untuk penyebaran grup sumber daya.ResourceGroupName
$rg.ResourceGroupName
menggunakan properti untuk mendapatkan nama grup sumber daya Anda tempat kebijakan ditetapkan.TemplateFile
menentukan nama dan lokasi file Bicep di komputer lokal Anda.
Anda dapat memverifikasi penyebaran penetapan kebijakan dengan perintah berikut:
Perintah menggunakan $rg.ResourceId
properti untuk mendapatkan ID grup sumber daya.
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
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 Get-AzPolicyAssignment.
Mengidentifikasi sumber daya yang tidak sesuai
Setelah penetapan kebijakan disebarkan, komputer virtual yang disebarkan ke grup sumber daya diaudit untuk kepatuhan dengan kebijakan disk terkelola.
Status kepatuhan untuk penetapan kebijakan baru membutuhkan waktu beberapa menit untuk menjadi aktif dan memberikan hasil tentang status kebijakan.
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
Variabel $complianceparms
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/20/2024 18:55:45
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
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.