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.
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.
- Azure PowerShell.
- Visual Studio Code.
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.
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 NotRegistered
Register-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 { $_.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 atamaResourceId
adı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.