Ú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. Stávající nekompatibilní prostředky lze také napravit úlohou nápravy. Přiřazení zásad s nastavenými efekty jako Modify vyžadují spravovanou identitu k nápravě. Běžným příkladem použití modify
efektu je aktualizace značek u prostředků, jako je například costCenter.
U vlastností prostředků existují určité drobné odlišnosti v chování při úpravách. Přečtěte si další informace o scénářích při vynechání úprav.
Jedno modify
pravidlo může mít libovolný počet operací. Podporované operace jsou:
- Přidejte, nahraďte nebo odeberte značky prostředků. Je možné odebrat pouze značky. 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 upravitidentity.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ů, semodify
kterými se dá používat .
- V
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.
Když je zadaný alias, provede se 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 conflictEffect
stavu .
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.
Vynecháno úpravy
Při vyhodnocování dojde k vynechání operací úprav:
- Existující prostředky: 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ínkuif
jako nevyhovující, aby je bylo možné napravit pomocí úlohy nápravy. - Nelze použít: Pokud je podmínka operace v
operations
poli vyhodnocena jako nepravda, daná konkrétní operace se přeskočí. - Vlastnost není upravitelná: Pokud v verzi rozhraní API požadavku není možné upravit alias zadaný pro operaci, použije vyhodnocení konfliktní efekt. Pokud je konfliktní efekt nastavený na odepření, požadavek se zablokuje. Pokud je konfliktní efekt nastavený na audit, požadavek se povolí, ale
modify
operace se přeskočí. - Vlastnost není k dispozici: Pokud vlastnost není v datové části prostředku požadavku, může být změna vynechána. V některých případech jsou upravitelné vlastnosti vnořené do jiných vlastností a mají alias jako
Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled
. Pokud vlastnost "parent" v tomto případědeleteRetentionPolicy
není v požadavku přítomna, úpravy se přeskočí, protože se předpokládá, že tato vlastnost je záměrně vynechána. Praktický příklad najdete v části Příklad vlastnosti, která není k dispozici. - Operace identity jiného typu než virtuální počítač nebo škálovací sada virtuálních počítačů: Pokud se operace úpravy pokusí přidat nebo nahradit
identity.type
pole u jiného prostředku než virtuální počítač nebo škálovací sada virtuálních počítačů, vyhodnocení zásad se úplně přeskočí, takže se změny neprovedou. V tomto případě se prostředek nepovažuje za použitelný pro zásadu.
Příklad vlastnosti, která není k dispozici
Úprava vlastností prostředku závisí na požadavku rozhraní API a aktualizované datové části prostředku. Datová část může záviset na použitém klientovi, jako je Azure Portal, a dalších faktorech, jako je poskytovatel prostředků.
Představte si, že použijete zásadu, která upravuje značky na virtuálním počítači. Při každé aktualizaci virtuálního počítače, například při změně velikosti nebo změny disku, se značky odpovídajícím způsobem aktualizují bez ohledu na obsah datové části virtuálního počítače. Důvodem je to, že značky jsou nezávislé na vlastnostech virtuálního počítače.
Pokud ale použijete zásadu, která upraví vlastnosti na virtuálním počítači, je úprava závislá na datové části prostředku. Pokud se pokusíte upravit vlastnosti, které nejsou zahrnuty v datové části aktualizace, změny se neprovedou. K tomu může dojít například při opravě assessmentMode
vlastnosti virtuálního počítače (aliasu Microsoft.Compute/virtualMachines/osProfile.windowsConfiguration.patchSettings.assessmentMode
). Vlastnost je "vnořená", takže pokud její nadřazené vlastnosti nejsou zahrnuty do požadavku, předpokládá se, že toto vynechání je úmyslné a úpravy se přeskočí. Aby se změny projevily, datová část prostředku by měla obsahovat tento kontext.
Ú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
operations
auditu . 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é zoperations
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ů.
- 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
- Dostupné hodnoty: audit, odepřít, zakázáno.
- Výchozí hodnota je odepřena.
- Určuje, která definice zásady "vyhrává", pokud více než jedna definice zásady změní stejnou vlastnost nebo když
operations
(povinné)- Pole všech operací značek, které se mají dokončit u odpovídajících prostředků.
- Vlastnosti:
operation
(povinné)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é)
Ú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
, field
a 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 definovanou značku z prostředku. Podporuje se jenom u značek. |
Ú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
- Projděte si příklady v ukázkách azure Policy.
- Projděte si strukturu definic Azure Policy.
- Seznamte se s programovým vytvářením zásad.
- Zjistěte, jak získat data dodržování předpisů.
- Zjistěte, jak napravit nevyhovující prostředky.
- Zkontrolujte skupiny pro správu Azure.