Az Azure Policy definíciós struktúrájának paraméterei

A paraméterek leegyszerűsítik a szabályzatok kezelését a szabályzatdefiníciók számának csökkentésével. Gondoljon olyan paraméterekre, mint az űrlap mezői: name, address, city, state. Ezek a paraméterek mindig ugyanazok maradnak, de az értékük az űrlapot kitöltő egyén alapján változik. A paraméterek a szabályzatok létrehozásakor is ugyanígy működnek. Ha paramétereket használ egy szabályzatdefinícióban, akkor a szabályzat különböző forgatókönyvekben alkalmazható más értékek megadásával.

Paraméterek hozzáadása vagy eltávolítása

Paramétereket lehet hozzáadni egy meglévő és hozzárendelt definícióhoz. Az új paraméternek tartalmaznia kell a tulajdonságot defaultValue . Ez a tulajdonság megakadályozza, hogy a szabályzat vagy kezdeményezés meglévő hozzárendelései közvetetten érvénytelenek legyenek.

A paraméterek nem távolíthatók el a szabályzatdefiníciókból, mert előfordulhat, hogy egy hozzárendelés beállítja a paraméter értékét, és a hivatkozás megszakad. Egyes beépített szabályzatdefiníciók metaadatokkal "deprecated": trueelavultatják a paramétereket, ami elrejti a paramétert a definíció Azure Portalon való hozzárendelésekor. Bár ez a módszer nem támogatott az egyéni szabályzatdefiníciók esetében, egy másik lehetőség egy új egyéni szabályzatdefiníció paraméter nélküli duplikálása és létrehozása.

Paramétertulajdonságok

Egy paraméter a következő tulajdonságokat használja egy szabályzatdefinícióban:

  • name: A paraméter neve. A házirendszabályon belüli üzembehelyezési függvény használja parameters . További információ: paraméterérték használata.
  • type: Meghatározza, hogy a paraméter egy string, array, object, boolean, integer, floatvagy dateTime.
  • metadata: Az Azure Portal által elsősorban a felhasználóbarát információk megjelenítéséhez használt altulajdonságokat határozza meg:
    • description: Annak magyarázata, hogy mire használja a paramétert. Használható elfogadható értékek példáinak megadására.
    • displayName: A paraméter portálon megjelenő rövid neve.
    • strongType: (Nem kötelező) A szabályzatdefiníció portálon keresztüli hozzárendeléséhez használható. Környezetérzékeny listát biztosít. További információ: strongType.
    • assignPermissions: (Nem kötelező) Állítsa igazként, hogy az Azure Portal szerepkör-hozzárendeléseket hozzon létre a szabályzat-hozzárendelés során. Ez a tulajdonság akkor hasznos, ha a hozzárendelés hatókörén kívül szeretne engedélyeket hozzárendelni. A szabályzatban szerepkör-definíciónként egy szerepkör-hozzárendelés található (vagy szerepkör-definíciónként a kezdeményezés összes szabályzatában). A paraméter értékének érvényes erőforrásnak vagy hatókörnek kell lennie.
    • deprecated: Logikai jelző, amely jelzi, hogy egy paraméter elavult-e egy beépített definícióban.
  • defaultValue: (Nem kötelező) Beállítja a paraméter értékét egy hozzárendelésben, ha nincs megadva érték. A hozzárendelt meglévő szabályzatdefiníciók frissítésekor szükséges. Az oject típusú paraméterek esetében az értéknek meg kell egyeznie a megfelelő sémával.
  • allowedValues: (Nem kötelező) A paraméter által a hozzárendelés során elfogadott értékek tömbje.
    • Kis- és nagybetűk érzékenysége: Az engedélyezett érték-összehasonlítások megkülönböztetik a kis- és nagybetűket a szabályzatok hozzárendelésekor, ami azt jelenti, hogy a hozzárendelésben kiválasztott paraméterértékeknek meg kell egyezniük a allowedValues tömb értékeinek a definícióban szereplő tömbön belüli elrendezésével. Ha azonban a hozzárendeléshez értékeket választ ki, a sztring-összehasonlítások kiértékelése a használt feltételtől függően érzéketlen lehet. Ha például a paraméter engedélyezett címkeértékként van megadva Dev egy hozzárendelésben, és ezt az értéket összehasonlítja egy bemeneti sztringgel a equals feltétel használatával, akkor az Azure Policy később egyezésként értékel ki egy címkeértéket dev , annak ellenére, hogy kisbetűs, mert notEquals a kis- és nagybetűk érzéketlenek.
    • Objektumtípus-paraméterek esetén az értékeknek meg kell egyeznie a megfelelő sémával.
  • schema: (Nem kötelező) A paraméterbemenetek ellenőrzését biztosítja a hozzárendelés során egy ön által definiált JSON-séma használatával. Ez a tulajdonság csak objektum típusú paraméterek esetén támogatott, és a Json.NET Schema 2019-09 implementációt követi. A sémák használatáról és a vázlatsémák https://json-schema.org/https://www.jsonschemavalidator.net/teszteléséről itt tudhat meg többet.

