Memahami efek Azure Policy
Setiap definisi kebijakan dalam Azure Policy memiliki satu efek. Efeknya menentukan apa yang terjadi ketika aturan kebijakan dievaluasi agar cocok. Efek berperilaku berbeda jika mereka digunakan untuk sumber daya baru, sumber daya yang diperbarui, atau sumber daya yang ada.
Efek tersebut saat ini didukung dalam definisi kebijakan:
- TambahkanToNetworkGroup
- Tambah
- Audit
- AuditIfNotExists
- Tolak
- DenyAction
- DeployIfNotExists
- Nonaktif
- Manual
- Ubah
- Bermutasi
Efek pertukaran
Terkadang beberapa efek dapat berlaku untuk definisi kebijakan tertentu. Parameter sering digunakan untuk menentukan nilai efek yang diizinkan sehingga definisi tunggal bisa lebih serbaguna. Namun, penting untuk dicatat bahwa tidak semua efek dapat dipertukarkan. Properti sumber daya dan logika dalam aturan kebijakan dapat menentukan apakah efek tertentu dianggap valid terhadap definisi kebijakan. Misalnya, definisi kebijakan dengan efek AuditIfNotExists memerlukan detail lain dalam aturan kebijakan yang tidak diperlukan untuk kebijakan dengan Audit efek. Efeknya juga berulah berbeda. Kebijakan audit menilai kepatuhan sumber daya berdasarkan propertinya sendiri, sementara kebijakan AuditIfNotExists menilai kepatuhan sumber daya berdasarkan properti sumber daya anak atau ekstensi.
Daftar berikut adalah beberapa panduan umum seputar efek yang dapat dipertukarkan:
- Audit, Tolak, dan Ubah atau Tambahkan sering dapat dipertukarkan.
- AuditIfNotExists dan DeployIfNotExists sering dapat dipertukarkan.
- Manual tidak dapat dipertukarkan.
- Dinonaktifkan dapat dipertukarkan dengan efek apa pun.
Urutan evaluasi
Permintaan untuk membuat atau memperbarui sumber daya dievaluasi oleh Azure Policy terlebih dahulu. Azure Policy membuat daftar semua penugasan yang berlaku untuk sumber daya lalu mengevaluasi sumber daya terhadap setiap definisi. Untuk mode Azure Resource Manager, Azure Policy memproses beberapa efek sebelum menyerahkan permintaan kepada Resource Provider yang sesuai. Urutan ini mencegah pemrosesan yang tidak perlu oleh Penyedia Sumber Daya saat sumber daya tidak memenuhi kontrol tata kelola Azure Policy yang dirancang. Dengan mode Resource Provider, Resource Provider mengelola evaluasi dan hasil serta melaporkan hasilnya kembali ke Azure Policy.
- Dinonaktifkan diperiksa terlebih dahulu untuk menentukan apakah aturan kebijakan harus dievaluasi.
- Tambahkan dan Ubah kemudian dievaluasi. Karena dapat mengubah permintaan, perubahan yang dilakukan dapat mencegah audit atau menolak efek dari pemicu. Efek ini hanya tersedia dengan mode Azure Resource Manager.
- Tolak kemudian dievaluasi. Dengan mengevaluasi tolak sebelum audit, pencatatan ganda sumber daya yang tidak diinginkan dicegah.
- Audit dievaluasi.
- Manual dievaluasi.
- AuditIfNotExists dievaluasi.
- denyAction dievaluasi terakhir.
Setelah Penyedia Sumber Daya mengembalikan kode keberhasilan pada permintaan mode Resource Manager, AuditIfNotExists dan DeployIfNotExists mengevaluasi untuk menentukan apakah diperlukan lebih banyak pengelogan atau tindakan kepatuhan.
PATCH
permintaan yang hanya mengubah tags
bidang terkait membatasi evaluasi kebijakan untuk kebijakan yang berisi kondisi yang memeriksa tags
bidang terkait.
TambahkanToNetworkGroup
AddToNetworkGroup digunakan di Azure Virtual Network Manager untuk menentukan keanggotaan grup jaringan dinamis. Efek ini khusus untuk definisi mode kebijakan Microsoft.Network.Datasaja.
Dengan grup jaringan, definisi kebijakan Anda menyertakan ekspresi kondisional Anda untuk mencocokkan jaringan virtual yang memenuhi kriteria Anda, dan menentukan grup jaringan tujuan tempat sumber daya yang cocok ditempatkan. Efek addToNetworkGroup digunakan untuk menempatkan sumber daya di grup jaringan tujuan.
Untuk mempelajari lebih lanjut, buka Mengonfigurasi Azure Policy dengan grup jaringan di Azure Virtual Network Manager.
Lampirkan
Penambahan digunakan untuk menambahkan lebih banyak bidang ke sumber daya yang diminta selama pembuatan atau pembaruan. Contoh umumnya adalah menentukan IP yang diizinkan untuk sumber daya penyimpanan.
Penting
Tambah ditujukan untuk digunakan dengan properti non-tag. Meskipun Tambah dapat menambahkan tag ke sumber daya selama permintaan buat atau perbarui, disarankan untuk menggunakan efek Mengubah untuk tag.
Evaluasi tambah
Tambah mengevaluasi sebelum permintaan diproses oleh Penyedia Sumber Daya selama pembuatan atau pembaruan sumber daya. Tambah menambahkan bidang ke sumber daya saat kondisi jika aturan kebijakan terpenuhi. Jika efek tambah akan menimpa nilai dalam permintaan asli dengan nilai yang berbeda, maka efek tersebut bertindak sebagai efek tolak dan menolak permintaan. Untuk menambahkan nilai baru ke array yang sudah ada, gunakan [*]
versi alias.
Ketika definisi kebijakan yang menggunakan efek penambahan dijalankan sebagai bagian dari siklus evaluasi, hal ini tidak membuat perubahan pada sumber daya yang sudah ada. Sebaliknya, hal ini menandai sumber daya apa pun yang memenuhi kondisi jika sebagai tidak patuh.
Properti tambah
Efek tambah hanya memiliki array detail, yang diperlukan. Karena detailnya adalah array, satu pasangan bidang/nilai atau kelipatannya. Lihat struktur definisi untuk daftar bidang yang dapat diterima.
Contoh tambah
Contoh 1: Pasangan bidang/nilai tunggal yang menggunakan [*]
bukan-alias dengan nilai array untuk menetapkan aturan IP pada akun penyimpanan. Saat [*]
bukan-alias adalah array, efek menambahkan nilai sebagai seluruh array. Jika array sudah ada, peristiwa tolak terjadi dari konflik.
"then": {
"effect": "append",
"details": [{
"field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules",
"value": [{
"action": "Allow",
"value": "134.5.0.0/21"
}]
}]
}
Contoh 2: Pasangan bidang/nilai tunggal menggunakan [*]
alias dengan nilai array untuk mengatur aturan IP pada akun penyimpanan. Saat Anda menggunakan [*]
alias, efek menambahkan nilai ke array yang berpotensi sudah ada sebelumnya. Jika array belum ada, array akan dibuat.
"then": {
"effect": "append",
"details": [{
"field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*]",
"value": {
"value": "40.40.40.40",
"action": "Allow"
}
}]
}
Audit
Audit digunakan untuk membuat peristiwa peringatan di log aktivitas saat mengevaluasi sumber daya yang tidak mematuhi, tetapi tidak menghentikan permintaan.
Evaluasi audit
Audit adalah efek terakhir yang dicentang oleh Azure Policy selama pembuatan atau pembaruan sumber daya. Untuk mode Azure Resource Manager, Azure Policy kemudian mengirim sumber daya ke Resource Provider. Saat mengevaluasi permintaan buat atau perbarui sumber daya, Azure Policy menambahkan operasi Microsoft.Authorization/policies/audit/action
ke log aktivitas dan menandai sumber daya sebagai tidak patuh. Selama siklus evaluasi kepatuhan standar, hanya status kepatuhan pada sumber daya yang diperbarui.
Properti audit
Untuk mode Resource Manager, efek audit tidak memiliki properti lain untuk digunakan dalam kondisi definisi kebijakan saat itu .
Untuk mode Microsoft.Kubernetes.Data
Penyedia Sumber Daya , efek audit memiliki subproperti detail berikut. Penggunaan templateInfo
diperlukan untuk definisi kebijakan baru atau yang diperbarui karena constraintTemplate
sudah tidak digunakan lagi.
- templateInfo (diperlukan)
- Tidak dapat digunakan dengan
constraintTemplate
. - sourceType (diperlukan)
Mendefinisikan jenis sumber untuk templat batasan. Nilai yang diizinkan: PublicURL atau Base64Encoded.
Jika PublicURL, dipasangkan dengan properti
url
untuk menyediakan lokasi templat batasan. Lokasi harus dapat diakses publik.Peringatan
Jangan gunakan URI SAS, token URL, atau apa pun yang dapat mengekspos rahasia dalam teks biasa.
Jika Base64Encoded, dipasangkan dengan properti
content
untuk menyediakan templat batasan dikodekan base 64. Lihat Membuat definisi kebijakan dari templat batasan untuk membuat definisi kustom dari templat batasan Open Policy Agent (OPA) Gatekeeper v3 yang ada.
- Tidak dapat digunakan dengan
- batasan (tidak digunakan lagi)
- Tidak dapat digunakan dengan
templateInfo
. - Implementasi CRD dari templat Batasan. Menggunakan parameter yang diteruskan melalui nilai sebagai
{{ .Values.<valuename> }}
. Dalam contoh 2 di bawah ini, nilai-nilai ini adalah{{ .Values.excludedNamespaces }}
dan{{ .Values.allowedContainerImagesRegex }}
.
- Tidak dapat digunakan dengan
- constraintTemplate (tidak digunakan lagi)
- Tidak dapat digunakan dengan
templateInfo
. - Harus diganti dengan
templateInfo
saat membuat atau memperbarui ketentuan kebijakan. - CustomResourceDefinition (CRD) templat Batasan yang menentukan Batasan baru. Templat menentukan logika Rego, skema Batasan, dan parameter Batasan yang diteruskan melalui nilai dari Azure Policy. Untuk informasi selengkapnya, buka Batasan Gatekeeper.
- Tidak dapat digunakan dengan
- constraintInfo (opsional)
- Tidak dapat digunakan dengan
constraint
, ,constraintTemplate
,apiGroups
,kinds
scope
,namespaces
,excludedNamespaces
, ataulabelSelector
. - Jika
constraintInfo
tidak disediakan, batasan dapat dihasilkan daritemplateInfo
dan kebijakan. - sourceType (diperlukan)
Menentukan jenis sumber untuk batasan. Nilai yang diizinkan: PublicURL atau Base64Encoded.
Jika PublicURL, dipasangkan dengan properti
url
untuk memberikan lokasi batasan. Lokasi harus dapat diakses publik.Peringatan
Jangan gunakan SAS URI atau token di
url
atau apa pun yang dapat mengekspos rahasia.
- Tidak dapat digunakan dengan
- namespace (opsional)
- Sebuah array pada namespace layanan Kubernetes untuk membatasi kebijakan.
- Nilai kosong atau hilang menyebabkan evaluasi kebijakan menyertakan semua namespace yang tidak ditentukan dalam excludedNamespaces.
- excludedNamespaces (opsional)
- Sebuah array pada namespace layanan Kubernetes untuk pengecualian dari evaluasi kebijakan.
- labelSelector (opsional)
- Objek yang menyertakan properti matchLabels (objek) dan matchExpression (array) untuk memungkinkan penentuan sumber Kubernetes mana yang akan disertakan untuk evaluasi kebijakan yang cocok dengan label dan pemilih yang disediakan.
- Nilai yang kosong atau hilang menyebabkan evaluasi kebijakan menyertakan semua label dan pemilih, kecuali namespace layanan yang ditentukan dalam excludedNamespaces.
- cakupan (opsional)
- String yang menyertakan properti cakupan untuk memungkinkan menentukan apakah sumber daya cakupan kluster atau cakupan namespace dicocokkan.
- apiGroups (diperlukan saat menggunakan templateInfo)
- Array yang menyertakan grup API untuk dicocokkan. Array kosong (
[""]
) adalah grup API inti. - Tidak diizinkan untuk mendefinisikan
["*"]
pada apiGroups.
- Array yang menyertakan grup API untuk dicocokkan. Array kosong (
- jenis (diperlukan saat menggunakan templateInfo)
- Array yang menyertakan jenis objek Kubernetes untuk membatasi evaluasi.
- Tidak diizinkan untuk mendefinisikan
["*"]
pada jenis.
- nilai (opsional)
- Menentukan parameter dan nilai apa pun untuk diteruskan ke Batasan. Setiap nilai harus ada dan cocok dengan properti di bagian validasi openAPIV3Schema dari CRD templat Batasan.
Contoh audit
Contoh 1: Menggunakan efek audit untuk mode Resource Manager.
"then": {
"effect": "audit"
}
Contoh 2: Menggunakan efek audit untuk mode Resource Provider Microsoft.Kubernetes.Data
. Informasi tambahan di details.templateInfo mendeklarasikan penggunaan PublicURL dan menetapkan url
ke lokasi templat Batasan untuk digunakan di Kubernetes guna membatasi gambar kontainer yang diizinkan.
"then": {
"effect": "audit",
"details": {
"templateInfo": {
"sourceType": "PublicURL",
"url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
},
"values": {
"imageRegex": "[parameters('allowedContainerImagesRegex')]"
},
"apiGroups": [""],
"kinds": ["Pod"]
}
}
AuditIfNotExists
AuditIfNotExists memungkinkan audit sumber daya yang terkait dengan sumber daya yang cocok dengan kondisi jika, tetapi tidak memiliki properti yang ditentukan dalam detail dari kondisi saat itu.
Evaluasi AuditIfNotExists
Hal ini berjalan setelah Resource Provider menangani permintaan membuat atau memperbarui sumber daya dan evaluasi telah mengembalikan kode status keberhasilan. Audit terjadi jika tidak ada sumber daya terkait atau jika sumber daya yang ditentukan oleh ExistenceCondition tidak mengevaluasi ke true. Untuk sumber daya baru dan yang diperbarui, Azure Policy menambahkan operasi Microsoft.Authorization/policies/audit/action
ke log aktivitas dan menandai sumber daya sebagai tidak patuh. Ketika dipicu, sumber daya yang memenuhi kondisi jika adalah sumber daya yang ditandai sebagai tidak patuh.
Properti AuditIfNotExists
Properti detail dari efek AuditIfNotExists memiliki semua subproperti yang menentukan sumber daya terkait yang cocok.
- Jenis (diperlukan)
- Menentukan jenis sumber daya terkait yang cocok.
- Jika type adalah jenis sumber daya di bawah sumber daya kondisi if, kueri kebijakan untuk sumber daya type ini dalam cakupan sumber daya yang dievaluasi. Jika tidak, kueri kebijakan dalam grup sumber daya atau langganan yang sama dengan sumber daya yang dievaluasi bergantung pada existenceScope.
- Nama (opsional)
- Menentukan nama persis sumber daya yang cocok dan menyebabkan kebijakan mengambil satu sumber daya tertentu, bukan semua sumber daya dari jenis yang ditentukan.
- Ketika nilai kondisi untuk if.field.type dan then.details.type cocok, maka Nama menjadi diperlukan dan harus
[field('name')]
, atau[field('fullName')]
untuk sumber daya anak. Namun, efek audit harus dipertimbangkan.
Catatan
Segmen Jenis dan Nama dapat digabungkan untuk mengambil sumber daya berlapis secara generis.
Untuk mengambil sumber daya tertentu, Anda dapat menggunakan "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
dan "name": "parentResourceName/nestedResourceName"
.
Untuk mengambil kumpulan sumber daya berlapis, karakter ?
kartubebas dapat disediakan sebagai pengganti segmen nama belakang. Misalnya, "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
dan "name": "parentResourceName/?"
. Ini dapat dikombinasikan dengan fungsi bidang untuk mengakses sumber daya yang terkait dengan sumber daya yang dievaluasi, seperti "name": "[concat(field('name'), '/?')]"
."
- ResourceGroupName (opsional)
- Memungkinkan pencocokan sumber daya terkait berasal dari grup sumber daya yang berbeda.
- Tidak berlaku jika jenis adalah sumber daya yang akan berada di bawah sumber daya kondisi jika.
- Defaultnya adalah grup sumber daya dari sumber daya kondisijika.
- ExistenceScope (opsional)
- Nilai yang diperbolehkan adalah Langganan dan ResourceGroup.
- Mengatur lingkup tempat mengambil sumber daya terkait untuk dicocokkan.
- Tidak berlaku jika jenis adalah sumber daya yang akan berada di bawah sumber daya kondisi jika.
- Untuk ResourceGroup, akan membatasi grup sumber daya di ResourceGroupName jika ditentukan. Jika ResourceGroupName tidak ditentukan, akan membatasi grup sumber daya sumber daya kondisi jika , yang merupakan perilaku default.
- Untuk Langganan, kueri seluruh langganan untuk sumber daya terkait. Lingkup penetapan harus ditetapkan pada langganan atau yang lebih tinggi untuk evaluasi yang tepat.
- Defaultnya adalah ResourceGroup.
- EvaluationDelay (opsional)
- Menentukan kapan keberadaan sumber daya terkait harus dievaluasi. Penundaan hanya digunakan untuk evaluasi yang merupakan hasil dari permintaan pembuatan atau pembaruan sumber daya.
- Nilai yang diizinkan adalah
AfterProvisioning
,AfterProvisioningSuccess
,AfterProvisioningFailure
, atau durasi ISO 8601 antara 0 dan 360 menit. - Nilai AfterProvisioning memeriksa hasil provisi sumber daya yang dievaluasi dalam kondisi IF aturan kebijakan.
AfterProvisioning
berjalan setelah provisi selesai, terlepas apapun hasilnya. Jika provisi membutuhkan waktu lebih dari 6 jam, provisi tersebut dianggap sebagai gagal saat menentukan penundaan evaluasi AfterProvisioning. - Defaultnya adalah
PT10M
(10 menit). - Menentukan penundaan evaluasi panjang dapat menyebabkan status kepatuhan sumber daya yang direkam tidak diperbarui hingga pemicu evaluasi berikutnya.
- ExistenceCondition (opsional)
- Jika tidak ditentukan, sumber daya jenis terkait memenuhi efek dan tidak memicu audit.
- Menggunakan bahasa yang sama dengan aturan kebijakan untuk kondisi if, tetapi dievaluasi terhadap setiap sumber daya terkait satu per satu.
- Jika ada sumber daya terkait yang cocok yang dievaluasi ke true, efeknya puas dan tidak memicu audit.
- Dapat menggunakan [field()] untuk memeriksa kesetaraan dengan nilai dalam kondisi if.
- Misalnya, dapat digunakan untuk memvalidasi bahwa sumber daya induk (dalam kondisi jika) berada di lokasi sumber daya yang sama dengan sumber daya terkait yang cocok.
Contoh AuditIfNotExists
Contoh: Mengevaluasi Microsoft Azure Virtual Machines untuk menentukan apakah ekstensi Antimalware ada kemudian mengaudit saat hilang.
{
"if": {
"field": "type",
"equals": "Microsoft.Compute/virtualMachines"
},
"then": {
"effect": "auditIfNotExists",
"details": {
"type": "Microsoft.Compute/virtualMachines/extensions",
"existenceCondition": {
"allOf": [{
"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
"equals": "Microsoft.Azure.Security"
},
{
"field": "Microsoft.Compute/virtualMachines/extensions/type",
"equals": "IaaSAntimalware"
}
]
}
}
}
}
Tolak
Tolak digunakan untuk mencegah permintaan sumber daya yang tidak sesuai dengan standar yang ditentukan melalui definisi kebijakan dan mengagalkan permintaan.
Evaluasi tolak
Saat membuat atau memperbarui sumber daya yang cocok dalam mode Azure Resource Manager, tolak akan mencegah permintaan sebelum dikirim ke Resource Provider. Permintaan dikembalikan sebagai 403 (Forbidden)
. Di portal, Terlarang dapat dilihat sebagai status pada penyebaran yang dicegah oleh penugasan kebijakan. Untuk mode Resource Provider, penyedia sumber daya mengelola evaluasi sumber daya.
Selama evaluasi sumber daya yang ada, sumber daya yang cocok dengan definisi kebijakan tolak ditandai sebagai tidak patuh.
Properti tolak
Untuk mode Resource Manager, efek tolak tidak memiliki properti lagi untuk digunakan dalam kondisi definisi kebijakan saat itu .
Untuk mode Microsoft.Kubernetes.Data
Penyedia Sumber Daya , efek tolak memiliki subproperti detail berikut. Penggunaan templateInfo
diperlukan untuk definisi kebijakan baru atau yang diperbarui karena constraintTemplate
sudah tidak digunakan lagi.
- templateInfo (diperlukan)
- Tidak dapat digunakan dengan
constraintTemplate
. - sourceType (diperlukan)
Mendefinisikan jenis sumber untuk templat batasan. Nilai yang diizinkan: PublicURL atau Base64Encoded.
Jika PublicURL, dipasangkan dengan properti
url
untuk menyediakan lokasi templat batasan. Lokasi harus dapat diakses publik.Peringatan
Jangan gunakan SAS URI atau token di
url
atau apa pun yang dapat mengekspos rahasia.Jika Base64Encoded, dipasangkan dengan properti
content
untuk menyediakan templat batasan dikodekan base 64. Lihat Membuat definisi kebijakan dari templat batasan untuk membuat definisi kustom dari templat batasan Open Policy Agent (OPA) Gatekeeper v3 yang ada.
- Tidak dapat digunakan dengan
- batasan (opsional)
- Tidak dapat digunakan dengan
templateInfo
. - Implementasi CRD dari templat Batasan. Menggunakan parameter yang diteruskan melalui nilai sebagai
{{ .Values.<valuename> }}
. Dalam contoh 2 di bawah ini, nilai-nilai ini adalah{{ .Values.excludedNamespaces }}
dan{{ .Values.allowedContainerImagesRegex }}
.
- Tidak dapat digunakan dengan
- constraintTemplate (tidak digunakan lagi)
- Tidak dapat digunakan dengan
templateInfo
. - Harus diganti dengan
templateInfo
saat membuat atau memperbarui ketentuan kebijakan. - CustomResourceDefinition (CRD) templat Batasan yang menentukan Batasan baru. Templat menentukan logika Rego, skema Batasan, dan parameter Batasan yang diteruskan melalui nilai dari Azure Policy. Untuk informasi selengkapnya, buka Batasan Gatekeeper.
- Tidak dapat digunakan dengan
- constraintInfo (opsional)
- Tidak dapat digunakan dengan
constraint
, ,constraintTemplate
,apiGroups
ataukinds
. - Jika
constraintInfo
tidak disediakan, batasan dapat dihasilkan daritemplateInfo
dan kebijakan. - sourceType (diperlukan)
Menentukan jenis sumber untuk batasan. Nilai yang diizinkan: PublicURL atau Base64Encoded.
Jika PublicURL, dipasangkan dengan properti
url
untuk memberikan lokasi batasan. Lokasi harus dapat diakses publik.Peringatan
Jangan gunakan SAS URI atau token di
url
atau apa pun yang dapat mengekspos rahasia.
- Tidak dapat digunakan dengan
- namespace (opsional)
- Sebuah array pada namespace layanan Kubernetes untuk membatasi kebijakan.
- Nilai kosong atau hilang menyebabkan evaluasi kebijakan menyertakan semua namespace, kecuali yang ditentukan dalam excludedNamespaces.
- excludedNamespaces (diperlukan)
- Sebuah array pada namespace layanan Kubernetes untuk pengecualian dari evaluasi kebijakan.
- labelSelector (wajib)
- Objek yang menyertakan properti matchLabels (objek) dan matchExpression (array) untuk memungkinkan penentuan sumber Kubernetes mana yang akan disertakan untuk evaluasi kebijakan yang cocok dengan label dan pemilih yang disediakan.
- Nilai yang kosong atau hilang menyebabkan evaluasi kebijakan menyertakan semua label dan pemilih, kecuali namespace layanan yang ditentukan dalam excludedNamespaces.
- apiGroups (diperlukan saat menggunakan templateInfo)
- Array yang menyertakan grup API untuk dicocokkan. Array kosong (
[""]
) adalah grup API inti. - Tidak diizinkan untuk mendefinisikan
["*"]
pada apiGroups.
- Array yang menyertakan grup API untuk dicocokkan. Array kosong (
- jenis (diperlukan saat menggunakan templateInfo)
- Array yang menyertakan jenis objek Kubernetes untuk membatasi evaluasi.
- Tidak diizinkan untuk mendefinisikan
["*"]
pada jenis.
- nilai (opsional)
- Menentukan parameter dan nilai apa pun untuk diteruskan ke Batasan. Setiap nilai harus ada di CRD templat Batasan.
Contoh tolak
Contoh 1: Menggunakan efek tolak untuk mode Resource Manager.
"then": {
"effect": "deny"
}
Contoh 2: Menggunakan efek tolak untuk mode Resource Provider Microsoft.Kubernetes.Data
. Informasi tambahan di details.templateInfo mendeklarasikan penggunaan PublicURL dan menetapkan url
ke lokasi templat Batasan untuk digunakan di Kubernetes guna membatasi gambar kontainer yang diizinkan.
"then": {
"effect": "deny",
"details": {
"templateInfo": {
"sourceType": "PublicURL",
"url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
},
"values": {
"imageRegex": "[parameters('allowedContainerImagesRegex')]"
},
"apiGroups": [""],
"kinds": ["Pod"]
}
}
DenyAction
DenyAction
digunakan untuk memblokir permintaan berdasarkan tindakan yang dimaksudkan ke sumber daya dalam skala besar. Satu-satunya tindakan yang didukung hari ini adalah DELETE
. Efek dan nama tindakan ini membantu mencegah penghapusan sumber daya penting yang tidak disengaja.
Evaluasi DenyAction
Saat panggilan permintaan dengan nama tindakan yang berlaku dan cakupan yang ditargetkan dikirimkan, denyAction
mencegah permintaan berhasil. Permintaan dikembalikan sebagai 403 (Forbidden)
. Di portal, Terlarang dapat dilihat sebagai status pada penyebaran yang dicegah oleh penugasan kebijakan.
Microsoft.Authorization/policyAssignments
, , Microsoft.Authorization/denyAssignments
Microsoft.Blueprint/blueprintAssignments
, Microsoft.Resources/deploymentStacks
, Microsoft.Resources/subscriptions
dan Microsoft.Authorization/locks
semuanya dikecualikan dari penegakan DenyAction untuk mencegah skenario penguncian.
Penghapusan langganan
Kebijakan tidak memblokir penghapusan sumber daya yang terjadi selama penghapusan langganan.
Penghapusan grup sumber daya
Kebijakan mengevaluasi sumber daya yang mendukung lokasi dan tag terhadap DenyAction
kebijakan selama penghapusan grup sumber daya. Hanya kebijakan yang diatur cascadeBehaviors
ke deny
dalam aturan kebijakan yang memblokir penghapusan grup sumber daya. Kebijakan tidak memblokir penghapusan sumber daya yang tidak mendukung lokasi dan tag atau kebijakan apa pun dengan mode:all
.
Penghapusan kaskade
Penghapusan kaskade terjadi saat menghapus sumber daya induk secara implisit menghapus semua sumber daya anaknya. Kebijakan tidak memblokir penghapusan sumber daya anak saat tindakan penghapusan menargetkan sumber daya induk. Misalnya, Microsoft.Insights/diagnosticSettings
adalah sumber daya anak dari Microsoft.Storage/storageaccounts
. denyAction
Jika kebijakan menargetkan Microsoft.Insights/diagnosticSettings
, panggilan penghapusan ke pengaturan diagnostik (turunan) akan gagal, tetapi penghapusan ke akun penyimpanan (induk) akan secara implisit menghapus pengaturan diagnostik (anak).
Tabel ini menjelaskan apakah sumber daya akan dilindungi dari penghapusan mengingat sumber daya yang berlaku untuk kebijakan denyAction yang ditetapkan dan cakupan yang ditargetkan dari panggilan DELETE. Dalam konteks tabel ini, sumber daya terindeks adalah sumber daya yang mendukung tag dan lokasi dan sumber daya yang tidak diindeks adalah sumber daya yang tidak mendukung tag atau lokasi. Untuk informasi selengkapnya tentang sumber daya terindeks dan tidak terindeks, mode definisi referensi. Sumber daya anak adalah sumber daya yang hanya ada dalam konteks sumber daya lain. Misalnya, sumber daya ekstensi komputer virtual adalah anak dari komputer virtual, yang merupakan sumber daya induk.
Entitas sedang dihapus | Entitas yang berlaku untuk kondisi kebijakan | Tindakan yang diambil |
---|---|---|
Sumber daya | Sumber daya | Protected |
Langganan | Sumber daya | Dihapus |
Grup sumber daya | Sumber daya terindeks | Tergantung pada cascadeBehaviors |
Grup sumber daya | Sumber daya yang tidak diindeks | Dihapus |
Sumber daya anak | Sumber daya induk | Induk dilindungi; anak dihapus |
Sumber daya induk | Sumber daya anak | Dihapus |
Properti DenyAction
Properti detail efek DenyAction memiliki semua subproperti yang menentukan tindakan dan perilaku.
- actionNames (diperlukan)
- Array yang menentukan tindakan apa yang harus dicegah untuk dijalankan.
- Nama tindakan yang didukung adalah:
delete
.
- cascadeBehaviors (opsional)
- Objek yang menentukan perilaku apa yang akan diikuti ketika sumber daya dihapus secara implisit oleh penghapusan grup sumber daya.
- Hanya didukung dalam definisi kebijakan dengan mode yang diatur ke
indexed
. - Nilai yang diizinkan adalah:
allow
ataudeny
. - Nilai default
deny
.
Contoh DenyAction
Contoh: Tolak setiap panggilan penghapusan yang menargetkan akun database yang memiliki lingkungan tag yang sama dengan prod. Karena perilaku kaskade diatur ke tolak, blokir panggilan apa pun DELETE
yang menargetkan grup sumber daya dengan akun database yang berlaku.
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.DocumentDb/accounts"
},
{
"field": "tags.environment",
"equals": "prod"
}
]
},
"then": {
"effect": "denyAction",
"details": {
"actionNames": [ "delete" ],
"cascadeBehaviors": { "resourceGroup": "deny" }
}
}
}
DeployIfNotExists
Seperti halnya AuditIfNotExists, definisi kebijakan DeployIfNotExists menjalankan penerapan templat saat kondisi terpenuhi. Penetapan kebijakan dengan efek yang ditetapkan sebagai DeployIfNotExists memerlukan identitas terkelola untuk melakukan remediasi.
Catatan
Templat bertumpuk didukung dengan deployIfNotExists, tetapi templat yang ditautkan saat ini tidak didukung.
Evaluasi DeployIfNotExists
Evaluasi DeployIfNotExists berjalan setelah penundaan yang dapat dikonfigurasi saat Resource Provider menangani pembuatan atau pembaruan langganan atau permintaan sumber daya dan telah mengembalikan kode status berhasil. Penyebaran templat terjadi jika tidak ada sumber daya terkait atau jika sumber daya yang ditentukan oleh ExistenceCondition tidak mengevaluasi ke true. Durasi penyebaran tergantung pada kompleksitas sumber daya yang disertakan dalam templat.
Selama siklus evaluasi, definisi kebijakan dengan efek DeployIfNotExists yang cocok dengan sumber daya ditandai sebagai tidak patuh, tetapi tidak ada tindakan yang diambil pada sumber daya tersebut. Sumber daya yang tidak sesuai dapat diremediasi dengan tugas remediasi.
Properti DeployIfNotExists
Properti detail efek DeployIfNotExists memiliki semua subproperti yang menentukan sumber daya terkait yang cocok dan penyebaran templat untuk dijalankan.
- Jenis (diperlukan)
- Menentukan jenis sumber daya terkait yang cocok.
- Jika type adalah jenis sumber daya di bawah sumber daya kondisi if, kueri kebijakan untuk sumber daya type ini dalam cakupan sumber daya yang dievaluasi. Jika tidak, kueri kebijakan dalam grup sumber daya atau langganan yang sama dengan sumber daya yang dievaluasi bergantung pada existenceScope.
- Nama (opsional)
- Menentukan nama persis sumber daya yang cocok dan menyebabkan kebijakan mengambil satu sumber daya tertentu, bukan semua sumber daya dari jenis yang ditentukan.
- Ketika nilai kondisi untuk if.field.type dan then.details.type cocok, maka Nama menjadi diperlukan dan harus
[field('name')]
, atau[field('fullName')]
untuk sumber daya anak.
Catatan
Segmen Jenis dan Nama dapat digabungkan untuk mengambil sumber daya berlapis secara generis.
Untuk mengambil sumber daya tertentu, Anda dapat menggunakan "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
dan "name": "parentResourceName/nestedResourceName"
.
Untuk mengambil kumpulan sumber daya berlapis, karakter ?
kartubebas dapat disediakan sebagai pengganti segmen nama belakang. Misalnya, "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
dan "name": "parentResourceName/?"
. Ini dapat dikombinasikan dengan fungsi bidang untuk mengakses sumber daya yang terkait dengan sumber daya yang dievaluasi, seperti "name": "[concat(field('name'), '/?')]"
."
ResourceGroupName (opsional)
- Memungkinkan pencocokan sumber daya terkait berasal dari grup sumber daya yang berbeda.
- Tidak berlaku jika jenis adalah sumber daya yang akan berada di bawah sumber daya kondisi jika.
- Defaultnya adalah grup sumber daya dari sumber daya kondisijika.
- Jika penyebaran templat dijalankan, penyebaran templat akan diterapkan dalam grup sumber daya dari nilai ini.
ExistenceScope (opsional)
- Nilai yang diperbolehkan adalah Langganan dan ResourceGroup.
- Mengatur lingkup tempat mengambil sumber daya terkait untuk dicocokkan.
- Tidak berlaku jika jenis adalah sumber daya yang akan berada di bawah sumber daya kondisi jika.
- Untuk ResourceGroup, akan membatasi grup sumber daya di ResourceGroupName jika ditentukan. Jika ResourceGroupName tidak ditentukan, akan membatasi grup sumber daya sumber daya kondisi jika , yang merupakan perilaku default.
- Untuk Langganan, kueri seluruh langganan untuk sumber daya terkait. Lingkup penetapan harus ditetapkan pada langganan atau yang lebih tinggi untuk evaluasi yang tepat.
- Defaultnya adalah ResourceGroup.
EvaluationDelay (opsional)
- Menentukan kapan keberadaan sumber daya terkait harus dievaluasi. Penundaan hanya digunakan untuk evaluasi yang merupakan hasil dari permintaan pembuatan atau pembaruan sumber daya.
- Nilai yang diizinkan adalah
AfterProvisioning
,AfterProvisioningSuccess
,AfterProvisioningFailure
, atau durasi ISO 8601 antara 0 dan 360 menit. - Nilai AfterProvisioning memeriksa hasil provisi sumber daya yang dievaluasi dalam kondisi IF aturan kebijakan.
AfterProvisioning
berjalan setelah provisi selesai, terlepas apapun hasilnya. Jika provisi membutuhkan waktu lebih dari 6 jam, provisi tersebut dianggap sebagai gagal saat menentukan penundaan evaluasi AfterProvisioning. - Defaultnya adalah
PT10M
(10 menit). - Menentukan penundaan evaluasi panjang dapat menyebabkan status kepatuhan sumber daya yang direkam tidak diperbarui hingga pemicu evaluasi berikutnya.
ExistenceCondition (opsional)
- Jika tidak ditentukan, sumber daya jenis terkait memenuhi efek dan tidak memicu audit.
- Menggunakan bahasa yang sama dengan aturan kebijakan untuk kondisi if, tetapi dievaluasi terhadap setiap sumber daya terkait satu per satu.
- Jika ada sumber daya terkait yang cocok yang dievaluasi ke true, efeknya puas dan tidak memicu audit.
- Dapat menggunakan [field()] untuk memeriksa kesetaraan dengan nilai dalam kondisi if.
- Misalnya, dapat digunakan untuk memvalidasi bahwa sumber daya induk (dalam kondisi jika) berada di lokasi sumber daya yang sama dengan sumber daya terkait yang cocok.
roleDefinitionIds (diperlukan)
- Properti ini harus menyertakan serangkaian untai (karakter) yang cocok dengan ID peran kontrol akses berbasis peran yang dapat diakses oleh langganan. Untuk informasi selengkapnya, lihat remediasi - mengonfigurasi definisi kebijakan.
DeploymentScope (opsional)
- Nilai yang diperbolehkan adalah Langganan dan ResourceGroup.
- Menyiapkan jenis penyebaran yang akan dipicu. Langganan menunjukkan penyebaran di tingkat langganan, ResourceGroup menunjukkan penyebaran ke grup sumber daya.
- Properti lokasi harus ditentukan dalam Penyebaran saat menggunakan penyebaran tingkat langganan.
- Defaultnya adalah ResourceGroup.
Penyebaran (diperlukan)
- Properti ini harus menyertakan penyebaran templat lengkap karena akan diteruskan ke PUT API
Microsoft.Resources/deployments
. Untuk informasi selengkapnya, lihat REST API Penyebaran. Microsoft.Resources/deployments
berlapis dalam templat harus menggunakan nama unik untuk menghindari pertentangan antara beberapa evaluasi kebijakan. Nama penyebaran induk dapat digunakan sebagai bagian dari nama penyebaran berlapis melalui[concat('NestedDeploymentName-', uniqueString(deployment().name))]
.
Catatan
Semua fungsi di dalam properti Penyebaran dievaluasi sebagai komponen templat, bukan kebijakan. Pengecualiannya adalah properti parameter yang meneruskan nilai dari kebijakan ke templat. Nilai di bagian ini di bawah nama parameter templat digunakan untuk melakukan passing nilai ini (lihat fullDbName dalam contoh DeployIfNotExists).
- Properti ini harus menyertakan penyebaran templat lengkap karena akan diteruskan ke PUT API
Contoh DeployIfNotExists
Contoh: Mengevaluasi database SQL Server untuk menentukan apakah transparentDataEncryption
diaktifkan.
Jika tidak, maka penyebaran untuk mengaktifkan dijalankan.
"if": {
"field": "type",
"equals": "Microsoft.Sql/servers/databases"
},
"then": {
"effect": "deployIfNotExists",
"details": {
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"name": "current",
"evaluationDelay": "AfterProvisioning",
"roleDefinitionIds": [
"/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
"/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
],
"existenceCondition": {
"field": "Microsoft.Sql/transparentDataEncryption.status",
"equals": "Enabled"
},
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"fullDbName": {
"type": "string"
}
},
"resources": [{
"name": "[concat(parameters('fullDbName'), '/current')]",
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"apiVersion": "2014-04-01",
"properties": {
"status": "Enabled"
}
}]
},
"parameters": {
"fullDbName": {
"value": "[field('fullName')]"
}
}
}
}
}
}
Nonaktif
Efek ini berguna untuk menguji situasi atau ketika definisi kebijakan telah melakukan parameter pada efek. Fleksibilitas ini memungkinkan untuk menonaktifkan satu tugas, bukan menonaktifkan semua tugas kebijakan tersebut.
Catatan
Definisi kebijakan yang menggunakan efek Dinonaktifkan memiliki status kepatuhan default Sesuai setelah penugasan.
Alternatif untuk efek Dinonaktifkan adalah enforcementMode, yang diatur pada penetapan kebijakan. Ketika enforcementModeDinonaktifkan, sumber daya masih dievaluasi. Pencatatan, seperti Log aktivitas, dan efek kebijakan tidak terjadi. Untuk informasi selengkapnya, lihat penugasan kebijakan - mode pemberlakuan.
Manual
Efek baru manual
memungkinkan Anda membuktikan sendiri kepatuhan sumber daya atau cakupan. Tidak seperti definisi kebijakan lain yang secara aktif memindai evaluasi, efek Manual memungkinkan perubahan manual pada status kepatuhan. Untuk mengubah kepatuhan sumber daya atau cakupan yang ditargetkan oleh kebijakan manual, Anda perlu membuat pengesahan. Praktik terbaik adalah merancang kebijakan manual yang menargetkan cakupan yang menentukan batas sumber daya yang kepatuhannya perlu diuji.
Catatan
Dukungan untuk kebijakan manual tersedia melalui berbagai inisiatif kepatuhan peraturan Microsoft Defender untuk Cloud. Jika Anda adalah pelanggan tingkat Premium Microsoft Defender untuk Cloud, lihat gambaran umum pengalaman mereka.
Saat ini, inisiatif kebijakan peraturan berikut mencakup definisi kebijakan yang berisi efek manual:
- FedRAMP Tinggi
- FedRAMP Medium
- HIPAA
- HITRUST
- ISO 27001
- Microsoft CIS 1.3.0
- Microsoft CIS 1.4.0
- NIST SP 800-171 Rev. 2
- NIST SP 800-53 Rev. 4
- NIST SP 800-53 Rev. 5
- PCI DSS 3.2.1
- PCI DSS 4.0
- SOC TSP
- SWIFT CSP CSCF v2022
Contoh berikut menargetkan langganan Azure dan menetapkan status kepatuhan awal ke Unknown
.
{
"if": {
"field": "type",
"equals": "Microsoft.Resources/subscriptions"
},
"then": {
"effect": "manual",
"details": {
"defaultState": "Unknown"
}
}
}
Properti defaultState
memiliki tiga nilai yang mungkin:
- Tidak diketahui: Status awal dan default sumber daya yang ditargetkan.
- Sesuai: Sumber daya sesuai dengan standar kebijakan manual Anda
- Tidak patuh: Sumber daya tidak sesuai dengan standar kebijakan manual Anda
Mesin kepatuhan Azure Policy mengevaluasi semua sumber daya yang berlaku ke status default yang ditentukan dalam definisi (Unknown
jika tidak ditentukan). Status Unknown
kepatuhan menunjukkan bahwa Anda harus membuktikan status kepatuhan sumber daya secara manual. Jika status efek tidak ditentukan, status tersebut default ke Unknown
. Status Unknown
kepatuhan menunjukkan bahwa Anda harus membuktikan sendiri status kepatuhan.
Cuplikan layar berikut menunjukkan bagaimana penetapan kebijakan manual dengan Unknown
status muncul di portal Azure:
Saat definisi kebijakan dengan manual
efek ditetapkan, Anda dapat mengatur status kepatuhan sumber daya atau cakupan yang ditargetkan melalui pengesahan kustom. Pengesahan juga memungkinkan Anda untuk memberikan informasi tambahan opsional melalui bentuk metadata dan tautan ke bukti yang menyertai status kepatuhan yang dipilih. Orang yang menetapkan kebijakan manual dapat merekomendasikan lokasi penyimpanan default untuk bukti dengan menentukan evidenceStorages
properti metadata penetapan kebijakan.
Mengubah
Mengubah digunakan untuk menambahkan, memperbarui, atau menghapus properti atau tag pada langganan atau sumber daya selama pembuatan atau pembaruan. Contoh umumnya adalah memperbarui tag pada sumber daya seperti costCenter. Sumber daya yang tidak sesuai dapat diremediasi dengan tugas remediasi. Satu aturan Mengubah dapat memiliki sejumlah operasi. Penetapan kebijakan dengan efek yang ditetapkan sebagai Modifikasi memerlukan identitas terkelola untuk melakukan remediasi.
Operasi berikut didukung oleh Mengubah:
- Menambahkan, mengganti, atau menghapus tag sumber daya. Untuk tag, kebijakan Modifikasi harus memiliki mode yang diatur ke
indexed
kecuali sumber daya target adalah grup sumber daya. - Menambahkan atau mengganti nilai jenis identitas terkelola (
identity.type
) komputer virtual dan Virtual Machine Scale Sets. - Menambahkan atau mengganti nilai alias tertentu.
- Menggunakan
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }
di Azure PowerShell 4.6.0 atau yang lebih tinggi untuk mendapatkan daftar alias yang dapat digunakan dengan Modifikasi.
- Menggunakan
Penting
Jika Anda mengelola tag, sebaiknya gunakan Ubah alih-alih Tambahkan karena Modifikasi menyediakan lebih banyak jenis operasi dan kemampuan untuk memulihkan sumber daya yang ada. Namun, Tambah disarankan jika Anda tidak dapat membuat identitas terkelola atau Mengubahi belum mendukung alias untuk properti sumber daya.
Evaluasi mengubah
Mengubah mengevaluasi sebelum permintaan diproses oleh Resource Provider selama pembuatan atau pembaruan sumber daya. Operasi Mengubah diterapkan ke konten permintaan saat kondisi jika dari aturan kebijakan terpenuhi. Setiap operasi Mengubah dapat menentukan kondisi yang menentukan kapan efek ini diterapkan. Operasi dengan evaluasi kondisi palsu dilewati.
Saat alias ditentukan, pemeriksaan tambahan berikut dilakukan untuk memastikan bahwa operasi Mengubah tidak mengubah konten permintaan dengan menyebabkan penyedia sumber daya menolaknya:
- Properti tempat peta alias ditandai sebagai 'Dapat Diubah' dalam versi API permintaan.
- Jenis token dalam operasi Mengubah cocok dengan jenis token yang diharapkan untuk properti dalam versi API permintaan.
Jika salah satu dari pemeriksaan ini gagal, evaluasi kebijakan akan kembali ke conflictEffect yang ditentukan.
Penting
Definisi Modifikasi yang menyertakan alias disarankan untuk menggunakan efek konflikaudit guna menghindari permintaan yang gagal menggunakan versi API ketika properti yang dipetakan tidak 'Dapat Diubah’. Jika alias yang sama berperilaku berbeda antara versi API, operasi mengubah bersyarat dapat digunakan untuk menentukan operasi mengubah yang digunakan untuk setiap versi API.
Ketika definisi kebijakan yang menggunakan efek Mengubah dijalankan sebagai bagian dari siklus evaluasi, hal ini tidak membuat perubahan pada sumber daya yang sudah ada. Sebaliknya, hal ini menandai sumber daya apa pun yang memenuhi kondisi jika sebagai tidak patuh.
Properti mengubah
Properti detail efek Mengubah memiliki semua subproperi yang menentukan izin yang diperlukan untuk perbaikan dan operasi yang digunakan untuk menambahkan, memperbarui, atau menghapus nilai tag.
- roleDefinitionIds (diperlukan)
- Properti ini harus menyertakan serangkaian untai (karakter) yang cocok dengan ID peran kontrol akses berbasis peran yang dapat diakses oleh langganan. Untuk informasi selengkapnya, lihat remediasi - mengonfigurasi definisi kebijakan.
- Peran yang ditentukan harus mencakup semua operasi yang diberikan kepada peran Kontributor.
- conflictEffect (opsional)
- Menentukan definisi kebijakan mana yang "menang" jika lebih dari satu definisi kebijakan mengubah properti yang sama atau ketika operasi mengubah tidak berfungsi pada alias yang ditentukan.
- Untuk sumber daya baru atau yang diperbarui, definisi kebijakan dengan tolak diutamakan. Definisi kebijakan dengan audit melewati semua operasi. Jika lebih dari satu definisi kebijakan memiliki efek tolak, permintaan ditolak sebagai konflik. Jika semua definisi kebijakan memiliki audit, maka tidak ada operasi definisi kebijakan yang bertentangan yang diproses.
- Untuk sumber daya yang ada, jika lebih dari satu definisi kebijakan memiliki efek tolak, status kepatuhannya adalah Konflik. Jika satu atau lebih sedikit definisi kebijakan memiliki tolak efek, setiap penugasan mengembalikan status kepatuhan yang Tidak patuh.
- Nilai yang tersedia: audit,, tolak. dinonaktifkan.
- Nilai defaultnya adalah tolak.
- Menentukan definisi kebijakan mana yang "menang" jika lebih dari satu definisi kebijakan mengubah properti yang sama atau ketika operasi mengubah tidak berfungsi pada alias yang ditentukan.
- operasi (diperlukan)
- Array semua operasi tag yang akan diselesaikan pada sumber daya yang cocok.
- Properti:
- operasi (diperlukan)
- Menentukan tindakan apa yang harus diambil pada sumber daya yang cocok. Opsinya adalah: addOrReplace, Tambahkan, Hapus. Tambah berperilaku mirip dengan efek Tambah.
- bidang (diperlukan)
- Tag untuk menambahkan, mengganti, atau menghapus. Nama tag harus mematuhi konvensi penamaan yang sama untuk bidang lain.
- nilai (opsional)
- Nilai untuk mengatur tag ke.
- Properti ini diperlukan jika operasi adalah addOrReplace atau Tambahkan.
- kondisi (opsional)
- Untai (karakter) yang berisi ekspresi bahasa Azure Policy dengan Fungsi kebijakan yang dievaluasi ke true atau false.
- Tidak mendukung fungsi Azure Policy berikut:
field()
,resourceGroup()
,subscription()
.
- operasi (diperlukan)
Operasi mengubah
Array properti operasi memungkinkan untuk mengubah beberapa tag dengan cara yang berbeda dari satu definisi kebijakan. Setiap operasi terdiri dari operasi,, bidang, dan properti nilai. Operasi menentukan apa yang dilakukan tugas remediasi pada tag, bidang menentukan tag mana yang diubah, dan nilai menentukan pengaturan baru untuk tag tersebut. Contoh berikut membuat perubahan tag berikut:
environment
Mengatur tag ke "Uji" meskipun sudah ada dengan nilai yang berbeda.- Menghapus tag
TempResource
. - Menyetel
Dept
tag ke parameter kebijakan DeptName yang dikonfigurasi pada penugasan kebijakan.
"details": {
...
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
},
{
"operation": "Remove",
"field": "tags['TempResource']",
},
{
"operation": "addOrReplace",
"field": "tags['Dept']",
"value": "[parameters('DeptName')]"
}
]
}
Properti operasi memiliki opsi berikut:
Operasi | Deskripsi |
---|---|
addOrReplace | Menambahkan properti atau tag dan nilai yang ditentukan ke sumber daya, meskipun properti atau tag sudah ada dengan nilai yang berbeda. |
Tambahkan | Menambahkan properti atau tag dan nilai yang ditentukan ke sumber daya. |
Hapus | Menghapus properti atau tag yang ditentukan dari sumber daya. |
Contoh mengubah
Contoh 1: Tambahkan environment
tag dan ganti environment
tag yang ada dengan "Uji":
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
}
]
}
}
Contoh 2: Hapus env
tag dan tambahkan environment
tag atau ganti environment
tag yang ada dengan nilai parameter:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"conflictEffect": "deny",
"operations": [
{
"operation": "Remove",
"field": "tags['env']"
},
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "[parameters('tagValue')]"
}
]
}
}
Contoh 3: Pastikan bahwa akun penyimpanan tidak mengizinkan akses publik blob, operasi Ubah hanya diterapkan saat mengevaluasi permintaan dengan versi API yang lebih besar atau sama dengan 2019-04-01
:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
],
"conflictEffect": "audit",
"operations": [
{
"condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
"operation": "addOrReplace",
"field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
"value": false
}
]
}
}
Bermutasi (pratinjau)
Mutasi digunakan dalam Azure Policy untuk Kubernetes untuk memulihkan komponen kluster AKS, seperti pod. Efek ini khusus untuk definisi mode kebijakan Microsoft.Kubernetes.Datasaja.
Untuk mempelajari lebih lanjut, buka Memahami Azure Policy untuk kluster Kubernetes.
Membisukan properti
- mutationInfo (opsional)
- Tidak dapat digunakan dengan
constraint
, ,constraintTemplate
,apiGroups
ataukinds
. - Tidak dapat diparameterkan.
- sourceType (diperlukan)
- Menentukan jenis sumber untuk batasan. Nilai yang diizinkan: PublicURL atau Base64Encoded.
- Jika PublicURL, dipasangkan dengan properti
url
untuk menyediakan lokasi templat mutasi. Lokasi harus dapat diakses publik.Peringatan
Jangan gunakan SAS URI atau token di
url
atau apa pun yang dapat mengekspos rahasia.
- Tidak dapat digunakan dengan
Definisi kebijakan lapisan
Sumber daya dapat dipengaruhi oleh beberapa penugasan. Penugasan ini mungkin berada pada cakupan yang sama atau pada cakupan yang berbeda. Masing-masing penugasan ini juga cenderung memiliki efek yang berbeda yang ditentukan. Kondisi dan efek untuk setiap kebijakan dievaluasi secara independen. Contohnya:
- Kebijakan 1
- Membatasi lokasi sumber daya ke
westus
- Ditetapkan ke langganan A
- Efek tolak
- Membatasi lokasi sumber daya ke
- Kebijakan 2
- Membatasi lokasi sumber daya ke
eastus
- Ditugaskan ke grup sumber daya B dalam langganan A
- Efek audit
- Membatasi lokasi sumber daya ke
Penyiapan ini akan memberikan hasil berikut:
- Sumber daya apa pun yang sudah berada dalam grup sumber daya B sesuai
eastus
dengan kebijakan 2 dan tidak mematuhi kebijakan 1 - Sumber daya apa pun yang sudah ada di grup sumber daya B yang tidak masuk
eastus
tidak sesuai dengan kebijakan 2 dan tidak mematuhi kebijakan 1 jika tidakwestus
- Sumber daya baru apa pun dalam langganan A tidak masuk ditolak
westus
oleh kebijakan 1 - Setiap sumber daya baru dalam langganan A dan grup sumber daya B di
westus
dibuat dan tidak mematuhi kebijakan 2
Jika kebijakan 1 dan kebijakan 2 berpengaruh pada efek tolak, situasi berubah menjadi:
- Sumber daya apa pun yang sudah ada di
eastus
grup sumber daya B tidak sesuai dengan kebijakan 2 - Sumber daya apa pun yang sudah ada di
westus
grup sumber daya B tidak sesuai dengan kebijakan 1 - Sumber daya baru apa pun dalam langganan A tidak masuk ditolak
westus
oleh kebijakan 1 - Sumber daya baru dalam grup sumber daya B langganan A ditolak
Setiap penugasan dievaluasi satu per satu. Dengan demikian, tidak ada kesempatan bagi sumber daya untuk menyelinap melalui celah dari perbedaan ruang lingkup. Hasil bersih dari definisi kebijakan lapisan dianggap kumulatif yang paling ketat. Misalnya, jika kebijakan 1 dan 2 memiliki efek tolak, sumber daya akan diblokir oleh definisi kebijakan yang tumpang tindih dan bertentangan. Jika Anda masih memerlukan sumber daya untuk dibuat dalam lingkup target, tinjau pengecualian pada setiap tugas untuk memvalidasi penetapan kebijakan yang tepat memengaruhi cakupan yang tepat.
Langkah berikutnya
- Tinjau sampel pada sampel Azure Policy.
- Tinjau struktur definisi Azure Policy.
- Memahami cara membuat kebijakan secara terprogram.
- Pelajari cara mendapatkan data kepatuhan.
- Pelajari cara memulihkan sumber daya yang tidak sesuai syarat.
- Tinjau apa itu grup manajemen Atur sumber daya Anda dengan grup manajemen Azure.