Mendapatkan data kepatuhan sumber daya Azure

Salah satu keuntungan terbesar Azure Policy adalah wawasan dan kontrol yang diberikannya atas sumber daya dalam langganan atau grup manajemen langganan. Kontrol ini dapat digunakan untuk mencegah sumber daya dibuat di lokasi yang salah, memberlakukan penggunaan tag umum dan konsisten, atau mengaudit sumber daya yang ada untuk konfigurasi dan pengaturan yang sesuai. Dalam semua kasus, data dibuat oleh Azure Policy untuk memungkinkan Anda memahami status kepatuhan lingkungan Anda.

Sebelum meninjau data kepatuhan, penting untuk memahami status kepatuhan dalam Azure Policy.

Ada beberapa cara untuk mengakses informasi kepatuhan yang dibuat oleh penetapan kebijakan dan inisiatif Anda:

Sebelum melihat metode untuk melaporkan kepatuhan, mari kita lihat kapan informasi kepatuhan diperbarui serta frekuensi dan peristiwa yang memicu siklus evaluasi.

Pemicu evaluasi

Hasil dari siklus evaluasi yang telah selesai tersedia di Penyedia Sumber Daya Microsoft.PolicyInsights melalui operasi PolicyStates dan PolicyEvents. Untuk mengetahui informasi selengkapnya tentang operasi Azure Policy Insights REST API, lihat Azure Policy Insights.

Evaluasi kebijakan dan inisiatif yang ditetapkan terjadi sebagai hasil dari berbagai peristiwa:

  • Kebijakan atau inisiatif baru ditetapkan ke sebuah cakupan. Dibutuhkan sekitar lima menit agar penugasan diterapkan ke cakupan yang ditentukan, lalu siklus evaluasi dimulai untuk sumber daya yang berlaku terhadap kebijakan atau inisiatif yang baru ditetapkan. Bergantung pada efek yang digunakan, sumber daya ditandai sebagai sesuai, tidak patuh, dikecualikan, atau tidak diketahui. Kebijakan atau inisiatif besar yang dievaluasi terhadap cakupan sumber daya yang besar dapat memakan waktu, sehingga tidak ada harapan yang telah ditentukan sebelumnya ketika siklus evaluasi selesai. Setelah selesai, hasil kepatuhan yang diperbarui tersedia di portal dan SDK.

  • Kebijakan atau yang sudah ditetapkan ke cakupan diperbarui. Siklus evaluasi dan waktu untuk skenario ini sama dengan untuk penugasan baru ke cakupan.

  • Sumber daya disebarkan ke atau diperbarui dalam cakupan dengan penugasan melalui Azure Resource Manager, REST API, atau SDK yang didukung. Dalam skenario ini, peristiwa efek (tambahkan, audit, tolak, sebarkan) dan informasi status yang sesuai syarat untuk sumber daya individu tersedia di portal dan SDK sekitar 15 menit kemudian. Peristiwa ini tidak menyebabkan evaluasi sumber daya lain.

  • Langganan (jenis sumber daya Microsoft.Resources/subscriptions) dibuat atau dipindahkan dalam hierarki grup manajemen dengan definisi kebijakan yang ditetapkan yang menargetkan jenis sumber daya langganan. Evaluasi efek langganan yang didukung (audit, auditIfNotExist, deployIfNotExists, modifikasi), pengelogan, dan tindakan remediasi apa pun membutuhkan waktu sekitar 30 menit.

  • Pengecualian kebijakan dibuat, diperbarui, atau dihapus. Dalam skenario ini, penugasan yang sesuai dievaluasi untuk ruang cakupan pengecualian yang ditentukan.

  • Siklus evaluasi kepatuhan standar. Setiap 24 jam sekali, penugasan otomatis dievaluasi kembali. Kebijakan atau inisiatif besar dari banyak sumber daya bisa memakan waktu, jadi tidak ada harapan yang telah ditentukan sebelumnya saat siklus evaluasi selesai. Setelah selesai, hasil kepatuhan yang diperbarui tersedia di portal dan SDK.

  • Penyedia sumber daya konfigurasi mesin diperbarui dengan detail kepatuhan oleh sumber daya terkelola.

  • Pemindaian sesuai permintaan

