Hızlı Başlangıç: Bicep dosyası kullanarak uyumlu olmayan kaynakları tanımlamak için ilke ataması oluşturma
Bu hızlı başlangıçta, kaynağın Azure ilkesiyle uyumluluğunu doğrulayan bir ilke ataması oluşturmak için bicep dosyası kullanacaksınız. İlke bir kaynak grubuna atanır ve yönetilen disk kullanmayan sanal makineleri denetler. İlke atamasını oluşturduktan sonra uyumlu olmayan sanal makineleri tanımlarsınız.
Bicep, Azure kaynaklarını dağıtmak için bildirim temelli söz dizimi kullanan, etki alanına özgü bir dildir (DSL). Kısa sözdizimi, güvenilir tür güvenliği ve kod yeniden kullanımı için destek sağlar. Bicep, Azure'daki kod olarak altyapı çözümleriniz için en iyi yazma deneyimini sunar.
Yerleşik bir ilke veya girişim tanımı atarken, bir sürüme başvurmak isteğe bağlıdır. Yerleşik tanımların ilke atamaları varsayılan olarak en son sürüme ayarlı ve aksi belirtilmedikçe ikincil sürüm değişikliklerini otomatik olarak devralır.
Önkoşullar
- Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
- Bicep.
- Azure PowerShell veya Azure CLI.
- Visual Studio Code ve Visual Studio Code için Bicep uzantısı.
Microsoft.PolicyInsights
Azure aboneliğinize kayıtlı olmalıdır. Bir kaynak sağlayıcısını kaydetmek için kaynak sağlayıcılarını kaydetme izniniz olmalıdır. Bu izin Katkıda Bulunan ve Sahip rollerine dahil edilir.- Yönetilen diskleri kullanmayan en az bir sanal makineye sahip bir kaynak grubu.
Bicep dosyasını gözden geçirme
Bicep dosyası, kaynak grubu kapsamı için bir ilke ataması oluşturur ve yönetilen disk kullanmayan VM'leri denetle yerleşik ilke tanımını atar.
Aşağıdaki Bicep dosyasını policy-assignment.bicep olarak oluşturun.
- Visual Studio Code'ı açın ve Dosya>Yeni Metin Dosyası'na tıklayın.
- Bicep dosyasını kopyalayıp Visual Studio Code'a yapıştırın.
- Dosya>Kaydet'i seçin ve policy-assignment.bicep dosya adını kullanın.
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
Bicep dosyasında tanımlanan kaynak türü Microsoft.Authorization/policyAssignments'tır.
Bicep dosyası, ilke atamasını dağıtmak için üç parametre kullanır:
policyAssignmentName
audit-vm-managed-disks adlı ilke atamasını oluşturur.policyDefinitionID
yerleşik ilke tanımının kimliğini kullanır. Başvuru için, kimliği alma komutları şablonu dağıtma bölümünde yer alır.policyDisplayName
Azure portalında görünen bir görünen ad oluşturur.
Bicep dosyaları hakkında daha fazla bilgi için:
- Daha fazla Bicep örneği bulmak için Kod örneklerine göz atma bölümüne gidin.
- Dağıtımlara yönelik şablon başvuruları hakkında daha fazla bilgi edinmek için Azure şablon başvurusu'na gidin.
- Bicep dosyalarını geliştirmeyi öğrenmek için Bicep belgelerine gidin.
- Abonelik düzeyinde dağıtımlar hakkında bilgi edinmek için Bicep dosyalarıyla abonelik dağıtımları bölümüne gidin.
Bicep dosyasını dağıtma
Bicep dosyasını Azure PowerShell veya Azure CLI ile dağıtabilirsiniz.
Visual Studio Code terminal oturumundan Azure'a bağlanın. Birden fazla aboneliğiniz varsa, aboneliğinize bağlam ayarlamak için komutları çalıştırın. <subscriptionID>
öğesini Azure abonelik kimliğinizle değiştirin.
Connect-AzAccount
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
Kayıtlı olup olmadığını Microsoft.PolicyInsights
doğrulayabilirsiniz. Değilse, kaynak sağlayıcısını kaydetmek için bir komut çalıştırabilirsiniz.
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Daha fazla bilgi için Get-AzResourceProvider ve Register-AzResourceProvider'a gidin.
Aşağıdaki komutlar parametrenin policyDefinitionID
değerini görüntüler:
(Get-AzPolicyDefinition |
Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId
Aşağıdaki komutlar, ilke tanımını kaynak grubunuz için dağıtır. değerini kaynak grubu adınızla değiştirin <resourceGroupName>
:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.bicep'
}
New-AzResourceGroupDeployment @deployparms
değişkeni, $rg
kaynak grubunun özelliklerini depolar. değişken, $deployparms
parametre değerleri oluşturmak ve okunabilirliği geliştirmek için splatting kullanır. New-AzResourceGroupDeployment
komutu değişkeninde $deployparms
tanımlanan parametre değerlerini kullanır.
Name
, kaynak grubunun dağıtımları için çıktıda ve Azure'da görüntülenen dağıtım adıdır.ResourceGroupName
, ilkenin$rg.ResourceGroupName
atandığı kaynak grubunuzun adını almak için özelliğini kullanır.TemplateFile
, Yerel bilgisayarınızdaki Bicep dosyasının adını ve konumunu belirtir.
İlke atamasının dağıtımını aşağıdaki komutla doğrulayabilirsiniz:
komutu, kaynak grubunun kimliğini almak için özelliğini kullanır $rg.ResourceId
.
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
Daha fazla bilgi için Get-AzPolicyAssignment sayfasına gidin.
Uyumlu olmayan kaynakları belirleme
İlke ataması dağıtıldıktan sonra, kaynak grubuna dağıtılan sanal makineler yönetilen disk ilkesiyle uyumluluk açısından denetlener.
Yeni ilke atamasının uyumluluk durumunun etkinleşmesi ve ilkenin durumuyla ilgili sonuçlar sağlaması birkaç dakika sürer.
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
değişkeni, $complianceparms
komutunda Get-AzPolicyState
kullanılan parametre değerlerini oluşturur.
ResourceGroupName
özelliğinden$rg.ResourceGroupName
kaynak grubu adını alır.PolicyAssignmentName
, ilke ataması oluşturulurken kullanılan adı belirtir.Filter
, ilke atamasıyla uyumlu olmayan kaynakları bulmak için bir ifade kullanır.
Sonuçlarınız aşağıdaki örneğe benzer ve ComplianceState
şunu gösterir 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, ]}
Daha fazla bilgi için Get-AzPolicyState sayfasına gidin.
Kaynakları temizleme
Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Azure PowerShell oturumunuzun oturumunu kapatmak için:
Disconnect-AzAccount
Sonraki adımlar
Bu hızlı başlangıçta, Azure ortamınızda uyumlu olmayan kaynakları belirlemek üzere bir ilke tanımı atadınız.
Kaynak uyumluluğunu doğrulayan ilkeler atama hakkında daha fazla bilgi edinmek için öğreticiye geçin.