Parametry struktury definic Azure Policy

Parametry pomáhají zjednodušit správu zásad tím, že snižují počet definic zásad. Parametry si můžete představit jako pole ve formuláři: name, address, city, state. Tyto parametry vždy zůstávají stejné, ale jejich hodnoty se mění na základě individuálního vyplňování formuláře. Parametry fungují při sestavování zásad stejným způsobem. Zahrnutím parametrů do definice zásad můžete tuto zásadu znovu použít pro různé scénáře pomocí jiných hodnot.

Přidání nebo odebrání parametrů

Parametry mohou být přidány do existující a přiřazené definice. Nový parametr musí obsahovat defaultValue vlastnost. Tato vlastnost zabraňuje tomu, aby se stávající přiřazení zásad nebo iniciativy nepřímo zneplatnilo.

Parametry nelze z definice zásady odebrat, protože může existovat přiřazení, které nastaví hodnotu parametru a tento odkaz by se přerušil. Některé předdefinované definice zásad vyřazují parametry pomocí metadat "deprecated": true, která parametr při přiřazování definice na webu Azure Portal skryje. I když tato metoda není podporována pro definice vlastních zásad, další možností je duplikovat a vytvořit novou definici vlastní zásady bez parametru.

Vlastnosti parametru

Parametr používá v definici zásady následující vlastnosti:

  • name: Název parametru. Používá se parameters funkcí nasazení v rámci pravidla zásad. Další informace najdete v tématu použití hodnoty parametru.
  • type: Určuje, zda je parametr , stringarray, object, booleaninteger, , floatnebo dateTime.
  • metadata: Definuje dílčí výhody, které primárně používá Azure Portal k zobrazení uživatelsky přívětivých informací:
    • description: Vysvětlení, k čemu se parametr používá. Dá se použít k poskytnutí příkladů přijatelných hodnot.
    • displayName: Popisný název zobrazený na portálu pro parametr.
    • strongType: (Volitelné) Používá se při přiřazování definice zásady prostřednictvím portálu. Poskytuje seznam s podporou kontextu. Další informace naleznete v tématu strongType.
    • assignPermissions: (Volitelné) Nastavte jako true , aby azure Portal během přiřazení zásad vytvářelo přiřazení rolí. Tato vlastnost je užitečná v případě, že chcete přiřadit oprávnění mimo obor přiřazení. V zásadě existuje jedno přiřazení role na definici role (nebo na definici role ve všech zásadách iniciativy). Hodnota parametru musí být platným prostředkem nebo oborem.
    • deprecated: Logický příznak označující, jestli je parametr zastaralý v předdefinované definici.
  • defaultValue: (Volitelné) Nastaví hodnotu parametru v přiřazení, pokud není udělena žádná hodnota. Vyžaduje se při aktualizaci existující definice zásady, která je přiřazena. U parametrů typu oject musí hodnota odpovídat příslušnému schématu.
  • allowedValues: (Volitelné) Poskytuje pole hodnot, které parametr přijímá během přiřazení.
    • Citlivost malá a velká písmena: Při přiřazování zásad rozlišují povolená porovnání hodnot malá a velká písmena, což znamená, že vybrané hodnoty parametrů v přiřazení musí odpovídat velikosti písmen hodnot v allowedValues poli v definici. Jakmile jsou však pro přiřazení vybrány hodnoty, vyhodnocení porovnání řetězců může v závislosti na použité podmínce nerozlišovat malá a velká písmena. Pokud například parametr určuje Dev jako povolenou hodnotu značky v přiřazení a tato hodnota se porovná se vstupním řetězcem používajícím podmínku equals , azure Policy později vyhodnotí hodnotu dev značky jako shodu, i když je malá písmena, protože notEquals nerozlišuje malá písmena.
    • U parametrů typu objektu musí hodnoty odpovídat příslušnému schématu.
  • schema: (Volitelné) Poskytuje ověřování vstupů parametrů během přiřazení pomocí samodefinované schéma JSON. Tato vlastnost je podporována pouze pro parametry typu objekt a řídí se implementací Json.NET Schema 2019-09. Další informace o použití schémat a https://json-schema.org/ testování konceptů schémat na adrese https://www.jsonschemavalidator.net/.

Ukázkové parametry

Příklad 1

Můžete například definovat definici zásady, která omezí umístění, kde je možné nasadit prostředky. Parametr pro definici zásady může být allowedLocations a používán každým přiřazením definice zásady k omezení přijatých hodnot. Použití strongType poskytuje vylepšené prostředí při dokončování přiřazení prostřednictvím portálu:

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

Ukázkový vstup pro tento parametr typu pole (bez strongType) v době přiřazení může být ["westus", "eastus2"].

Příklad 2

V pokročilejším scénáři můžete definovat zásadu, která vyžaduje, aby pody clusteru Kubernetes používaly zadané popisky. Parametr pro tuto definici zásady může být labelSelector a používán každým přiřazením definice zásady k určení prostředků Kubernetes na základě klíčů a hodnot popisku:

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

Ukázkový vstup pro tento parametr typu objektu v době přiřazení by byl ve formátu JSON, ověřen zadaným schématem a může být následující:

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

Použití hodnoty parametru

V pravidle zásad odkazujete na parametry s následující parameters syntaxí funkce:

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

Tato ukázka odkazuje na allowedLocations parametr, který byl ukázaný ve vlastnostech parametru.

strongType

V rámci metadata této vlastnosti můžete na strongType webu Azure Portal zadat seznam možností s vícenásobným výběrem. strongType může být podporovaný typ prostředku nebo povolená hodnota. Chcete-li zjistit, zda je typ prostředku platný pro strongType, použijte Get-AzResourceProvider. Formát typu strongType prostředku je .<Resource Provider>/<Resource Type> Například Microsoft.Network/virtualNetworks/subnets.

Některé typy prostředků, které nejsou vráceny, jsou podporovány Get-AzResourceProvider . Mezi tyto typy patří:

  • Microsoft.RecoveryServices/vaults/backupPolicies

Povolené hodnoty strongType jiného typu než prostředku jsou:

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

Další kroky