Catatan

Secara desain, Azure Policy mengecualikan semua sumber daya di bawah Microsoft.Resources penyedia sumber daya (RP) dari evaluasi kebijakan dengan pengecualian langganan dan grup sumber daya, yang dapat dievaluasi.

Pemindaian evaluasi sesuai permintaan

Pemindaian evaluasi untuk langganan atau grup sumber daya bisa dimulai dengan Azure CLI, Azure PowerShell, panggilan ke REST API, atau dengan menggunakan Azure Policy Compliance Scan GitHub Action. Pemindaian ini adalah proses asinkron.

Catatan

Tidak semua penyedia sumber daya Azure mendukung pemindaian evaluasi sesuai permintaan. Misalnya, Azure Virtual Network Manager (AVNM) saat ini tidak mendukung pemicu manual ataupun siklus evaluasi kepatuhan kebijakan standar (pemindaian harian).

Pemindaian evaluasi sesuai permintaan - GitHub Action

Gunakan tindakan Pemindaian Kepatuhan Azure Policy untuk memicu pemindaian evaluasi sesuai permintaan dari alur kerja GitHub Anda di satu atau beberapa sumber daya, grup sumber daya, atau langganan, dan gerbang alur kerja berdasarkan status kepatuhan sumber daya. Anda juga bisa mengonfigurasi alur kerja untuk berjalan pada waktu yang dijadwalkan sehingga Anda mendapatkan status kepatuhan terbaru pada waktu yang nyaman. Secara opsional, GitHub Actions dapat menghasilkan laporan tentang status kepatuhan sumber daya yang dipindai untuk analisis lebih lanjut atau untuk pengarsipan.

Contoh berikut menjalankan pemindaian kepatuhan untuk langganan.

on:
  schedule:
    - cron:  '0 8 * * *'  # runs every morning 8am
jobs:
  assess-policy-compliance:
    runs-on: ubuntu-latest
    steps:
    - name: Login to Azure
      uses: azure/login@v1
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}

    - name: Check for resource compliance
      uses: azure/policy-compliance-scan@v0
      with:
        scopes: |
          /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Untuk informasi selengkapnya dan contoh alur kerja, lihat repo Pemindaian Kepatuhan Tindakan GitHub untuk Azure Policy.

Pemindaian evaluasi sesuai permintaan - Azure CLI

Pemindaian kepatuhan dimulai dengan perintah az policy state trigger-scan.

Secara default, az policy state trigger-scan memulai evaluasi untuk semua sumber daya dalam langganan saat ini. Untuk memulai evaluasi pada grup sumber daya tertentu, gunakan parameter resource-group. Contoh berikut memulai pemindaian kepatuhan di langganan saat ini untuk grup sumber daya MyRG:

az policy state trigger-scan --resource-group "MyRG"

Anda bisa memilih untuk tidak menunggu proses asinkron selesai sebelum melanjutkan dengan parameter no-wait.

Pemindaian evaluasi sesuai permintaan - Azure PowerShell

Pemindaian kepatuhan dimulai dengan cmdlet Start-AzPolicyComplianceScan.

Secara default, Start-AzPolicyComplianceScan memulai evaluasi untuk semua sumber daya dalam langganan saat ini. Untuk memulai evaluasi pada grup sumber daya tertentu, gunakan parameter resource-group. Contoh berikut memulai pemindaian kepatuhan di langganan saat ini untuk grup sumber daya MyRG:

Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'

Anda bisa meminta PowerShell menunggu panggilan asinkron selesai sebelum memberikan output hasil atau menjalankannya di latar belakang sebagai pekerjaan. Untuk menggunakan tugas PowerShell untuk menjalankan pemindaian kepatuhan di latar belakang, gunakan parameter AsJob dan atur nilai ke objek, seperti $job dalam contoh ini:

$job = Start-AzPolicyComplianceScan -AsJob

Anda bisa memeriksa status pekerjaan dengan memeriksa objek $job. Pekerjaan ini merupakan jenis Microsoft.Azure.Commands.Common.AzureLongRunningJob. Gunakan Get-Member pada objek $job untuk melihat properti dan metode yang tersedia.

Saat pemindaian kepatuhan berjalan, periksa hasil output objek $job seperti ini:

$job

Id     Name              PSJobTypeName     State         HasMoreData     Location             Command
--     ----              -------------     -----         -----------     --------             -------
2      Long Running O... AzureLongRunni... Running       True            localhost            Start-AzPolicyCompliance...

Saat pemindaian kepatuhan selesai, properti State berubah menjadi Completed.

Pemindaian evaluasi sesuai permintaan - REST

Sebagai proses asinkron, titik akhir REST untuk memulai pemindaian tidak menunggu sampai pemindaian selesai merespons. Sebagai gantinya, menyediakan URI untuk mengkueri status evaluasi yang diminta.

Di setiap URI REST API, ada variabel yang digunakan yang perlu Anda ganti dengan nilai Anda sendiri:

  • {YourRG} - Mengganti dengan nama grup sumber daya Anda
  • {subscriptionId} - Mengganti dengan ID Langganan Anda

Pemindaian mendukung evaluasi sumber daya dalam langganan atau dalam grup sumber daya. Mulai pemindaian berdasarkan cakupan dengan perintah POST REST API menggunakan struktur URI berikut:

  • Langganan

    POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
    
  • Grup sumber daya

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{YourRG}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
    

Panggilan menampilkan status 202 Diterima. Disertakan dalam header respons adalah properti Location dengan format berikut:

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01

{ResourceContainerGUID} secara statis dibuat untuk cakupan yang diminta. Jika cakupan sudah menjalankan pemindaian sesuai permintaan, pemindaian baru belum dimulai. Sebagai gantinya, permintaan baru disediakan URI {ResourceContainerGUID}lokasi yang sama untuk status. Perintah GET REST API ke URI Lokasi menampilkan 202 Diterima saat evaluasi sedang berlangsung. Saat pemindaian evaluasi telah selesai, pemindaian menampilkan status 200 OK. Isi pemindaian yang selesai adalah respons JSON dengan status:

{
    "status": "Succeeded"
}

Pemindaian evaluasi sesuai permintaan - Visual Studio Code

Ekstensi Azure Policy untuk Visual Studio Code mampu menjalankan pemindaian evaluasi untuk sumber daya tertentu. Pemindaian ini adalah proses yang sinkron, tidak seperti metode Azure PowerShell dan REST. Untuk detail dan langkah-langkahnya, lihat Evaluasi sesuai permintaan dengan ekstensi VS Code.

Portal

Portal Azure menampilkan pengalaman grafis dalam memvisualisasikan dan memahami status kepatuhan di lingkungan Anda. Di halaman Kebijakan, opsi Gambaran umum menyediakan detail untuk cakupan yang tersedia tentang kepatuhan kebijakan dan inisiatif. Seiring dengan status kepatuhan dan hitungan per penugasan, ini berisi bagan yang menunjukkan kepatuhan selama tujuh hari terakhir. Halaman Kepatuhan berisi banyak informasi yang sama ini (kecuali bagan), tetapi menyediakan opsi pemfilteran dan pengurutan tambahan.

Cuplikan layar halaman Kepatuhan, opsi pemfilteran, dan detail.

Karena kebijakan atau inisiatif bisa ditetapkan ke cakupan yang berbeda, tabel menyertakan cakupan untuk setiap penugasan dan jenis definisi yang ditetapkan. Jumlah sumber daya yang tidak sesuai syarat dan kebijakan yang tidak sesuai syarat untuk setiap penugasan juga disediakan. Memilih kebijakan atau inisiatif dalam tabel memberikan tampilan yang lebih dalam tentang kepatuhan untuk penugasan tertentu tersebut.

