Úprava efektu definic Azure Policy

Účinek modify se používá k přidání, aktualizaci nebo odebrání vlastností nebo značek u předplatného nebo prostředku během vytváření nebo aktualizace. Běžným příkladem je aktualizace značek u prostředků, jako jsou costCenter. Stávající nekompatibilní prostředky je možné napravit úlohou nápravy. Jedno pravidlo pro úpravy může mít libovolný počet operací. Přiřazení zásad s nastavenými efekty jako Modify vyžadují spravovanou identitu k nápravě.

Efekt modify podporuje následující operace:

  • Přidejte, nahraďte nebo odeberte značky prostředků. U značek by zásada Modify měla mít nastavený indexed režim, pokud cílový prostředek není skupina prostředků.
  • Přidejte nebo nahraďte hodnotu typu spravované identity (identity.type) virtuálních počítačů a škálovacích sad virtuálních počítačů. Můžete upravit identity.type pouze pro virtuální počítače nebo škálovací sady virtuálních počítačů.
  • Přidejte nebo nahraďte hodnoty určitých aliasů.
    • V Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' } Azure PowerShellu 4.6.0 nebo novějším můžete získat seznam aliasů, se modifykterými se dá používat .

Důležité

Pokud spravujete značky, doporučuje se místo příkazu Přidat použít funkci Upravit, protože funkce Modify poskytuje více typů operací a možnost opravovat existující prostředky. Připojení se ale doporučuje, pokud nemůžete vytvořit spravovanou identitu nebo upravit ještě nepodporuje alias vlastnosti prostředku.

Úprava vyhodnocení

Změna se vyhodnotí před zpracováním požadavku poskytovatelem prostředků během vytváření nebo aktualizace prostředku. Operace modify se použijí na obsah požadavku při if splnění podmínky pravidla zásad. Každá modify operace může zadat podmínku, která určuje, kdy se použije. Operace s vyhodnocením nepravdivé podmínky se přeskočí.

Při zadání aliasu se provádějí další kontroly, aby se zajistilo, že modify operace nezmění obsah požadavku způsobem, který způsobí, že ho poskytovatel prostředků odmítne:

  • Vlastnost, na kterou se alias mapuje, je označena jako modifikovatelná ve verzi rozhraní API požadavku.
  • Typ tokenu modify v operaci odpovídá očekávanému typu tokenu pro vlastnost ve verzi rozhraní API požadavku.

Pokud některé z těchto kontrol selžou, vyhodnocení zásad se vrátí do zadaného conflictEffectstavu .

Důležité

Doporučuje se upravit definice, které obsahují aliasy, použít konfliktní účinek auditu, aby se zabránilo selhání požadavků pomocí verzí rozhraní API, kde mapovaná vlastnost není upravitelná. Pokud se stejný alias chová odlišně mezi verzemi rozhraní API, můžete k určení modify operace používané pro každou verzi rozhraní API použít operace podmíněné úpravy.

Pokud se definice zásady používající modify efekt spustí jako součást cyklu vyhodnocení, neprovádí změny prostředků, které už existují. Místo toho označí všechny prostředky, které splňují podmínku if , jako nevyhovující.

Úprava vlastností

