Bagikan melalui


Bereaksi terhadap acara perubahan status Azure Policy

Acara Azure Policy mengaktifkan aplikasi untuk bereaksi terhadap perubahan status. Integrasi ini dilakukan tanpa perlu kode yang rumit atau layanan pemungutan suara yang mahal dan tidak efisien. Sebagai gantinya, acara didorong melalui Azure Event Grid kepada pelanggan seperti Azure Functions, Azure Logic Apps, atau bahkan ke pendengar http kustom Anda sendiri. Anda hanya membayar sesuai penggunaan.

Acara Azure Policy dikirim ke Azure Event Grid, yang menyediakan layanan pengiriman yang andal untuk aplikasi Anda melalui kebijakan coba lagi yang kaya dan pengiriman surat mati. Event Grid mengurus perutean, pemfilteran, dan multicasting peristiwa yang tepat ke tujuan melalui langganan Event Grid. Untuk mempelajari selengkapnya, lihat Pengiriman dan coba lagi pesan Event Grid.

Catatan

acara perubahan status Azure Policy dikirim ke Azure Event Grid setelah pemicu evaluasi menyelesaikan evaluasi sumber daya.

Pemberitahuan Event Grid untuk perubahan status kepatuhan sumber daya dapat memakan waktu hingga 20 menit.

Manfaat Event Grid

Event Grid memiliki beberapa manfaat bagi pelanggan dan layanan di ekosistem Azure:

  • Otomatisasi: Untuk tetap terkini dengan lingkungan kebijakan Anda, Event Grid menawarkan mekanisme otomatis untuk menghasilkan pemberitahuan dan memicu tugas tergantung pada status kepatuhan.
  • Pengiriman tahan lama: Agar layanan dan aplikasi pengguna merespons secara real-time terhadap peristiwa kepatuhan kebijakan, Event Grid berusaha menawarkan peristiwa kebijakan dengan latensi minimum. Event Grid mencoba kembali transmisi peristiwa jika titik akhir pelanggan gagal mengakui penerimaannya atau jika tidak, sesuai dengan jadwal coba lagi yang telah ditentukan dan kebijakan coba lagi.
  • Produsen peristiwa kustom: Produsen dan konsumen peristiwa Event Grid tidak perlu menjadi Azure atau layanan Microsoft. Aplikasi eksternal dapat menerima pemberitahuan, menunjukkan pembuatan tugas remediasi atau mengumpulkan pesan tentang siapa yang merespons perubahan status. Lihat Status kebijakan rute mengubah acara menjadi Azure Event Grid dengan Azure CLI untuk tutorial lengkap.

Ada dua entitas utama saat menggunakan Event Grid:

  • Peristiwa: Peristiwa ini dapat berupa apa pun yang mungkin ingin direact oleh pengguna yang mencakup jika status kepatuhan kebijakan dibuat, diubah, dan dihapus dari sumber daya seperti VM atau akun penyimpanan.
  • Langganan Event Grid: Langganan peristiwa ini adalah entitas yang dikonfigurasi pengguna yang mengarahkan serangkaian peristiwa yang tepat dari penerbit ke pelanggan. Langganan peristiwa dapat memfilter peristiwa berdasarkan jalur sumber daya tempat peristiwa berasal dan jenis peristiwa. Selain itu, Langganan Peristiwa juga dapat memfilter berdasarkan cakupan antara langganan Azure dan grup Manajemen.

Skenario peristiwa Azure Policy umum adalah melacak saat status kepatuhan sumber daya berubah selama evaluasi kebijakan. Arsitektur berbasis peristiwa adalah cara yang efisien untuk bereaksi terhadap perubahan ini dan membantu dalam reaksi berbasis peristiwa terhadap perubahan status kepatuhan.

Skenario lain adalah memicu tugas remediasi secara otomatis tanpa mencentang tugas buat remediasi secara manual di halaman kebijakan. Event Grid memeriksa status kepatuhan dan sumber daya yang saat ini tidak patuh dapat diperbaiki. Pelajari selengkapnya tentang struktur remediasi. Remediasi memerlukan identitas dan kebijakan terkelola harus dalam efek Modifikasi atau DeployIfNotExists. Pelajari selengkapnya tentang jenis efek.

