Hızlı Başlangıç: Azure PowerShell kullanarak uyumlu olmayan kaynakları tanımlamak için bir ilke ataması oluşturma

Azure’da uyumluluğu anlamanın ilk adımı, kaynaklarınızın durumunu belirlemektir. Bu hızlı başlangıçta, Azure PowerShell kullanarak uyumlu olmayan kaynakları tanımlamak için bir ilke ataması oluşturacaksı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.

Azure PowerShell modülleri, Azure kaynaklarını komut satırından veya betiklerde yönetmek için kullanılabilir. Bu makalede, ilke ataması oluşturmak için Azure PowerShell'in nasıl kullanılacağı açıklanmaktadır.

Önkoşullar

  • Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
  • Azure PowerShell.
  • Visual Studio Code.
  • Microsoft.PolicyInsightsAzure 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.

Azure'a bağlanma

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>

Kaynak sağlayıcısını kaydetme

Bir kaynak sağlayıcısı kaydedildiğinde Azure aboneliğinizde kullanılabilir.

Kayıtlı olup olmadığını Microsoft.PolicyInsights doğrulamak için komutunu çalıştırın Get-AzResourceProvider. Kaynak sağlayıcısı birkaç kaynak türü içerir. Sonuç çalıştırılırsa NotRegisteredRegister-AzResourceProvider:

 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.

İlke ataması oluştur

Kaynak grubunuz için yeni bir ilke ataması oluşturmak için aşağıdaki komutları kullanın. Bu örnekte, yönetilen diskleri olmayan bir sanal makine içeren mevcut bir kaynak grubu kullanılmaktadır. Kaynak grubu, ilke atamasının kapsamıdır. Bu örnek, yönetilen disk kullanmayan VM'leri denetle yerleşik ilke tanımını kullanır.

Aşağıdaki komutları çalıştırın ve öğesini kaynak grubu adınızla değiştirin <resourceGroupName> :

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

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

değişkeni $rg kaynak grubunun özelliklerini, değişken ise $definition ilke tanımının özelliklerini depolar. Özellikler sonraki komutlarda kullanılır.

İlke atamasını oluşturmak için aşağıdaki komutu çalıştırın:

$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

değişken, $policyparms parametre değerleri oluşturmak ve okunabilirliği geliştirmek için splatting kullanır. New-AzPolicyAssignment komutu değişkeninde $policyparms tanımlanan parametre değerlerini kullanır.

  • Name , atamada kullanılan ilke atama ResourceIdadını oluşturur.
  • DisplayName , ilke atamasının adıdır ve Azure portalında görünür.
  • Scope , ilkeyi $rg.ResourceId kaynak grubuna atamak için özelliğini kullanır.
  • PolicyDefinition değişkeninde $definition depolanan ilke tanımını atar.
  • Description ilke ataması hakkında bağlam eklemek için kullanılabilir.

İlke atamasının sonuçları aşağıdaki örneğe benzer:

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 New-AzPolicyAssignment sayfasına gidin.

İlke atama bilgilerini yeniden görüntülemek istiyorsanız aşağıdaki komutu çalıştırın:

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

Uyumlu olmayan kaynakları belirleme

Yeni ilke atamasının uyumluluk durumunun etkinleşmesi ve ilkenin durumuyla ilgili sonuçlar sağlaması birkaç dakika sürer.

Oluşturduğunuz ilke atamasıyla uyumlu olmayan kaynakları belirlemek için aşağıdaki komutu kullanın:

$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şturmak için splatting kullanır.

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

Daha fazla bilgi için Get-AzPolicyState sayfasına gidin.

Kaynakları temizleme

İlke atamasını kaldırmak için aşağıdaki komutu çalıştırın:

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.