Cuplikan layar halaman Detail Kepatuhan, termasuk hitungan dan detail yang mematuhi sumber daya.

Daftar sumber daya di tab Kepatuhan sumber daya menunjukkan status evaluasi sumber daya yang ada untuk penugasan saat ini. Tab default untuk Tidak sesuai syarat, tetapi bisa difilter. Peristiwa (tambahkan, audit, tolak, terapkan, modifikasi) yang dipicu oleh permintaan untuk membuat sumber daya ditampilkan di bawah tab Peristiwa.

Cuplikan layar tab Peristiwa di halaman Detail Kepatuhan.

Untuk sumber daya mode Penyedia Sumber Daya, di tab Kepatuhan sumber daya, memilih sumber daya atau mengklik kanan pada baris dan memilih Tampilkan detail kepatuhan membuka detail kepatuhan komponen. Halaman ini juga menawarkan tab untuk melihat kebijakan yang ditetapkan ke sumber daya, peristiwa, peristiwa komponen, dan riwayat perubahan ini.

Cuplikan layar tab Kepatuhan Komponen dan detail kepatuhan untuk penetapan mode Penyedia Sumber Daya.

Kembali ke halaman kepatuhan sumber daya, pilih dan tahan (atau klik kanan) pada baris peristiwa tempat Anda ingin mengumpulkan detail selengkapnya dan pilih Tampilkan log aktivitas. Halaman log aktivitas terbuka dan telah difilter sebelumnya ke pencarian yang menunjukkan detail untuk penugasan dan peristiwa. Log aktivitas menyediakan lebih banyak konteks dan informasi tentang peristiwa tersebut.

Cuplikan layar Aktivitas Log untuk aktivitas dan evaluasi Azure Policy.

Catatan

Hasil kepatuhan dapat diekspor dari Portal melalui kueri Azure Resource Graph.

Baris perintah

Informasi yang sama yang tersedia di portal bisa diambil dengan REST API (termasuk dengan ARMClient), Azure PowerShell, dan Azure CLI. Untuk detail selengkapnya tentang REST API, lihat referensi Azure Policy. Halaman referensi REST API memiliki tombol 'Try It' berwarna hijau pada setiap operasi yang memungkinkan Anda mencobanya langsung di browser.

Gunakan ARMClient atau alat serupa untuk menangani autentikasi ke Azure untuk contoh REST API.

Meringkas hasil

Dengan REST API, ringkasan bisa dilakukan dengan kontainer, definisi, atau penugasan. Berikut adalah contoh ringkasan di tingkat langganan menggunakan Ringkasan Langganan Azure Policy Insight:

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01

Output meringkas langganan. Dalam contoh output di bawah, kepatuhan yang dirangkum berada di value.results.nonCompliantResources dan value.results.nonCompliantPolicies. Permintaan ini memberikan detail lebih lanjut, termasuk setiap penugasan yang terdiri dari angka yang tidak sesuai syarat dan informasi definisi untuk setiap penugasan. Setiap objek kebijakan dalam hierarki menyediakan queryResultsUri yang dapat digunakan untuk mendapatkan detail lebih lanjut pada tingkat tersebut.

{
    "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary",
    "@odata.count": 1,
    "value": [{
        "@odata.id": null,
        "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary/$entity",
        "results": {
            "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant'",
            "nonCompliantResources": 15,
            "nonCompliantPolicies": 1
        },
        "policyAssignments": [{
            "policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77",
            "policySetDefinitionId": "",
            "results": {
                "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77'",
                "nonCompliantResources": 15,
                "nonCompliantPolicies": 1
            },
            "policyDefinitions": [{
                "policyDefinitionReferenceId": "",
                "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "effect": "deny",
                "results": {
                    "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'",
                    "nonCompliantResources": 15
                }
            }]
        }]
    }]
}