Vlastnost details efektu modify má všechny dílčí vlastnosti, které definují oprávnění potřebná k nápravě a operations použité k přidání, aktualizaci nebo odebrání hodnot značek.

  • roleDefinitionIds (povinné)
    • Tato vlastnost musí obsahovat pole řetězců, které odpovídají ID role řízení přístupu na základě role přístupné pro předplatné. Další informace najdete v tématu náprava – konfigurace definice zásady.
    • Definovaná role musí zahrnovat všechny operace udělené roli Přispěvatel .
  • conflictEffect (volitelné)
    • Určuje, která definice zásady "vyhrává", pokud více než jedna definice zásady změní stejnou vlastnost nebo když modify operace nefunguje na zadaném aliasu.
      • U nových nebo aktualizovaných prostředků má přednost definice zásady se zamítnutím. Definice zásad s přeskočením operationsauditu . Pokud má více definic zásad účinek odepření, žádost se zamítá jako konflikt. Pokud mají všechny definice zásad audit, nezpracují se žádné z operations konfliktních definic zásad.
      • U existujících prostředků platí, že pokud má více než jednu definici zásad vliv na odepření, stav dodržování předpisů je Konflikt. Pokud jedna nebo méně definic zásad má účinek odepření, vrátí každé přiřazení stav dodržování předpisů nedodržování předpisů.
    • Dostupné hodnoty: audit, odepřít, zakázáno.
    • Výchozí hodnota je odepřena.
  • operations (povinné)
    • Pole všech operací značek, které se mají dokončit u odpovídajících prostředků.
    • Vlastnosti:
      • operation (povinné)
        • Definuje, jaká akce se má provést u odpovídajícího prostředku. Možnosti jsou: addOrReplace, Add, Remove. Přidání se chová podobně jako přidávacíefekt.
      • field (povinné)
        • Značka, která se má přidat, nahradit nebo odebrat. Názvy značek musí dodržovat stejnou konvenci pojmenování pro jiná pole.
      • value (volitelné)
        • Hodnota, na kterou chcete nastavit značku.
        • Tato vlastnost je vyžadována, pokud operation je addOrReplace nebo Add.
      • condition (volitelné)
        • Řetězec obsahující výraz jazyka Azure Policy s funkcemi Policy, které se vyhodnotí jako true nebo false.
        • Nepodporuje následující funkce zásad: field(), resourceGroup(), subscription().

Úprava operací

Pole operations vlastností umožňuje změnit několik značek různými způsoby od jedné definice zásad. Každá operace se skládá z operation, fielda value vlastností. Určuje operation , co úloha nápravy dělá se značkami, určuje, field která značka se změní, a value definuje nové nastavení pro tuto značku. Následující příklad provede následující změny značek:

  • environment Nastaví značku na Test, i když už existuje s jinou hodnotou.
  • Odebere značku TempResource.
  • Dept Nastaví značku na parametr zásad DeptName nakonfigurovaný pro přiřazení zásady.
"details": {
  ...
  "operations": [
    {
      "operation": "addOrReplace",
      "field": "tags['environment']",
      "value": "Test"
    },
    {
      "operation": "Remove",
      "field": "tags['TempResource']",
    },
    {
      "operation": "addOrReplace",
      "field": "tags['Dept']",
      "value": "[parameters('DeptName')]"
    }
  ]
}

Vlastnost operation má následující možnosti:

Operation Popis
addOrReplace Přidá do prostředku definovanou vlastnost nebo značku a hodnotu, a to i v případě, že vlastnost nebo značka již existuje s jinou hodnotou.
add Přidá do prostředku definovanou vlastnost nebo značku a hodnotu.
remove Odebere z prostředku definovanou vlastnost nebo značku.

Úprava příkladů

Příklad 1: Přidejte environment značku a nahraďte existující environment značky slovem Test:

"then": {
  "effect": "modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
    ],
    "operations": [
      {
        "operation": "addOrReplace",
        "field": "tags['environment']",
        "value": "Test"
      }
    ]
  }
}

Příklad 2: Odeberte env značku a přidejte environment značku nebo nahraďte existující environment značky parametrizovanou hodnotou:

"then": {
  "effect": "modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
    ],
    "conflictEffect": "deny",
    "operations": [
      {
        "operation": "Remove",
        "field": "tags['env']"
      },
      {
        "operation": "addOrReplace",
        "field": "tags['environment']",
        "value": "[parameters('tagValue')]"
      }
    ]
  }
}

Příklad 3: Ujistěte se, že účet úložiště nepovoluje veřejný přístup k objektům blob, modify operace se použije pouze při vyhodnocování požadavků s verzí rozhraní API vyšší nebo rovno 2019-04-01:

"then": {
  "effect": "modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
    ],
    "conflictEffect": "audit",
    "operations": [
      {
        "condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
        "operation": "addOrReplace",
        "field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
        "value": false
      }
    ]
  }
}

Další kroky