Mulai Cepat: Membuat penugasan kebijakan untuk mengidentifikasi sumber daya yang tidak sesuai dengan REST API

Langkah pertama dalam memahami kepatuhan di Azure adalah dengan mengidentifikasi status sumber daya Anda. Dalam mulai cepat ini, Anda membuat penetapan kebijakan untuk mengidentifikasi sumber daya yang tidak sesuai menggunakan REST API. 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.

Panduan ini menggunakan REST API untuk membuat penugasan kebijakan dan mengidentifikasi sumber daya yang tidak sesuai di lingkungan Azure Anda. Contoh dalam artikel ini menggunakan PowerShell dan perintah Azure CLI az rest . Anda juga dapat menjalankan az rest perintah dari shell Bash seperti Git Bash.

Prasyarat

Meninjau sintaks REST API

Ada dua elemen untuk menjalankan perintah REST API: URI REST API dan isi permintaan. Untuk informasi, buka Penetapan Kebijakan - Buat.

Contoh berikut menunjukkan sintaks URI REST API untuk membuat definisi kebijakan.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
  • scope: Cakupan menentukan sumber daya atau grup sumber daya mana yang akan diberlakukan oleh penetapan kebijakan. Cakupan dapat memiliki rentang mulai dari sumber daya grup manajemen hingga individu. Ganti {scope} dengan salah satu pola berikut:
    • Grup manajemen: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • Langganan: /subscriptions/{subscriptionId}
    • Grup sumber daya: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Sumber daya: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • policyAssignmentName: Membuat nama penetapan kebijakan untuk penugasan Anda. Nama disertakan dalam properti penetapan policyAssignmentId kebijakan.

Contoh berikut adalah JSON untuk membuat file isi permintaan.

{
  "properties": {
    "displayName": "",
    "description": "",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
    "nonComplianceMessages": [
      {
        "message": ""
      }
    ]
  }
}
  • displayName: Nama tampilan untuk penetapan kebijakan.
  • description: Dapat digunakan untuk menambahkan konteks tentang penetapan kebijakan.
  • policyDefinitionId: ID definisi kebijakan yang untuk membuat penugasan.
  • nonComplianceMessages: Atur pesan yang akan digunakan saat sumber daya dievaluasi sebagai tidak patuh. Untuk informasi selengkapnya, lihat pesan ketidakpatuhan penugasan.

Hubungkan ke Azure

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.

az login

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

Gunakan az login meskipun Anda menggunakan PowerShell karena contoh menggunakan perintah Azure CLI az rest .

Buat penetapan kebijakan

Dalam contoh ini, Anda membuat penetapan kebijakan dan menetapkan Audit VM yang tidak menggunakan definisi disk terkelola .

Isi permintaan diperlukan untuk membuat penugasan. Simpan JSON berikut dalam file bernama request-body.json.

{
  "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"
      }
    ]
  }
}

Untuk membuat penetapan kebijakan Anda dalam cakupan grup sumber daya yang ada, gunakan URI REST API berikut dengan file untuk isi permintaan. Ganti {subscriptionId} dan {resourceGroupName} dengan nilai Anda. Perintah menampilkan output JSON di shell Anda.

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

Di PowerShell, backtick (`) diperlukan untuk keluar dari at sign (@) untuk menentukan nama file. Dalam shell Bash seperti Git Bash, hilangkan backtick.

Untuk informasi, buka Penetapan Kebijakan - Buat.

Mengidentifikasi sumber daya yang tidak sesuai

Status kepatuhan untuk penetapan kebijakan baru membutuhkan waktu beberapa menit untuk menjadi aktif dan memberikan hasil tentang status kebijakan. Anda menggunakan REST API untuk menampilkan sumber daya yang tidak sesuai untuk penetapan kebijakan ini dan outputnya ada di JSON.

Untuk mengidentifikasi sumber daya yang tidak sesuai, jalankan perintah berikut. Ganti {subscriptionId} dan {resourceGroupName} dengan nilai yang digunakan saat Anda membuat penetapan kebijakan.

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'"

filter Kueri untuk sumber daya yang dievaluasi sebagai tidak sesuai dengan definisi kebijakan bernama audit-vm-managed-disks yang Anda buat dengan penetapan kebijakan. Sekali lagi, perhatikan backtick digunakan untuk menghindari tanda dolar ($) dalam filter. Untuk klien Bash, garis miring terbelakang (\) adalah karakter escape umum.

Hasilnya akan terlihat seperti contoh berikut:

{
  "@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"
    }
  ]
}

Untuk informasi selengkapnya, buka Status Kebijakan - Cantumkan Hasil Kueri Untuk Grup Sumber Daya.

Membersihkan sumber daya

Untuk menghapus penetapan kebijakan, gunakan perintah berikut. Ganti {subscriptionId} dan {resourceGroupName} dengan nilai yang digunakan saat Anda membuat penetapan kebijakan. Perintah menampilkan output JSON di shell Anda.

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

Anda dapat memverifikasi bahwa penetapan kebijakan telah dihapus dengan perintah berikut. Pesan ditampilkan di shell Anda.

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.

Untuk informasi selengkapnya, buka Penetapan Kebijakan - Hapus dan Penetapan Kebijakan - Dapatkan.

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.