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:
- 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.
- Pastikan parameter penugasan dan cakupan penugasan diatur dengan benar.
- Periksa mode definisi kebijakan:
- Modenya harus
all
untuk semua jenis sumber daya. - Modusnya harus
indexed
jika definisi kebijakan memeriksa tag atau lokasi.
- Modenya harus
- Pastikan bahwa cakupan sumber daya tidak dikecualikan atau dibebaskan.
- 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. - 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
.
- 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. - 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:
- 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.
- Pastikan parameter penugasan dan cakupan penugasan diatur dengan benar dan diaktifkan
enforcementMode
. - Periksa mode definisi kebijakan:
- Modenya harus
all
untuk semua jenis sumber daya. - Modusnya harus
indexed
jika definisi kebijakan memeriksa tag atau lokasi.
- Modenya harus
- Pastikan bahwa cakupan sumber daya tidak dikecualikan atau dibebaskan.
- 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).
- 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.