Struktur penetapan Azure Policy
Penetapan kebijakan menentukan sumber daya mana yang akan dievaluasi oleh definisi kebijakan atau inisiatif. Selanjutnya, penetapan kebijakan dapat menentukan nilai parameter untuk grup sumber daya tersebut pada waktu penugasan, sehingga memungkinkan untuk menggunakan kembali definisi kebijakan yang membahas properti sumber daya yang sama dengan kebutuhan yang berbeda untuk kepatuhan.
Anda menggunakan JavaScript Object Notation (JSON) untuk membuat penugasan kebijakan. Penetapan kebijakan berisi elemen untuk:
- cakupan
- ID dan versi definisi kebijakan
- nama tampilan
- description
- metadata
- pemilih sumber daya
- Mengabaikan
- mode penegakan
- cakupan yang dikecualikan
- pesan ketidakpatuhan
- parameter
- identitas
Misalnya, JSON berikut menunjukkan contoh permintaan penetapan kebijakan dalam mode DoNotEnforce dengan parameter:
{
"properties": {
"displayName": "Enforce resource naming rules",
"description": "Force resource names to begin with DeptA and end with -LC",
"definitionVersion": "1.*.*",
"metadata": {
"assignedBy": "Cloud Center of Excellence"
},
"enforcementMode": "DoNotEnforce",
"notScopes": [],
"policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
"nonComplianceMessages": [
{
"message": "Resource names must start with 'DeptA' and end with '-LC'."
}
],
"parameters": {
"prefix": {
"value": "DeptA"
},
"suffix": {
"value": "-LC"
}
},
"identity": {
"type": "SystemAssigned"
},
"resourceSelectors": [],
"overrides": []
}
}
Cakupan
Cakupan yang digunakan untuk waktu pembuatan sumber daya penugasan adalah driver utama penerapan sumber daya. Untuk informasi selengkapnya tentang cakupan penugasan, lihat
ID dan versi definisi kebijakan (pratinjau)
Bidang ini harus berupa nama jalur lengkap penugasan kebijakan atau penugasan inisiatif.
policyDefinitionId
adalah untai (karakter) dan bukan array. Konten terbaru dari definisi atau inisiatif kebijakan yang ditetapkan diambil setiap kali penetapan kebijakan dievaluasi. Disarankan bahwa jika beberapa kebijakan sering ditetapkan bersama-sama, untuk menggunakan inisiatif sebagai gantinya.
Untuk definisi dan inisiatif bawaan, Anda dapat menggunakan definisi dan inisiatif khusus definitionVersion
yang akan dinilai. Secara default, versi akan diatur ke versi utama terbaru dan mengotomatiskan perubahan minor dan patch.
Untuk mengotomatiskan perubahan kecil definisi, nomor versinya adalah #.*.*
. Kartubebas mewakili penyerapan otomatis pembaruan.
Untuk menyematkan ke jalur versi minor, format versinya adalah #.#.*
.
Semua perubahan patch harus diinjeksi otomatis untuk tujuan keamanan. Perubahan patch terbatas pada perubahan teks dan skenario pecah kaca.
Nama tampilan dan deskripsi
Anda menggunakan displayName dan deskripsi untuk mengidentifikasi pembebasan kebijakan dan memberikan konteks untuk penggunaannya dengan sumber daya tertentu. displayName memiliki panjang maksimum 128 karakter dan description memiliki panjang maksimum 512 karakter.
Metadata
Properti opsional metadata
menyimpan informasi tentang definisi kebijakan. Pelanggan dapat menentukan properti dan nilai apa pun yang berguna bagi organisasi mereka di metadata
. Namun, ada beberapa properti umum yang digunakan oleh Azure Policy. Setiap metadata
properti memiliki batas 1.024 karakter.
Properti metadata umum
assignedBy
(string): Nama ramah kepala keamanan yang membuat tugas.createdBy
(string): GUID kepala keamanan yang membuat tugas.createdOn
(string): Format Universal ISO 8601 DateTime dari waktu pembuatan tugas.updatedBy
(string): Nama ramah kepala keamanan yang memperbarui tugas, jika ada.updatedOn
(string): Format Universal ISO 8601 DateTime dari waktu pembuatan tugas, jika ada.
Skenario properti metadata tertentu
parameterScopes
(objek): Kumpulan pasangan kunci-nilai tempat kunci cocok dengan nama parameter strongType yang dikonfigurasi, dan nilai menentukan lingkup sumber daya yang digunakan di Portal untuk menyediakan daftar sumber daya yang tersedia dengan mencocokkan strongType. Portal menetapkan nilai ini jika cakupannya berbeda dari lingkup tugas. Jika diset, edit penetapan kebijakan di Portal secara otomatis mengatur cakupan parameter ke nilai ini. Namun, cakupan tidak terkunci pada nilai, dan dapat diubah ke lingkup lain.Contoh
parameterScopes
berikut adalah untuk parameter strongType bernamabackupPolicyId
yang mengatur cakupan untuk pilihan sumber daya saat penetapan diedit di Portal."metadata": { "parameterScopes": { "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}" } }
evidenceStorages
(objek): Akun penyimpanan default yang direkomendasikan yang harus digunakan untuk menyimpan bukti pengesahan terhadap penetapan kebijakan denganmanual
efek. PropertidisplayName
adalah nama akun penyimpanan. PropertievidenceStorageAccountID
adalah ID sumber daya akun penyimpanan. PropertievidenceBlobContainer
adalah nama kontainer blob tempat Anda berencana untuk menyimpan bukti.{ "properties": { "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.", "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}", "metadata": { "evidenceStorages": [ { "displayName": "Default evidence storage", "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}", "evidenceBlobContainer": "evidence-container" } ] } } }
Pemilih sumber daya
Properti opsional resourceSelectors
memfasilitasi praktik penyebaran aman (SDP) dengan memungkinkan Anda meluncurkan penetapan kebijakan secara bertahap berdasarkan faktor-faktor seperti lokasi sumber daya, jenis sumber daya, atau apakah sumber daya memiliki lokasi. Saat pemilih sumber daya digunakan, Azure Policy hanya akan mengevaluasi sumber daya yang berlaku untuk spesifikasi yang dibuat di pemilih sumber daya.
Pemilih sumber daya juga dapat digunakan untuk mempersempit cakupan pengecualian dengan cara yang sama.
Dalam contoh skenario berikut, penetapan kebijakan baru dievaluasi hanya jika lokasi sumber daya adalah US Timur atau AS Barat.
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
"definitionVersion": "1.1.*",
"resourceSelectors": [
{
"name": "SDPRegions",
"selectors": [
{
"kind": "resourceLocation",
"in": [ "eastus", "westus" ]
}
]
}
]
},
"systemData": { ... },
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
"type": "Microsoft.Authorization/policyAssignments",
"name": "ResourceLimit"
}
Ketika Anda siap untuk memperluas cakupan evaluasi untuk kebijakan Anda, Anda hanya perlu memperbarui penugasan. Contoh berikut menunjukkan penetapan kebijakan kami dengan dua wilayah Azure lagi yang ditambahkan ke pemilih SDPRegions . Perhatikan, dalam contoh ini, SDP berarti Praktik Penyebaran Aman:
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
"definitionVersion": "1.1.*",
"resourceSelectors": [
{
"name": "SDPRegions",
"selectors": [
{
"kind": "resourceLocation",
"in": [ "eastus", "westus", "centralus", "southcentralus" ]
}
]
}
]
},
"systemData": { ... },
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
"type": "Microsoft.Authorization/policyAssignments",
"name": "ResourceLimit"
}
Pemilih sumber daya memiliki properti berikut:
name
: Nama pemilih sumber daya.selectors
: (Opsional) Properti yang digunakan untuk menentukan subset sumber daya mana yang berlaku untuk penetapan kebijakan yang harus dievaluasi untuk kepatuhan.kind
: Properti pemilih yang menjelaskan karakteristik mana yang mempersempit kumpulan sumber daya yang dievaluasi. Setiap jenis hanya dapat digunakan sekali dalam satu pemilih sumber daya. Nilai yang diperbolehkan adalah:resourceLocation
: Properti ini digunakan untuk memilih sumber daya berdasarkan jenisnya. Tidak dapat digunakan dalam pemilih sumber daya yang sama denganresourceWithoutLocation
.resourceType
: Properti ini digunakan untuk memilih sumber daya berdasarkan jenisnya.resourceWithoutLocation
: Properti ini digunakan untuk memilih sumber daya di tingkat langganan yang tidak memiliki lokasi. Saat ini hanya mendukungsubscriptionLevelResources
. Tidak dapat digunakan dalam pemilih sumber daya yang sama denganresourceLocation
.
in
: Daftar nilai yangkind
diizinkan untuk . Tidak dapat digunakan dengannotIn
. Dapat berisi hingga 50 nilai.notIn
: Daftar nilai yang tidak diizinkan untukkind
. Tidak dapat digunakan denganin
. Dapat berisi hingga 50 nilai.
Pemilih sumber daya dapat berisi beberapa pemilih. Agar berlaku untuk pemilih sumber daya, sumber daya harus memenuhi persyaratan yang ditentukan oleh semua pemilihnya. Selanjutnya, hingga 10 pemilih sumber daya dapat ditentukan dalam satu penugasan. Sumber daya dalam cakupan dievaluasi ketika memenuhi salah satu pemilih sumber daya ini.
Timpa
Properti opsional overrides
memungkinkan Anda mengubah efek definisi kebijakan tanpa mengubah definisi kebijakan yang mendasar atau menggunakan efek parameter dalam definisi kebijakan.
Kasus penggunaan umum untuk penimpaan yang berlaku adalah inisiatif kebijakan dengan sejumlah besar definisi kebijakan terkait. Dalam situasi ini, mengelola beberapa efek kebijakan dapat mengonsumsi upaya administratif yang signifikan, terutama ketika efeknya perlu diperbarui dari waktu ke waktu. Penimpaan dapat digunakan untuk memperbarui efek dari beberapa definisi kebijakan secara bersamaan dalam inisiatif.
Mari kita lihat contohnya. Bayangkan Anda memiliki inisiatif kebijakan bernama CostManagement yang menyertakan definisi kebijakan kustom dengan policyDefinitionReferenceId
corpVMSizePolicy dan satu efek .audit
Misalkan Anda ingin menetapkan inisiatif CostManagement , tetapi belum ingin melihat kepatuhan yang dilaporkan untuk kebijakan ini. Efek 'audit' kebijakan ini dapat digantikan oleh 'dinonaktifkan' melalui penimpaan pada penetapan inisiatif, seperti yang ditunjukkan dalam sampel berikut:
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
"overrides": [
{
"kind": "policyEffect",
"value": "disabled",
"selectors": [
{
"kind": "policyDefinitionReferenceId",
"in": [ "corpVMSizePolicy" ]
}
]
}
]
},
"systemData": { ... },
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
"type": "Microsoft.Authorization/policyAssignments",
"name": "CostManagement"
}
Kasus penggunaan umum lainnya untuk penimpaan adalah meluncurkan versi baru definisi. Untuk langkah-langkah yang direkomendasikan tentang memperbarui versi penugasan dengan aman, lihat Penyebaran Policy Safe.
Penimpaan memiliki properti berikut:
kind
: Properti yang akan diambil alih penugasan. Jenis yang didukung adalahpolicyEffect
danpolicyVersion
.value
: Nilai baru yang mengambil alih nilai yang ada. Untukkind: policyEffect
, nilai yang didukung adalah efek. Untukkind: policyVersion
, nomor versi yang didukung harus lebih besar dari atau sama dengandefinitionVersion
yang ditentukan dalam penugasan.selectors
: (Opsional) Properti yang digunakan untuk menentukan cakupan penetapan kebijakan apa yang harus diambil pada penimpaan.kind
: Properti pemilih yang menjelaskan karakteristik apa yang akan mempersempit cakupan penimpaan. Nilai yang diizinkan untukkind: policyEffect
:policyDefinitionReferenceId
: Ini menentukan definisi kebijakan mana dalam penetapan inisiatif yang harus mengambil alih efek.resourceLocation
: Properti ini digunakan untuk memilih sumber daya berdasarkan jenisnya. Tidak dapat digunakan dalam pemilih sumber daya yang sama denganresourceWithoutLocation
.
Nilai yang diizinkan untuk
kind: policyVersion
:resourceLocation
: Properti ini digunakan untuk memilih sumber daya berdasarkan jenisnya. Tidak dapat digunakan dalam pemilih sumber daya yang sama denganresourceWithoutLocation
.
in
: Daftar nilai yangkind
diizinkan untuk . Tidak dapat digunakan dengannotIn
. Dapat berisi hingga 50 nilai.notIn
: Daftar nilai yang tidak diizinkan untukkind
. Tidak dapat digunakan denganin
. Dapat berisi hingga 50 nilai.
Satu penimpaan dapat digunakan untuk mengganti efek banyak kebijakan dengan menentukan beberapa nilai dalam array policyDefinitionReferenceId. Satu penimpaan dapat digunakan hingga 50 policyDefinitionReferenceIds, dan satu penetapan kebijakan dapat berisi hingga 10 penimpaan, dievaluasi dalam urutan yang ditentukan. Sebelum penugasan dibuat, efek yang dipilih dalam penimpaan divalidasi terhadap aturan kebijakan dan daftar nilai yang diizinkan parameter (dalam kasus di mana efek diparameterkan).
Mode penegakan
Properti enforcementMode memberi pelanggan kemampuan untuk menguji hasil kebijakan tentang sumber daya yang ada tanpa memulai efek kebijakan atau memicu entri dalam log Azure Activity.
Skenario ini biasa disebut sebagai "Bagaimana Jika" dan selaras dengan praktik penyebaran yang aman. enforcementMode berbeda dari efek Dinonaktifkan, karena efek tersebut mencegah evaluasi sumber daya terjadi sama sekali.
Properti ini memiliki nilai berikut:
Mode | Nilai JSON | Jenis | Remediasi secara manual | Entri log aktivitas | Deskripsi |
---|---|---|---|---|---|
Aktif | Default | string | Ya | Ya | Efek kebijakan diberlakukan selama pembuatan atau pembaruan sumber daya. |
Nonaktif | DoNotEnforce | string | Ya | Tidak | Efek kebijakan tidak diberlakukan selama pembuatan atau pembaruan sumber daya. |
Jika enforcementMode tidak ditentukan dalam definisi kebijakan atau inisiatif, nilai Default akan digunakan. Tugas remediasi dapat dimulai untuk kebijakan deployIfNotExists, bahkan ketika enforcementMode diatur ke DoNotEnforce.
Cakupan yang dikecualikan
Ruang lingkup tugas mencakup semua wadah sumber daya anak dan sumber daya anak. Jika wadah sumber daya anak atau sumber daya anak tidak boleh menerapkan definisi, masing-masing dapat dikecualikan dari evaluasi dengan mengatur notScopes. Properti ini adalah array untuk memungkinkan tidak termasuk satu atau beberapa kontainer sumber daya atau sumber daya dari evaluasi. notScopes dapat ditambahkan atau diperbarui setelah pembuatan tugas awal.
Catatan
Sumber daya yang dikecualikan berbeda dari sumber daya yang dibebaskan. Untuk informasi selengkapnya, lihat Memahami cakupan dalam Azure Policy.
Pesan ketidakpatuhan
Untuk mengatur pesan kustom yang menjelaskan mengapa sumber daya tidak mematuhi definisi kebijakan atau inisiatif, atur nonComplianceMessages
di dalam definisi penetapan. Node ini adalah array message
entri. Pesan kustom ini merupakan tambahan pesan kesalahan default untuk ketidakpatuhan, dan bersifat opsional.
Penting
Pesan kustom untuk ketidakpatuhan hanya didukung pada definisi atau inisiatif dengan mode Resource Manager.
"nonComplianceMessages": [
{
"message": "Default message"
}
]
Jika tugas adalah untuk inisiatif, pesan yang berbeda dapat dikonfigurasi untuk setiap definisi kebijakan di dalam inisiatif. Pesan menggunakan nilai policyDefinitionReferenceId
yang dikonfigurasi dalam definisi inisiatif. Untuk detailnya, lihat properti definisi kebijakan.
"nonComplianceMessages": [
{
"message": "Default message"
},
{
"message": "Message for just this policy definition by reference ID",
"policyDefinitionReferenceId": "10420126870854049575"
}
]
Parameter
Segmen penetapan kebijakan ini menyediakan nilai untuk parameter yang ditentukan dalam definisi kebijakan atau definisi inisiatif. Desain ini memungkinkan untuk menggunakan kembali definisi kebijakan atau inisiatif dengan sumber daya yang berbeda, tetapi periksalah nilai atau hasil bisnis yang berbeda.
"parameters": {
"prefix": {
"value": "DeptA"
},
"suffix": {
"value": "-LC"
}
}
Dalam contoh ini, parameter yang sebelumnya didefinisikan dalam definisi kebijakan adalah prefix
dan suffix
. Penetapan kebijakan khusus ini ditetapkan prefix
ke DeptA dan suffix
ke -LC. Definisi kebijakan yang sama dapat digunakan kembali dengan serangkaian parameter yang berbeda untuk departemen yang berbeda, mengurangi duplikasi dan kompleksitas definisi kebijakan sembari memberikan fleksibilitas.
Identitas
Untuk penetapan kebijakan dengan efek yang diatur ke deployIfNotExist atau modifikasi, anda harus memiliki properti identitas untuk melakukan remediasi pada sumber daya yang tidak sesuai. Saat menggunakan identitas, pengguna juga harus menentukan lokasi untuk penugasan.
Catatan
Penugasan kebijakan tunggal dapat dikaitkan dengan hanya satu identitas terkelola yang ditetapkan oleh sistem atau pengguna. Tetapi, identitas tersebut dapat ditetapkan lebih dari satu peran jika diperlukan.
# System-assigned identity
"identity": {
"type": "SystemAssigned"
}
# User-assigned identity
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/SubscriptionID/resourceGroups/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
}
},
Langkah berikutnya
- Pelajari tentang struktur definisi kebijakan.
- 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.