Kueri untuk sumber daya

Dalam contoh di atas, value.policyAssignments.policyDefinitions.results.queryResultsUri menyediakan URI sampel untuk semua sumber daya yang tidak mematuhi definisi kebijakan tertentu. Dalam nilai $filter , ComplianceState sama (eq) dengan 'NonCompliant', PolicyAssignmentId ditentukan untuk definisi kebijakan, lalu PolicyDefinitionId itu sendiri. Alasan untuk memasukkan PolicyAssignmentId dalam filter adalah karena PolicyDefinitionId bisa berada dalam beberapa penugasan kebijakan atau inisiatif dengan cakupan yang berbeda. Dengan menentukan PolicyAssignmentId dan PolicyDefinitionId, kami bisa menjadi eksplisit dalam hasil yang kami cari. Sebelumnya, untuk PolicyStates kami menggunakan terbaru, yang secara otomatis mengatur jendela waktu dari dan ke dari 24 jam terakhir.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'

Contoh respons di bawah telah dipangkas ke satu sumber daya yang tidak sesuai syarat untuk keringkasan. Respons mendetail memiliki beberapa bagian data tentang sumber daya, kebijakan atau inisiatif, dan penugasan. Perhatikan bahwa Anda juga bisa melihat parameter penugasan apa yang diteruskan ke definisi kebijakan.

{
    "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
    "@odata.count": 15,
    "value": [{
        "@odata.id": null,
        "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
        "timestamp": "2018-05-19T04:41:09Z",
        "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Compute/virtualMachines/linux",
        "policyAssignmentId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Authorization/policyAssignments/37ce239ae4304622914f0c77",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
        "effectiveParameters": "",
        "ComplianceState": "NonCompliant",
        "subscriptionId": "{subscriptionId}",
        "resourceType": "/Microsoft.Compute/virtualMachines",
        "resourceLocation": "westus2",
        "resourceGroup": "RG-Tags",
        "resourceTags": "tbd",
        "policyAssignmentName": "37ce239ae4304622914f0c77",
        "policyAssignmentOwner": "tbd",
        "policyAssignmentParameters": "{\"tagName\":{\"value\":\"costCenter\"},\"tagValue\":{\"value\":\"Contoso-Test\"}}",
        "policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags",
        "policyDefinitionName": "1e30110a-5ceb-460c-a204-c1c3969c6d62",
        "policyDefinitionAction": "deny",
        "policyDefinitionCategory": "tbd",
        "policySetDefinitionId": "",
        "policySetDefinitionName": "",
        "policySetDefinitionOwner": "",
        "policySetDefinitionCategory": "",
        "policySetDefinitionParameters": "",
        "managementGroupIds": "",
        "policyDefinitionReferenceId": ""
    }]
}

Melihat peristiwa

Saat sumber daya dibuat atau diperbarui, hasil evaluasi kebijakan dibuat. Hasil disebut peristiwa kebijakan. Gunakan URI berikut untuk melihat peristiwa kebijakan terbaru yang terkait dengan langganan.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01

Hasilnya akan terlihat seperti contoh berikut:

{
    "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default",
    "@odata.count": 1,
    "value": [{
        "@odata.id": null,
        "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default/$entity",
        "NumAuditEvents": 16
    }]
}

Untuk mengetahui informasi selengkapnya tentang mengkueri peristiwa kebijakan, lihat artikel referensi Peristiwa Azure Policy.

Azure CLI

Grup perintah Azure CLI untuk Azure Policy mencakup sebagian besar operasi yang tersedia di REST atau Azure PowerShell. Untuk daftar lengkap perintah yang tersedia, lihat Azure CLI - Gambaran Umum Azure Policy.

Contoh: Mendapatkan ringkasan status untuk kebijakan yang paling teratas yang ditetapkan dengan jumlah sumber daya yang tidak sesuai tertinggi.

