Memecahkan masalah kesalahan menggunakan Azure Policy

Saat membuat definisi kebijakan, bekerja dengan SDK, atau menyiapkan Add-on Azure Policy untuk Kube, Anda mungkin mengalami kesalahan. Artikel ini menjelaskan berbagai kesalahan umum yang mungkin terjadi, dan menyarankan cara untuk mengatasinya.

Menemukan detail kesalahan

Lokasi detail kesalahan bergantung pada aspek Azure Policy yang sedang Anda kerjakan.

  • Jika Anda sedang bekerja dengan kebijakan kustom, buka portal Microsoft Azure untuk mendapatkan umpan balik tentang skema tersebut, atau ulas data kepatuhan yang dihasilkan untuk melihat bagaimana sumber daya dievaluasi.
  • Jika Anda bekerja dengan salah satu dari berbagai SDK, SDK menyediakan detail tentang alasan fungsi gagal.
  • Jika Anda bekerja dengan add-on untuk Kube, mulailah dengan pengelogan di kluster.

Kesalahan umum

Skenario: Alias tidak ditemukan

Masalah

Alias yang salah atau tidak ada digunakan dalam definisi kebijakan. Azure Policy menggunakan alias untuk memetakan ke properti Azure Resource Manager.

Penyebab

Alias yang salah atau tidak ada digunakan dalam definisi kebijakan.

Resolusi

Pertama, validasi bahwa properti Resource Manager memiliki alias. Untuk mencari alias yang tersedia, buka Ekstensi Azure Policy untuk Visual Studio Code atau SDK. Jika alias untuk properti Resource Manager tidak ada, buat tiket dukungan.

Skenario: Detail evaluasi tidak terkini

Masalah

Sumber daya dalam status Belum Dimulai, atau detail kepatuhan tidak terkini.

Penyebab

Penetapan kebijakan atau inisiatif baru membutuhkan waktu sekitar lima menit untuk diterapkan. Sumber daya baru atau yang diperbarui dalam cakupan tugas yang ada akan tersedia dalam waktu sekitar 15 menit. Pemindaian kepatuhan standar terjadi setiap 24 jam. Untuk informasi selengkapnya, lihat pemicu evaluasi.

Resolusi

Pertama, tunggu waktu yang tepat untuk evaluasi selesai dan hasil kepatuhan tersedia di portal Microsoft Azure atau SDK. Untuk memulai pemindaian evaluasi baru dengan Azure PowerShell atau REST API, lihat Pemindaian evaluasi sesuai permintaan.

Skenario: Kepatuhan tidak seperti yang diharapkan

Masalah

Sumber daya tidak dalam status evaluasi Patuh atau Tidak Patuh seperti yang diharapkan untuk sumber daya.

Penyebab

Sumber daya tidak berada dalam cakupan yang benar untuk penugasan kebijakan, atau definisi kebijakan tidak beroperasi sebagaimana dimaksud.

Resolusi

Untuk memecahkan masalah definisi kebijakan Anda, lakukan hal berikut:

  1. Pertama, tunggu waktu yang tepat untuk evaluasi selesai dan hasil kepatuhan tersedia di portal Microsoft Azure atau SDK.

  2. Untuk memulai pemindaian evaluasi baru dengan Azure PowerShell atau REST API, lihat Pemindaian evaluasi sesuai permintaan.

  3. Pastikan parameter penugasan dan cakupan penugasan diatur dengan benar.

  4. Periksa mode definisi kebijakan:

    • Modenya harus all untuk semua jenis sumber daya.
    • Modusnya harus indexed jika definisi kebijakan memeriksa tag atau lokasi.
  5. Pastikan bahwa cakupan sumber daya tidak dikecualikan atau dibebaskan.

  6. Jika kepatuhan untuk penugasan kebijakan menunjukkan sumber daya 0/0, tidak ada sumber daya yang ditentukan untuk diterapkan dalam ckupan penugasan. Periksa definisi kebijakan dan cakupan penugasan.

  7. Untuk sumber daya yang tidak patuh yang diharapkan sesuai, lihat menentukan alasan ketidakpatuhan. Perbandingan definisi dengan nilai properti yang dievaluasi menunjukkan alasan sumber daya tidak patuh.

    • Jika nilai target salah, revisi definisi kebijakan.
    • Jika nilai saat ini salah, validasi payload sumber daya melalui resources.azure.com.
  8. Untuk definisi mode Penyedia Sumber Daya yang mendukung parameter string RegEx (seperti dan definisi bawaan Microsoft.Kubernetes.Data "Gambar kontainer harus digunakan hanya dari pendaftar tepercaya"), validasi bahwa parameter string RegEx adalah benar.

  9. Untuk masalah dan solusi umum lainnya, lihat Pemecahan Masalah: Pemberlakuan tidak seperti yang diharapkan.

