Parameter struktur definisi Azure Policy

Parameter membantu menyederhanakan manajemen kebijakan Anda dengan mengurangi jumlah definisi kebijakan. Pikirkan parameter seperti bidang pada formulir: name, , addresscity, 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 penyebaran parameters dalam aturan kebijakan. Untuk informasi selengkapnya, lihat menggunakan nilai parameter.
  • type: Menentukan apakah parameternya adalah string, , array, object, booleaninteger, float, atau dateTime.
  • 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 menentukan Dev sebagai nilai tag yang diizinkan dalam penugasan, dan nilai ini dibandingkan dengan string input menggunakan kondisi tersebut equals , maka Azure Policy nantinya akan mengevaluasi nilai dev tag sebagai kecocokan meskipun huruf kecil karena notEquals tidak peka huruf besar/kecil.
    • Untuk parameter jenis objek, nilai harus cocok dengan skema yang sesuai.
  • 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. strongTypedapat 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