Parameter struktur definisi Azure Policy
Parameter membantu menyederhanakan manajemen kebijakan Anda dengan mengurangi jumlah definisi kebijakan. Pikirkan parameter seperti bidang pada formulir: name
, , address
city
, state
. Parameter ini selalu tetap sama tetapi nilainya berubah berdasarkan individu yang mengisi formulir. Parameter bekerja dengan cara yang sama saat membuat kebijakan. Dengan menyertakan parameter dalam definisi kebijakan, Anda dapat menggunakan kembali kebijakan tersebut untuk skenario yang berbeda menggunakan nilai yang berbeda.
Menambahkan atau menghapus parameter
Parameter mungkin ditambahkan ke definisi yang ada dan ditetapkan. Parameter baru harus menyertakan defaultValue
properti . Properti ini mencegah penugasan kebijakan atau inisiatif yang ada secara tidak langsung dibuat tidak valid.
Parameter tidak dapat dihapus dari definisi kebijakan karena mungkin ada penugasan yang menetapkan nilai parameter, dan referensi tersebut akan menjadi rusak. Beberapa definisi kebijakan bawaan menghentikan parameter menggunakan metadata "deprecated": true
, yang menyembunyikan parameter saat menetapkan definisi dalam portal Azure. Meskipun metode ini tidak didukung untuk definisi kebijakan kustom, opsi lain adalah menduplikasi dan membuat definisi kebijakan kustom baru tanpa parameter .
Properti parameter
Parameter menggunakan properti berikut dalam definisi kebijakan:
name
: Nama parameter Anda. Digunakan oleh fungsi penyebaranparameters
dalam aturan kebijakan. Untuk informasi selengkapnya, lihat menggunakan nilai parameter.type
: Menentukan apakah parameternya adalahstring
, ,array
,object
,boolean
integer
,float
, ataudateTime
.metadata
: Mendefinisikan subproperti yang terutama digunakan oleh portal Azure untuk menampilkan informasi yang mudah digunakan:description
: Penjelasan tentang untuk apa parameter digunakan. Dapat digunakan untuk memberikan contoh nilai yang dapat diterima.displayName
: Nama yang mudah diingat yang ditampilkan di portal untuk parameter.strongType
: (Opsional) Digunakan saat menetapkan definisi kebijakan melalui portal. Menyediakan daftar sadar konteks. Untuk informasi selengkapnya, lihat strongType.assignPermissions
: (Opsional) Atur sebagai true agar portal Azure membuat penetapan peran selama penetapan kebijakan. Properti ini berguna jika Anda ingin menetapkan izin di luar cakupan penugasan. Ada satu penetapan peran per definisi peran dalam kebijakan (atau per definisi peran dalam semua kebijakan inisiatif). Nilai parameter harus berupa sumber daya atau cakupan yang valid.deprecated
: Bendera boolean untuk menunjukkan apakah parameter tidak digunakan lagi dalam definisi bawaan.
defaultValue
: (Opsional) Atur nilai parameter dalam tugas jika tidak ada nilai yang diberikan. Diperlukan saat memperbarui definisi kebijakan yang sudah ditetapkan. Untuk parameter jenis objek, nilai harus cocok dengan skema yang sesuai.allowedValues
: (Opsional) Menyediakan array nilai yang diterima parameter selama penugasan.- Sensitivitas kasus: Perbandingan nilai yang diizinkan peka huruf besar/kecil saat menetapkan kebijakan, yang berarti bahwa nilai parameter yang dipilih dalam tugas harus cocok dengan casing nilai dalam
allowedValues
array dalam definisi. Namun, setelah nilai dipilih untuk penugasan, evaluasi perbandingan string mungkin tidak peka huruf besar/kecil tergantung pada kondisi yang digunakan. Misalnya, jika parameter menentukanDev
sebagai nilai tag yang diizinkan dalam penugasan, dan nilai ini dibandingkan dengan string input menggunakan kondisi tersebutequals
, maka Azure Policy nantinya akan mengevaluasi nilaidev
tag sebagai kecocokan meskipun huruf kecil karenanotEquals
tidak peka huruf besar/kecil. - Untuk parameter jenis objek, nilai harus cocok dengan skema yang sesuai.
- Sensitivitas kasus: Perbandingan nilai yang diizinkan peka huruf besar/kecil saat menetapkan kebijakan, yang berarti bahwa nilai parameter yang dipilih dalam tugas harus cocok dengan casing nilai dalam
schema
: (Opsional) Menyediakan validasi input parameter selama penugasan menggunakan skema JSON yang ditentukan sendiri. Properti ini hanya didukung untuk parameter jenis objek dan mengikuti implementasi Skema Json.NET 2019-09. Anda dapat mempelajari selengkapnya penggunaan skema di https://json-schema.org/ dan menguji skema draf di https://www.jsonschemavalidator.net/.
Parameter sampel
Contoh 1
Sebagai contoh, Anda dapat menentukan definisi kebijakan untuk membatasi lokasi tempat sumber daya dapat diterapkan. Parameter untuk definisi kebijakan tersebut dapat dan allowedLocations
digunakan oleh setiap penugasan definisi kebijakan untuk membatasi nilai yang diterima. Penggunaan strongType
memberikan pengalaman yang ditingkatkan saat menyelesaikan penugasan melalui portal:
"parameters": {
"allowedLocations": {
"type": "array",
"metadata": {
"description": "The list of allowed locations for resources.",
"displayName": "Allowed locations",
"strongType": "location"
},
"defaultValue": [
"westus2"
],
"allowedValues": [
"eastus2",
"westus2",
"westus"
]
}
}
Contoh input untuk parameter jenis array ini (tanpa strongType
) pada waktu penugasan mungkin .["westus", "eastus2"]
Contoh 2
Dalam skenario yang lebih canggih, Anda dapat menentukan kebijakan yang mengharuskan pod kluster Kubernetes untuk menggunakan label yang ditentukan. Parameter untuk definisi kebijakan tersebut dapat dan labelSelector
digunakan oleh setiap penugasan definisi kebijakan untuk menentukan sumber daya Kubernetes yang dimaksud berdasarkan kunci label dan nilai:
"parameters": {
"labelSelector": {
"type": "Object",
"metadata": {
"displayName": "Kubernetes label selector",
"description": "Label query to select Kubernetes resources for policy evaluation. An empty label selector matches all Kubernetes resources."
},
"defaultValue": {},
"schema": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all resources.",
"type": "object",
"properties": {
"matchLabels": {
"description": "matchLabels is a map of {key,value} pairs.",
"type": "object",
"additionalProperties": {
"type": "string"
},
"minProperties": 1
},
"matchExpressions": {
"description": "matchExpressions is a list of values, a key, and an operator.",
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"description": "key is the label key that the selector applies to.",
"type": "string"
},
"operator": {
"description": "operator represents a key's relationship to a set of values.",
"type": "string",
"enum": [
"In",
"NotIn",
"Exists",
"DoesNotExist"
]
},
"values": {
"description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"key",
"operator"
],
"additionalProperties": false
},
"minItems": 1
}
},
"additionalProperties": false
}
},
}
Sampel input untuk parameter jenis objek ini pada waktu penugasan akan berada dalam format JSON, divalidasi oleh skema yang ditentukan, dan dapat berupa:
{
"matchLabels": {
"poolID": "abc123",
"nodeGroup": "Group1",
"region": "southcentralus"
},
"matchExpressions": [
{
"key": "name",
"operator": "In",
"values": [
"payroll",
"web"
]
},
{
"key": "environment",
"operator": "NotIn",
"values": [
"dev"
]
}
]
}
Menggunakan nilai parameter
Dalam aturan kebijakan, Anda mereferensikan parameter dengan sintaks fungsi parameters
berikut:
{
"field": "location",
"in": "[parameters('allowedLocations')]"
}
Sampel ini mereferensikan allowedLocations
parameter yang ditunjukkan dalam properti parameter.
strongType
metadata
Dalam properti , Anda dapat menggunakan strongType
untuk menyediakan daftar opsi multipilih dalam portal Azure. strongType
dapat menjadi jenis sumber daya yang didukung atau nilai yang diizinkan. Untuk menentukan apakah jenis sumber daya valid untuk strongType
, gunakan Get-AzResourceProvider. Format untuk jenisstrongType
sumber daya adalah <Resource Provider>/<Resource Type>
. Contohnya,Microsoft.Network/virtualNetworks/subnets
.
Beberapa jenis sumber daya yang tidak dikembalikan oleh Get-AzResourceProvider
didukung. Jenis-jenis tersebut adalah:
Microsoft.RecoveryServices/vaults/backupPolicies
Nilai yang diizinkan bukan jenis sumber daya untuk strongType
adalah:
location
resourceTypes
storageSkus
vmSKUs
existingResourceGroups
Langkah berikutnya
- Untuk informasi selengkapnya tentang struktur definisi kebijakan, buka dasar- dasar, aturan kebijakan, dan alias.
- Untuk inisiatif, buka struktur definisi inisiatif.
- Tinjau sampel pada sampel Azure Policy.
- Tinjau Memahami efek 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.