Jika Anda masih mengalami masalah dengan definisi kebijakan bawaan atau definisi kustom yang diduplikasi dan disesuaikan, buat tiket dukungan di Penulisan kebijakan untuk merutekan masalah dengan benar.

Skenario: Pemberlakuan tidak seperti yang diharapkan

Masalah

Sumber daya yang Anda harapkan akan ditindaklanjuti oleh Azure Policy tidak ditindaklanjuti, dan tidak ada entri di log Aktivitas Azure.

Penyebab

Penugasan kebijakan telah dikonfigurasi untuk pengaturan enforcementModeDinonaktifkan. Saat enforcementMode dinonaktifkan, efek kebijakan tidak diberlakukan, dan tidak ada entri dalam log Aktivitas.

Resolusi

Pecahkan masalah pemberlakuan penugasan kebijakan Anda dengan melakukan hal berikut:

  1. Pertama, tunggu waktu yang tepat untuk evaluasi selesai dan hasil kepatuhan tersedia di portal Microsoft Azure atau SDK.

  2. Untuk memulai pemindaian evaluasi baru dengan Azure PowerShell atau REST API, lihat Pemindaian evaluasi sesuai permintaan.

  3. Pastikan bahwa parameter penugasan dan cakupan penugasan diatur dengan benar dan bahwa enforcementModeDiaktifkan.

  4. Periksa mode definisi kebijakan:

    • Modenya harus all untuk semua jenis sumber daya.
    • Modusnya harus indexed jika definisi kebijakan memeriksa tag atau lokasi.
  5. Pastikan bahwa cakupan sumber daya tidak dikecualikan atau dibebaskan.

  6. Verifikasikan bahwa payload sumber daya cocok dengan logika kebijakan. Ini dapat dilakukan dengan mengambil jejak HTTP Archive (HAR) atau meninjau properti templat Azure Resource Manager (templat ARM).

  7. Untuk masalah dan solusi umum lainnya, lihat Pemecahan Masalah: Kepatuhan tidak seperti yang diharapkan.

Jika Anda masih mengalami masalah dengan definisi kebijakan bawaan atau definisi kustom yang diduplikasi dan disesuaikan, buat tiket dukungan di Penulisan kebijakan untuk merutekan masalah dengan benar.

Skenario: Ditolak oleh Azure Policy

Masalah

Pembuatan atau pembaruan sumber daya ditolak.

Penyebab

Penugasan kebijakan ke cakupan sumber daya baru atau yang diperbarui memenuhi kriteria definisi kebijakan dengan efek Tolak. Sumber daya yang memenuhi definisi ini dicegah untuk dibuat atau diperbarui.

Resolusi

Pesan kesalahan dari penugasan kebijakan tolak mencakup definisi kebijakan dan ID penugasan kebijakan. Jika informasi kesalahan dalam pesan terlewatkan, informasi tersebut juga tersedia di log Aktivitas. Gunakan informasi ini untuk mendapatkan detail selengkapnya untuk memahami pembatasan sumber daya dan menyesuaikan properti sumber daya dalam permintaan Anda untuk mencocokkan nilai yang diizinkan.

Skenario: Definisi menargetkan beberapa jenis sumber daya

Masalah

Definisi kebijakan yang menyertakan beberapa jenis sumber daya gagal divalidasi selama pembuatan atau pembaruan dengan kesalahan berikut:

The policy definition '{0}' targets multiple resource types, but the policy rule is authored in a way that makes the policy not applicable to the target resource types '{1}'.

Penyebab

Aturan definisi kebijakan memiliki satu atau beberapa kondisi yang tidak dievaluasi oleh jenis sumber daya target.

Resolusi

Jika alias digunakan, pastikan alias hanya dievaluasi terhadap jenis sumber daya yang dimilikinya dengan menambahkan kondisi jenis sebelum digunakan. Alternatifnya adalah membagi definisi kebijakan menjadi beberapa definisi untuk menghindari penargetan beberapa jenis sumber daya.

Skenario: Batas berlangganan terlampaui

Masalah

Pesan kesalahan pada halaman kepatuhan di portal Azure ditampilkan saat mengambil kepatuhan untuk penugasan kebijakan.

Penyebab

Jumlah langganan di bawah cakupan yang dipilih dalam permintaan telah melampaui batas 5000 langganan. Hasil kepatuhan mungkin ditampilkan sebagian.

Resolusi

Pilih cakupan yang lebih terperinci dengan lebih sedikit langganan anak untuk melihat hasil lengkapnya.

Kesalahan templat

Skenario: Fungsi yang didukung Azure Policy diproses menurut templat

Masalah

Azure Policy mendukung sejumlah fungsi dan fungsi templat ARM yang hanya tersedia dalam definisi kebijakan. Resource Manager memproses fungsi-fungsi ini sebagai bagian dari penyebaran daripada sebagai bagian dari definisi kebijakan.

Penyebab

Menggunakan fungsi yang didukung, seperti parameter() atau resourceGroup(), menghasilkan hasil fungsi yang diproses pada waktu penyebaran sebagai ganti dari mengizinkan fungsi untuk definisi kebijakan dan mesin Azure Policy untuk diproses.

Resolusi

Untuk meneruskan fungsi sebagai bagian dari definisi kebijakan, keluarkan seluruh string dengan [ sehingga properti terlihat seperti [[resourceGroup().tags.myTag]. Karakter escape menyebabkan Resource Manager memperlakukan nilai sebagai string saat memproses templat. Azure Policy kemudian menempatkan fungsi ke dalam definisi kebijakan, yang memungkinkannya menjadi dinamis seperti yang diharapkan. Untuk informasi selengkapnya, lihat Sintaksis dan ekspresi pada templat Azure Resource Manager.

Add-on untuk penginstalan Kube

Skenario: Penginstalan menggunakan Bagan Helm gagal karena kesalahan kata sandi

Masalah

Perintah helm install azure-policy-addon gagal, dan mengembalikan salah satu kesalahan berikut:

  • !: event not found
  • Error: failed parsing --set data: key "<key>" has no value (cannot end with ,)

Penyebab

Kata sandi yang dihasilkan menyertakan koma (,), yang dipisahkan oleh Bagan Helm.

Resolusi

Saat Anda menjalankan helm install azure-policy-addon, lepaskan koma (,) di nilai kata sandi dengan garis miring terbalik (\).

Skenario: Penginstalan menggunakan Bagan Helm gagal karena nama sudah ada

Masalah

Perintah helm install azure-policy-addon gagal, dan mengembalikan salah satu kesalahan berikut:

  • Error: cannot re-use a name that is still in use

Penyebab

Bagan Helm dengan nama azure-policy-addon telah diinstal atau diinstal sebagian.

Resolusi

Ikuti petunjuk untuk menghapus Azure Policy untuk add-on Kube, lalu jalankan ulang perintah helm install azure-policy-addon.

Skenario: Identitas yang ditetapkan pengguna komputer virtual Azure digantikan oleh identitas terkelola yang ditetapkan sistem

Masalah

Setelah Anda menetapkan inisiatif kebijakan Konfigurasi Tamu untuk mengaudit pengaturan di dalam komputer, identitas terkelola yang ditetapkan pengguna yang ditetapkan ke komputer tidak lagi ditetapkan. Hanya identitas terkelola yang ditetapkan sistem yang ditetapkan.

Penyebab

Definisi kebijakan yang sebelumnya digunakan dalam definisi DeployIfNotExists Konfigurasi Tamu memastikan bahwa identitas yang ditetapkan sistem ditetapkan ke komputer, tetapi definisi tersebut juga menghapus penugasan identitas yang ditetapkan pengguna.

Resolusi

Definisi yang sebelumnya menyebabkan masalah ini muncul sebagai [Tidak digunakan lagi], dan definisi tersebut digantikan oleh definisi kebijakan yang mengelola prasyarat tanpa menghapus identitas terkelola yang ditetapkan pengguna. Langkah manual diperlukan. Hapus penugasan kebijakan yang ada yang ditandai sebagai [Tidak digunakan lagi], dan ganti dengan inisiatif kebijakan prasyarat yang diperbarui dan definisi kebijakan yang memiliki nama yang sama seperti aslinya.

Untuk narasi terperinci, lihat posting blog Perubahan penting yang dirilis untuk kebijakan audit Konfigurasi Tamu.

Add-on untuk kesalahan umum Kube

Skenario: Add-on tidak dapat mencapai titik akhir layanan Azure Policy karena pembatasan jalan keluar

Masalah

Add-on tidak dapat mencapai titik akhir layanan Azure Policy, dan mengembalikan salah satu kesalahan berikut:

  • failed to fetch token, service not reachable
  • Error getting file "Get https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/template.yaml: dial tcp 151.101.228.133.443: connect: connection refused

Penyebab

Masalah ini terjadi saat jalan kelua kluster terkunci.

Resolusi

Pastikan bahwa domain dan port yang disebutkan dalam artikel berikut terbuka:

Skenario: Add-on tidak dapat mencapai titik akhir layanan Azure Policy karena konfigurasi aad-pod-identity

Masalah

Add-on tidak dapat mencapai titik akhir layanan Azure Policy, dan mengembalikan salah satu kesalahan berikut:

  • azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to https://gov-prod-policy-data.trafficmanager.net/checkDataPolicyCompliance?api-version=2019-01-01-preview: StatusCode=404
  • adal: Refresh request failed. Status Code = '404'. Response body: getting assigned identities for pod kube-system/azure-policy-8c785548f-r882p in CREATED state failed after 16 attempts, retry duration [5]s, error: <nil>

Penyebab

Kesalahan ini terjadi ketika aad-pod-identity diinstal pada kluster dan pod kube-system tidak dikecualikan dalam aad-pod-identity.

Pod Identitas Terkelola Simpul (NMI) komponen aad-pod-identity memodifikasi iptable simpul untuk mencegat panggilan ke titik akhir metadata instans Azure. Penyiapan ini berarti bahwa setiap permintaan yang dibuat pada titik akhir metadata disadap oleh NMI, meskipun pod tidak menggunakan aad-pod-identity. CustomResourceDefinition (CRD) AzurePodIdentityException dapat dikonfigurasi untuk menginformasikan aad-pod-identity bahwa setiap permintaan ke titik akhir metadata yang berasal dari pod yang cocok dengan label yang ditentukan dalam CRD harus di-proksi tanpa pemrosesan di NMI.

Resolusi

Mengecualikan pod sistem yang memiliki label kubernetes.azure.com/managedby: aks pada namespace layanan kube-system dalam aad-pod-identity dengan mengonfigurasi CRD AzurePodIdentityException.

Untuk informasi selengkapnya, lihat Menonaktifkan identitas pod Azure Active Directory (Azure AD) untuk pod/aplikasi tertentu.

Untuk mengonfigurasi pengecualian, ikuti contoh ini:

apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: mic-exception
  namespace: default
spec:
  podLabels:
    app: mic
    component: mic
---
apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: aks-addon-exception
  namespace: kube-system
spec:
  podLabels:
    kubernetes.azure.com/managedby: aks

Skenario: Penyedia sumber tidak terdaftar

Masalah

Add-on dapat mencapai titik akhir layanan Azure Policy, tetapi log add-on menampilkan salah satu kesalahan berikut:

  • The resource provider 'Microsoft.PolicyInsights' is not registered in subscription '{subId}'. See https://aka.ms/policy-register-subscription for how to register subscriptions.

  • policyinsightsdataplane.BaseClient#CheckDataPolicyCompliance: Failure responding to request: StatusCode=500 -- Original Error: autorest/azure: Service returned an error. Status=500 Code="InternalServerError" Message="Encountered an internal server error.

Penyebab

Penyedia sumber 'Microsoft.PolicyInsights' tidak terdaftar. Penyedia sumber tersebut harus didaftarkan untuk add-on guna mendapatkan definisi kebijakan dan mengembalikan data kepatuhan.

Resolusi

Daftarkan penyedia sumber 'Microsoft.PolicyInsights' dalam langganan kluster. Untuk mengetahui petunjuknya, lihat Mendaftarkan penyedia sumber.

Skenario: Langganan dinonaktifkan

Masalah

Add-on dapat mencapai titik akhir layanan Azure Policy, tetapi kesalahan berikut ditampilkan:

The subscription '{subId}' has been disabled for azure data-plane policy. Please contact support.

Penyebab

Kesalahan ini berarti bahwa langganan dianggap bermasalah, dan bendera fitur Microsoft.PolicyInsights/DataPlaneBlocked ditambahkan untuk memblokir langganan.

Resolusi

Untuk menyelidiki dan mengatasi masalah ini, hubungi tim fitur.

Skenario: Definisi dalam kategori "Konfigurasi Tamu" tidak dapat diduplikasi dari portal Microsoft Azure

Masalah

Saat mencoba membuat definisi kebijakan kustom dari halaman portal Microsoft Azure untuk definisi kebijakan, Anda memilih tombol "Definisi duplikat". Setelah menetapkan kebijakan, Anda menemukan mesin Tidak Bergantung karena tidak ada sumber daya penugasan konfigurasi tamu.

Penyebab

Konfigurasi tamu bergantung pada metadata kustom yang ditambahkan ke definisi kebijakan saat membuat sumber daya penugasan konfigurasi tamu. Aktivitas "Definisi duplikat" di portal Microsoft Azure tidak menyalin metadata kustom.

Resolusi

Alih-alih menggunakan portal, duplikat definisi kebijakan menggunakan API Insights Azure Policy. Sampel PowerShell berikut memberikan opsi.

# duplicates the built-in policy which audits Windows machines for pending reboots
$def = Get-AzPolicyDefinition -id '/providers/Microsoft.Authorization/policyDefinitions/4221adbc-5c0f-474f-88b7-037a99e6114c' | % Properties
New-AzPolicyDefinition -name (new-guid).guid -DisplayName "$($def.DisplayName) (Copy)" -Description $def.Description -Metadata ($def.Metadata | convertto-json) -Parameter ($def.Parameters | convertto-json) -Policy ($def.PolicyRule | convertto-json -depth 15)

Skenario: Sumber daya Kubernetes dibuat selama kegagalan konektivitas meskipun kebijakan penolakan telah ditetapkan

Masalah

Jika terjadi kegagalan konektivitas kluster Kubernetes, evaluasi untuk sumber daya yang baru dibuat atau diperbarui dapat dilewati karena perilaku fail-open Gatekeeper.

Penyebab

Model fail-open GK dirancang dan berdasarkan umpan balik komunitas. Dokumentasi Gatekeeper memperluas alasan ini di sini: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Resolusi

Pada peristiwa di atas, kasus kesalahan dapat dipantau dari metrik webhook penerimaan yang disediakan oleh kube-apiserver. Dan bahkan jika evaluasi dilewati pada waktu pembuatan dan objek dibuat, evaluasi masih akan dilaporkan pada kepatuhan Azure Policy sebagai tidak patuh sebagai bendera kepada pelanggan.

Terlepas dari hal di atas, dalam skenario seperti itu, kebijakan Azure akan tetap mempertahankan kebijakan terakhir yang diketahui di kluster dan mempertahankan pagar pembatas di tempatnya.

Langkah berikutnya

Jika masalah Anda tidak tercantum dalam artikel ini atau Anda tidak dapat mengatasinya, dapatkan dukungan dengan mengunjungi salah satu saluran berikut:

  • Dapatkan jawaban dari para ahli melalui Microsoft Q&A.
  • Terhubung dengan @AzureSupport. Sumber daya resmi Microsoft Azure di Twitter ini membantu meningkatkan pengalaman pelanggan dengan menyambungkan komunitas Azure ke jawaban, dukungan, dan ahli yang tepat.
  • Jika Anda masih memerlukan bantuan, buka situs dukungan Azure dan pilih Kirim permintaan dukungan.