Mintaparaméterek

1. példa

Definiálhat például egy szabályzatdefiníciót, amely korlátozza az erőforrások üzembe helyezésének helyét. A szabályzatdefiníció paraméterét a allowedLocations szabályzatdefiníció minden hozzárendelése használhatja az elfogadott értékek korlátozására. A feladat portálon keresztüli strongType végrehajtása során a használat továbbfejlesztett élményt nyújt:

"parameters": {
  "allowedLocations": {
    "type": "array",
    "metadata": {
      "description": "The list of allowed locations for resources.",
      "displayName": "Allowed locations",
      "strongType": "location"
    },
    "defaultValue": [
      "westus2"
    ],
    "allowedValues": [
      "eastus2",
      "westus2",
      "westus"
    ]
  }
}

Ennek a tömbtípus-paraméternek a hozzárendelési időpontban (anélkül strongType) mintabemenete lehet ["westus", "eastus2"].

2. példa

Egy fejlettebb forgatókönyvben meghatározhat egy szabályzatot, amely megköveteli, hogy a Kubernetes-fürt podjai megadott címkéket használjanak. A szabályzatdefiníció paraméterét a szabályzatdefiníció labelSelector minden hozzárendelése használhatja a kérdéses Kubernetes-erőforrások címkekulcsok és értékek alapján történő megadásához:

"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
    }
  },
}

Az objektumtípus paraméter mintabemenete a hozzárendelés időpontjában JSON formátumú lenne, amelyet a megadott séma ellenőrizne, és a következő lehet:

{
  "matchLabels": {
    "poolID": "abc123",
    "nodeGroup": "Group1",
    "region": "southcentralus"
  },
  "matchExpressions": [
    {
      "key": "name",
      "operator": "In",
      "values": [
        "payroll",
        "web"
      ]
    },
    {
      "key": "environment",
      "operator": "NotIn",
      "values": [
        "dev"
      ]
    }
  ]
}

Paraméterérték használata

A szabályzatszabályban a következő parameters függvényszintaxissal rendelkező paraméterekre kell hivatkozni:

{
  "field": "location",
  "in": "[parameters('allowedLocations')]"
}

Ez a minta a allowedLocations paramétertulajdonságokban bemutatott paraméterre hivatkozik.

strongType

A tulajdonságon metadatastrongType belül több választási lehetőséget is megadhat az Azure Portalon. strongType lehet támogatott erőforrástípus vagy engedélyezett érték. Annak megállapításához, hogy egy erőforrástípus érvényes-e, strongTypehasználja a Get-AzResourceProvider parancsot. Az erőforrástípusstrongType formátuma: <Resource Provider>/<Resource Type>. Például: Microsoft.Network/virtualNetworks/subnets.

Egyes nem visszaadott Get-AzResourceProvider erőforrástípusok támogatottak. Ezek a típusok a következők:

  • Microsoft.RecoveryServices/vaults/backupPolicies

A nem erőforrástípus által megengedett értékek a strongType következők:

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

Következő lépések