Hızlı Başlangıç: REST API ile uyumlu olmayan kaynakları tanımlamak için 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, REST API 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.

Bu kılavuzda, bir ilke ataması oluşturmak ve Azure ortamınızdaki uyumlu olmayan kaynakları tanımlamak için REST API kullanılır. Bu makaledeki örneklerde PowerShell ve Azure CLI az rest komutları kullanılır. Komutları Git Bash gibi bir Bash kabuğundan da çalıştırabilirsiniz az rest .

Önkoşullar

  • Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
  • PowerShell'in en son sürümü veya Git Bash gibi bir Bash kabuğu.
  • Azure CLI'nın en son sürümü.
  • Visual Studio Code.
  • Yönetilen diskleri kullanmayan en az bir sanal makineye sahip bir kaynak grubu.

REST API söz dizimini gözden geçirin

REST API komutlarını çalıştırmak için iki öğe vardır: REST API URI'si ve istek gövdesi. Bilgi için İlke Atamaları - Oluştur'a gidin.

Aşağıdaki örnekte, ilke tanımı oluşturmak için REST API URI söz dizimi gösterilmektedir.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
  • scope: Kapsam, ilke atamasının hangi kaynaklara veya kaynak grubuna uygulandığını belirler. Bir yönetim grubundan tek bir kaynağa kadar değişebilir. değerini aşağıdaki desenlerden biriyle değiştirin {scope} :
    • Yönetim grubu: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • Abonelik: /subscriptions/{subscriptionId}
    • Kaynak grubu: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Kaynak: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • policyAssignmentName: Atamanız için ilke atama adını oluşturur. Ad, ilke atamasının policyAssignmentId özelliğine eklenir.

Aşağıdaki örnek, bir istek gövdesi dosyası oluşturmak için JSON'dır.

{
  "properties": {
    "displayName": "",
    "description": "",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
    "nonComplianceMessages": [
      {
        "message": ""
      }
    ]
  }
}
  • displayName: İlke ataması için görünen ad.
  • description: İlke ataması hakkında bağlam eklemek için kullanılabilir.
  • policyDefinitionId: Atamanın oluşturulacağı ilke tanımı kimliği.
  • nonComplianceMessages: Bir kaynak uyumsuz olarak değerlendirildiğinde kullanılacak iletiyi ayarlayın. Daha fazla bilgi için bkz . Uyumsuzluk iletilerini atama.

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.

az login

# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>

Örneklerde Azure CLI az rest komutları kullanıldığından PowerShell kullanıyor olsanız bile kullanınaz login.

İlke ataması oluşturma

Bu örnekte bir ilke ataması oluşturacak ve Yönetilen diskler kullanmayan VM'leri denetle tanımını atamış olacaksınız.

Atamayı oluşturmak için bir istek gövdesi gerekir. Aşağıdaki JSON dosyasını request-body.json adlı bir dosyaya kaydedin.

{
  "properties": {
    "displayName": "Audit VM managed disks",
    "description": "Policy assignment to resource group scope created with REST API",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
    "nonComplianceMessages": [
      {
        "message": "Virtual machines should use managed disks"
      }
    ]
  }
}

İlke atamanızı mevcut bir kaynak grubu kapsamında oluşturmak için, istek gövdesi için bir dosya ile aşağıdaki REST API URI'sini kullanın. ve {resourceGroupName} değerlerini değerlerinizle değiştirin{subscriptionId}. komutu kabuğunuzda JSON çıkışını görüntüler.

az rest --method put --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01 --body `@request-body.json

PowerShell'de, bir dosya adı belirtmek için () dosyasından at sign kaçmak için backtick (`@) gereklidir. Git Bash gibi bir Bash kabuğunda backtick'i atla.

Bilgi için İlke Atamaları - Oluştur'a gidin.

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. Bu ilke ataması için uyumlu olmayan kaynakları görüntülemek için REST API kullanırsınız ve çıktı JSON'dadır.

Uyumlu olmayan kaynakları tanımlamak için aşağıdaki komutu çalıştırın. ve {resourceGroupName} değerlerini ilke atamasını oluştururken kullandığınız değerlerle değiştirin{subscriptionId}.

az rest --method post --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01 --uri-parameters `$filter="complianceState eq 'NonCompliant' and PolicyAssignmentName eq 'audit-vm-managed-disks'"

İlke filter atamasıyla oluşturduğunuz audit-vm-managed-disks adlı ilke tanımıyla uyumlu olmadığı değerlendirilen kaynaklar için sorgular . Yine filtredeki dolar işaretinden ($) kaçmak için backtick'in kullanıldığına dikkat edin. Bash istemcisi için ters eğik çizgi (\), yaygın bir kaçış karakteridir.

Sonuçlarınız aşağıdaki örneğe benzer:

{
  "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
  "@odata.count": 1,
  "@odata.nextLink": null,
  "value": [
    {
      "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
      "@odata.id": null,
      "complianceReasonCode": "",
      "complianceState": "NonCompliant",
      "effectiveParameters": "",
      "isCompliant": false,
      "managementGroupIds": "",
      "policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks",
      "policyAssignmentName": "audit-vm-managed-disks",
      "policyAssignmentOwner": "tbd",
      "policyAssignmentParameters": "",
      "policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
      "policyAssignmentVersion": "",
      "policyDefinitionAction": "audit",
      "policyDefinitionCategory": "tbd",
      "policyDefinitionGroupNames": [
        ""
      ],
      "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionName": "06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionReferenceId": "",
      "policyDefinitionVersion": "1.0.0",
      "policySetDefinitionCategory": "",
      "policySetDefinitionId": "",
      "policySetDefinitionName": "",
      "policySetDefinitionOwner": "",
      "policySetDefinitionParameters": "",
      "policySetDefinitionVersion": "",
      "resourceGroup": "{resourceGroupName}",
      "resourceId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmName}>",
      "resourceLocation": "westus3",
      "resourceTags": "tbd",
      "resourceType": "Microsoft.Compute/virtualMachines",
      "subscriptionId": "{subscriptionId}",
      "timestamp": "2024-03-26T02:19:28.3720191Z"
    }
  ]
}

Daha fazla bilgi için İlke Durumları - Kaynak Grubu için Sorgu Sonuçlarını Listeleme bölümüne gidin.

Kaynakları temizleme

İlke atamasını kaldırmak için aşağıdaki komutu kullanın. ve {resourceGroupName} değerlerini ilke atamasını oluştururken kullandığınız değerlerle değiştirin{subscriptionId}. komutu kabuğunuzda JSON çıkışını görüntüler.

az rest --method delete --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01

İlke atamasının silindiğini aşağıdaki komutla doğrulayabilirsiniz. Kabuğunuzda bir ileti görüntülenir.

az rest --method get --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01
The policy assignment 'audit-vm-managed-disks' is not found.

Daha fazla bilgi için İlke Atamaları - Silme ve İlke Atamaları - Alma bölümüne gidin.

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.