az policy state summarize --top 1

Bagian atas respons terlihat seperti contoh ini:

{
    "odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary/$entity",
    "odataid": null,
    "policyAssignments": [{
            "policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
            "policyDefinitions": [{
                "effect": "audit",
                "policyDefinitionGroupNames": [
                    ""
                ],
                "policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
                "policyDefinitionReferenceId": "",
                "results": {
                    "nonCompliantPolicies": null,
                    "nonCompliantResources": 398,
                    "policyDetails": [{
                        "complianceState": "noncompliant",
                        "count": 1
                    }],
                    "policyGroupDetails": [{
                        "complianceState": "noncompliant",
                        "count": 1
                    }],
                    "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2020-07-14 14:01:22Z&$to=2020-07-15 14:01:22Z and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8' and PolicyDefinitionId eq '/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a'",
                    "resourceDetails": [{
                            "complianceState": "noncompliant",
                            "count": 398
                        },
                        {
                            "complianceState": "compliant",
                            "count": 4
                        }
                    ]
                }
            }],
    ...

Contoh: Mendapatkan catatan status untuk sumber daya yang paling baru dievaluasi (defaultnya adalah dengan tanda waktu dalam urutan menurun).

az policy state list --top 1
[
  {
    "complianceReasonCode": "",
    "complianceState": "Compliant",
    "effectiveParameters": "",
    "isCompliant": true,
    "managementGroupIds": "{managementgroupId}",
    "odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
    "odataid": null,
    "policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/securitycenterbuiltin",
    "policyAssignmentName": "SecurityCenterBuiltIn",
    "policyAssignmentOwner": "tbd",
    "policyAssignmentParameters": "",
    "policyAssignmentScope": "/subscriptions/{subscriptionId}",
    "policyAssignmentVersion": "",
    "policyDefinitionAction": "auditifnotexists",
    "policyDefinitionCategory": "tbd",
    "policyDefinitionGroupNames": [
      ""
    ],
    "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/aa633080-8b72-40c4-a2d7-d00c03e80bed",
    "policyDefinitionName": "aa633080-8b72-40c4-a2d7-d00c03e80bed",
    "policyDefinitionReferenceId": "identityenablemfaforownerpermissionsmonitoring",
    "policyDefinitionVersion": "",
    "policyEvaluationDetails": null,
    "policySetDefinitionCategory": "security center",
    "policySetDefinitionId": "/providers/Microsoft.Authorization/policySetDefinitions/1f3afdf9-d0c9-4c3d-847f-89da613e70a8",
    "policySetDefinitionName": "1f3afdf9-d0c9-4c3d-847f-89da613e70a8",
    "policySetDefinitionOwner": "",
    "policySetDefinitionParameters": "",
    "policySetDefinitionVersion": "",
    "resourceGroup": "",
    "resourceId": "/subscriptions/{subscriptionId}",
    "resourceLocation": "",
    "resourceTags": "tbd",
    "resourceType": "Microsoft.Resources/subscriptions",
    "subscriptionId": "{subscriptionId}",
    "timestamp": "2020-07-15T08:37:07.903433+00:00"
  }
]

Contoh: Mendapatkan detail untuk semua sumber daya jaringan virtual yang tidak sesuai syarat.

az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'"
[
  {
    "complianceReasonCode": "",
    "complianceState": "NonCompliant",
    "effectiveParameters": "",
    "isCompliant": false,
    "managementGroupIds": "{managementgroupId}",
    "odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
    "odataid": null,
    "policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
    "policyAssignmentName": "e0704696df5e4c3c81c873e8",
    "policyAssignmentOwner": "tbd",
    "policyAssignmentParameters": "",
    "policyAssignmentScope": "/subscriptions/{subscriptionId}",
    "policyAssignmentVersion": "",
    "policyDefinitionAction": "audit",
    "policyDefinitionCategory": "tbd",
    "policyDefinitionGroupNames": [
      ""
    ],
    "policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
    "policyDefinitionName": "2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
    "policyDefinitionReferenceId": "",
    "policyDefinitionVersion": "",
    "policyEvaluationDetails": null,
    "policySetDefinitionCategory": "",
    "policySetDefinitionId": "",
    "policySetDefinitionName": "",
    "policySetDefinitionOwner": "",
    "policySetDefinitionParameters": "",
    "policySetDefinitionVersion": "",
    "resourceGroup": "RG-Tags",
    "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Microsoft.Network/virtualNetworks/RG-Tags-vnet",
    "resourceLocation": "westus2",
    "resourceTags": "tbd",
    "resourceType": "Microsoft.Network/virtualNetworks",
    "subscriptionId": "{subscriptionId}",
    "timestamp": "2020-07-15T08:37:07.901911+00:00"
  }
]

Contoh: Mendapatkan peristiwa yang terkait dengan sumber daya jaringan virtual yang tidak sesuai syarat yang terjadi setelah tanggal tertentu.

az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'" --from '2020-07-14T00:00:00Z'
[
  {
    "complianceReasonCode": "",
    "complianceState": "NonCompliant",
    "effectiveParameters": "",
    "isCompliant": false,
    "managementGroupIds": "{managementgroupId}",
    "odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
    "odataid": null,
    "policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
    "policyAssignmentName": "e0704696df5e4c3c81c873e8",
    "policyAssignmentOwner": "tbd",
    "policyAssignmentParameters": "",
    "policyAssignmentScope": "/subscriptions/{subscriptionId}",
    "policyAssignmentVersion": "",
    "policyDefinitionAction": "audit",
    "policyDefinitionCategory": "tbd",
    "policyDefinitionGroupNames": [
      ""
    ],
    "policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
    "policyDefinitionName": "2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
    "policyDefinitionReferenceId": "",
    "policyDefinitionVersion": "",
    "policyEvaluationDetails": null,
    "policySetDefinitionCategory": "",
    "policySetDefinitionId": "",
    "policySetDefinitionName": "",
    "policySetDefinitionOwner": "",
    "policySetDefinitionParameters": "",
    "policySetDefinitionVersion": "",
    "resourceGroup": "RG-Tags",
    "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Microsoft.Network/virtualNetworks/RG-Tags-vnet",
    "resourceLocation": "westus2",
    "resourceTags": "tbd",
    "resourceType": "Microsoft.Network/virtualNetworks",
    "subscriptionId": "{subscriptionId}",
    "timestamp": "2020-07-15T08:37:07.901911+00:00"
  }
]

Azure PowerShell

Modul Azure PowerShell untuk Azure Policy tersedia di Galeri PowerShell sebagai Az.PolicyInsights. Menggunakan PowerShellGet, Anda bisa menginstal modul menggunakan Install-Module -Name Az.PolicyInsights (pastikan Anda telah menginstal Azure PowerShell terbaru):

# Install from PowerShell Gallery via PowerShellGet
Install-Module -Name Az.PolicyInsights

# Import the downloaded module
Import-Module Az.PolicyInsights

# Login with Connect-AzAccount if not using Cloud Shell
Connect-AzAccount

Modul ini memiliki cmdlet berikut:

  • Get-AzPolicyStateSummary
  • Get-AzPolicyState
  • Get-AzPolicyEvent
  • Get-AzPolicyRemediation
  • Remove-AzPolicyRemediation
  • Start-AzPolicyRemediation
  • Stop-AzPolicyRemediation

Contoh: Mendapatkan ringkasan status untuk kebijakan yang paling teratas yang ditetapkan dengan jumlah sumber daya yang tidak sesuai tertinggi.

PS> Get-AzPolicyStateSummary -Top 1

NonCompliantResources : 15
NonCompliantPolicies  : 1
PolicyAssignments     : {/subscriptions/{subscriptionId}/resourcegroups/RG-Tags/providers/micros
                        oft.authorization/policyassignments/37ce239ae4304622914f0c77}

Contoh: Mendapatkan catatan status untuk sumber daya yang paling baru dievaluasi (defaultnya adalah dengan tanda waktu dalam urutan menurun).

PS> Get-AzPolicyState -Top 1

Timestamp                  : 5/22/2018 3:47:34 PM
ResourceId                 : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Network/networkInterfaces/linux316
PolicyAssignmentId         : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId         : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState            : NonCompliant
SubscriptionId             : {subscriptionId}
ResourceType               : /Microsoft.Network/networkInterfaces
ResourceLocation           : westus2
ResourceGroup              : RG-Tags
ResourceTags               : tbd
PolicyAssignmentName       : 37ce239ae4304622914f0c77
PolicyAssignmentOwner      : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope      : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName       : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction     : deny
PolicyDefinitionCategory   : tbd

Contoh: Mendapatkan detail untuk semua sumber daya jaringan virtual yang tidak sesuai syarat.

PS> Get-AzPolicyState -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'"

Timestamp                  : 5/22/2018 4:02:20 PM
ResourceId                 : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId         : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId         : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState            : NonCompliant
SubscriptionId             : {subscriptionId}
ResourceType               : /Microsoft.Network/virtualNetworks
ResourceLocation           : westus2
ResourceGroup              : RG-Tags
ResourceTags               : tbd
PolicyAssignmentName       : 37ce239ae4304622914f0c77
PolicyAssignmentOwner      : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope      : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName       : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction     : deny
PolicyDefinitionCategory   : tbd

Contoh: Mendapatkan peristiwa yang terkait dengan sumber daya jaringan virtual yang tidak sesuai syarat yang terjadi setelah tanggal tertentu, mengonversi ke objek CSV, dan mengekspor ke file.

$policyEvents = Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2020-09-19'
$policyEvents | ConvertTo-Csv | Out-File 'C:\temp\policyEvents.csv'

Output objek $policyEvents terlihat seperti output berikut:

Timestamp                  : 9/19/2020 5:18:53 AM
ResourceId                 : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId         : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId         : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState            : NonCompliant
SubscriptionId             : {subscriptionId}
ResourceType               : /Microsoft.Network/virtualNetworks
ResourceLocation           : eastus
ResourceGroup              : RG-Tags
ResourceTags               : tbd
PolicyAssignmentName       : 37ce239ae4304622914f0c77
PolicyAssignmentOwner      : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope      : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName       : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction     : deny
PolicyDefinitionCategory   : tbd
TenantId                   : {tenantId}
PrincipalOid               : {principalOid}

Bidang PrincipalOid bisa digunakan untuk mendapatkan pengguna tertentu dengan cmdlet Azure PowerShell Get-AzADUser. Ganti {principalOid} dengan respons yang Anda dapatkan dari contoh sebelumnya.

PS> (Get-AzADUser -ObjectId {principalOid}).DisplayName
Trent Baker

Log Azure Monitor

Jika Anda memiliki ruang kerja Analitik Log dengan AzureActivity dari solusi Analitik Log Aktivitas yang terkait dengan langganan Anda, Anda juga bisa melihat hasil yang tidak sesuai syarat dari evaluasi sumber daya baru dan yang diperbarui menggunakan kueri Kusto sederhana dan tabel AzureActivity. Dengan detail di log Azure Monitor, pemberitahuan bisa dikonfigurasi untuk mengawasi ketidakpatuhan.

Cuplikan layar log Azure Monitor yang menunjukkan tindakan Azure Policy dalam tabel AzureActivity.

Azure Resource Graph

Rekaman kepatuhan disimpan di Azure Resource Graph (ARG). Data dapat diekspor dari kueri ARG untuk membentuk dasbor yang disesuaikan berdasarkan cakupan dan kebijakan yang diminati. Tinjau kueri sampel kami untuk mengekspor data kepatuhan melalui ARG.

Langkah berikutnya