Selain itu, Event Grid sangat membantu sebagai sistem audit untuk menyimpan perubahan status dan memahami penyebab ketidakpatuhan dari waktu ke waktu. Skenario untuk Event Grid tidak ada habisnya dan berdasarkan motivasinya, Event Grid dapat dikonfigurasi.

Cuplikan layar model sumber dan handler Event Grid.

Tipe kejadian yang tersedia

Kebijakan Azure mengeluarkan jenis kejadian berikut ini:

Jenis peristiwa Deskripsi
Microsoft.PolicyInsights.PolicyStateCreated Dimunculkan ketika status kepatuhan kebijakan dibuat.
Microsoft.PolicyInsights.PolicyStateChanged Dimunculkan ketika status kepatuhan kebijakan diubah.
Microsoft.PolicyInsights.PolicyStateDeleted Dimunculkan ketika status kepatuhan kebijakan dihapus.

Properti kejadian

Sebuah peristiwa memiliki data tingkat atas berikut ini:

Properti Tipe Deskripsi
topic string Jalur sumber daya lengkap ke sumber kejadian. Bidang ini tidak dapat ditulis. Event Grid memberikan nilai ini.
subject string ID sumber daya yang sepenuhnya memenuhi syarat untuk perubahan status kepatuhan, termasuk nama sumber daya dan jenis sumber daya. Menggunakan format, /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>
eventType string Salah satu jenis kejadian terdaftar untuk sumber kejadian ini.
eventTime string Waktu peristiwa dibuat berdasarkan waktu UTC penyedia.
id string Pengidentifikasi unik untuk peristiwa tersebut.
data object Data acara Azure Policy.
dataVersion string Versi skema objek data. Penerbit mendefinisikan versi skema.
metadataVersion string Versi skema metadata kejadian. Event Grid mendefinisikan skema properti tingkat atas. Event Grid memberikan nilai ini.

Objek data memiliki properti berikut:

Properti Tipe Deskripsi
timestamp string Waktu (dalam UTC) sumber daya dipindai oleh Azure Policy. Untuk memesan acara, gunakan properti ini alih-alih properti eventTime atau time tingkat atas.
policyAssignmentId string ID sumber daya penugasan kebijakan.
policyDefinitionId string ID sumber daya dari definisi kebijakan.
policyDefinitionReferenceId string ID referensi untuk definisi kebijakan di dalam definisi inisiatif, jika penugasan kebijakan adalah untuk inisiatif. Mungkin kosong.
complianceState string Status kepatuhan sumber daya sehubungan dengan penugasan kebijakan.
subscriptionId string ID langganan sumber daya.
complianceReasonCode string Kode alasan kepatuhan. Mungkin kosong.

Contoh peristiwa

Contoh berikut memperlihatkan skema kejadian yang dibuat status kebijakan yang dicakup di tingkat langganan:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/subscriptions/<SubscriptionID>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateCreated",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Skema untuk status kebijakan mengubah peristiwa yang tercakup pada tingkat langganan serupa:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/subscriptions/<SubscriptionID>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateChanged",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Contoh berikut memperlihatkan skema kejadian yang dibuat oleh status kebijakan yang tercakup pada tingkat grup pengelola:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/tenants/<tenantId>/providers/Microsoft.Management/managementGroups/<managementGroupId>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateCreated",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Skema untuk status kebijakan mengubah peristiwa yang tercakup pada tingkat grup pengelola serupa:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/tenants/<tenantId>/providers/Microsoft.Management/managementGroups/<managementGroupId>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateChanged",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Praktik untuk memakai acara

Aplikasi yang menangani acara Azure Policy harus mengikuti praktik yang direkomendasikan ini:

  • Beberapa langganan dapat dikonfigurasi untuk merutekan acara ke penanganan acara yang sama, jadi jangan anggap acara berasal dari sumber tertentu. Sebagai gantinya, periksa topik pesan untuk memastikan penetapan kebijakan, definisi kebijakan, dan sumber daya acara perubahan status adalah untuk.
  • Periksa eventType dan jangan berasumsi bahwa semua acara yang Anda terima adalah jenis yang Anda harapkan.
  • Gunakan data.timestamp untuk menentukan urutan acara dalam Azure Policy, bukan tingkat atas eventTime atau time properti.
  • Gunakan bidang subjek untuk mengakses sumber daya yang memiliki perubahan status kebijakan.

Langkah berikutnya

Pelajari selengkapnya tentang Azure Event Grid dan berikan acara perubahan status Azure Policy kesempatan: