Bagikan melalui


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 berada dalam status evaluasi Yang Sesuai atau Tidak Sesuai 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 langkah-langkah 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

Penetapan kebijakan dikonfigurasi untuk pengaturan enforcementMode dari Dinonaktifkan. Saat enforcementMode dinonaktifkan, efek kebijakan tidak diberlakukan, dan tidak ada entri di log Aktivitas.

Resolusi

Memecahkan masalah penegakan penetapan kebijakan Anda dengan melakukan langkah-langkah 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 dan diaktifkan enforcementMode .
  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. Verifikasi ini dapat dilakukan dengan mengambil jejak Arsip HTTP (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 melebihi batas 5.000 langganan. Hasil kepatuhan mungkin ditampilkan sebagian.

Resolusi

Untuk melihat hasil lengkap, pilih cakupan yang lebih terperinci dengan lebih sedikit langganan anak.

Kesalahan templat

Skenario: Fungsi yang didukung Azure Policy diproses menurut templat

Masalah

Azure Policy mendukung banyak 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 sudah diinstal atau sebagian diinstal.

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 Konfigurasi deployIfNotExists Tamu memastikan bahwa identitas yang ditetapkan sistem ditetapkan ke komputer. Tetapi mereka juga menghapus penetapan identitas yang ditetapkan pengguna.

Resolusi

Definisi yang sebelumnya menyebabkan masalah ini muncul sebagai \[Deprecated\], dan digantikan oleh definisi kebijakan yang mengelola prasyarat tanpa menghapus identitas terkelola yang ditetapkan pengguna. Langkah manual diperlukan. Hapus penetapan kebijakan yang ada yang ditandai sebagai \[Deprecated\], dan ganti dengan inisiatif kebijakan prasyarat dan definisi kebijakan yang diperbarui yang memiliki nama yang sama dengan yang asli.

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 aad-pod-identity Node Managed Identity (NMI) komponen memodifikasi iptable node untuk mencegat panggilan ke titik akhir metadata instans Azure. Penyiapan ini berarti bahwa setiap permintaan yang dibuat ke titik akhir metadata disadap oleh NMI, bahkan jika pod tidak menggunakan aad-pod-identity. AzurePodIdentityException CustomResourceDefinition (CRD) 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 diproksi tanpa pemrosesan apa pun di NMI.

Resolusi

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

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 Microsoft.PolicyInsights sumber daya tidak terdaftar. Penyedia sumber tersebut harus didaftarkan untuk add-on guna mendapatkan definisi kebijakan dan mengembalikan data kepatuhan.

Resolusi

Daftarkan Microsoft.PolicyInsights penyedia sumber daya 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 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 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 ada kegagalan konektivitas kluster Kubernetes, evaluasi untuk sumber daya yang baru dibuat atau diperbarui mungkin dilewati karena perilaku Gatekeeper yang gagal terbuka.

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

Dalam peristiwa sebelumnya, kasus kesalahan dapat dipantau dari metrik webhook penerimaan yang disediakan oleh kube-apiserver. Jika evaluasi dilewati pada waktu pembuatan dan objek dibuat, itu dilaporkan pada kepatuhan Azure Policy sebagai tidak patuh sebagai bendera kepada pelanggan.

Terlepas dari skenarionya, kebijakan Azure mempertahankan kebijakan terakhir yang diketahui pada kluster dan menjaga pagar pembatas tetap di tempat.

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 X ini membantu meningkatkan pengalaman pelanggan dengan menghubungkan komunitas Azure ke jawaban, dukungan, dan pakar yang tepat.
  • Jika Anda masih memerlukan bantuan, buka situs dukungan Azure dan pilih Kirim tiket dukungan.