Principy Azure Policy efektů
Každá definice zásady v Azure Policy má jediný účinek. Tento účinek určuje, co se stane, když se pravidlo zásad vyhodnotí jako odpovídající. Účinky se chovají odlišně, pokud jsou pro nový prostředek, aktualizovaný prostředek nebo existující prostředek.
V definici zásady se v současné době podporují tyto účinky:
Následující účinky jsou zastaralé:
Důležité
Místo efektů EnforceOPAConstraint nebo EnforceRegoPolicy použijte auditování a odepření v režimu poskytovatele prostředků Microsoft.Kubernetes.Data . Byly aktualizovány integrované definice zásad. Když se změní přiřazení existujících zásad těchto předdefinovaných definic zásad, je nutné změnit parametr efektu na hodnotu v aktualizovaném seznamu allowedValues.
Pořadí vyhodnocování
Žádosti o vytvoření nebo aktualizaci prostředku se vyhodnotí Azure Policy prvními. Azure Policy vytvoří seznam všech přiřazení, která se vztahují k prostředku, a pak vyhodnotí prostředek pro každou definici. V Resource Manager zpracujeAzure Policy před předáním požadavku příslušnému poskytovateli prostředků několik vlivů. Toto pořadí zabraňuje zbytečnému zpracování poskytovatelem prostředků, pokud prostředek nesplňuje navržené ovládací prvky zásad správného řízení Azure Policy. V režimu poskytovatele prostředkůspravuje poskytovatel prostředků vyhodnocení a výsledek a hlásí výsledky zpět do Azure Policy.
- Nejprve je zaškrtnuté políčko Zakázáno, aby se zjistilo, jestli se má pravidlo zásad vyhodnotit.
- Pak se vyhodnotí operace Append a Modify. Vzhledem k tomu, že by mohla žádost změnit, může provedená změna zabránit aktivaci efektu auditu nebo zamítnutí. Tyto účinky jsou k dispozici pouze v Resource Manager režimu.
- Pak se vyhodnotí zamítnutí. Vyhodnocením zamítnutí před auditem se zabrání dvojímu protokolování nežádoucího prostředku.
- Audit se vyhodnocuje jako poslední.
Jakmile poskytovatel prostředků vrátí kód úspěchu v požadavku Resource Manager režimu, auditIfNotExists a DeployIfNotExists vyhodnotí, jestli se vyžaduje další protokolování dodržování předpisů nebo akce.
Požadavky, které pouze upravují související pole, navíc omezují vyhodnocování zásad na zásady obsahující podmínky, PATCH tags které tags kontroluují související pole.
Připojit
Připojení se používá k přidání dalších polí k požadovanému prostředku během vytváření nebo aktualizace. Běžným příkladem je určení povolených IP adresy pro prostředek úložiště.
Důležité
Připojení je určené pro použití s vlastnostmi, které nejsou značek. I když append může přidat značky k prostředku během žádosti o vytvoření nebo aktualizaci, doporučuje se místo toho použít účinek Modify pro značky.
Vyhodnocení připojení
Funkce Append se vyhodnotí dříve, než poskytovatel prostředků požadavek zpracuje během vytváření nebo aktualizace prostředku. Když je splněna podmínka if pravidla zásad, přidá k prostředku pole. Pokud by doplňovací efekt přepíše hodnotu v původním požadavku jinou hodnotou, pak funguje jako účinek odepření a žádost odmítne. Pokud chcete k existujícímu poli připojit novou hodnotu, použijte [*] verzi aliasu.
Když se definice zásady využívající efekt připojení spustí jako součást cyklu vyhodnocení, nebude provádět změny prostředků, které už existují. Místo toho označí všechny prostředky, které splňují podmínku if, jako nedodržující předpisy.
Připojení vlastností
Doplňovací efekt má pouze pole podrobností, které je povinné. Vzhledem k tomu, že podrobnosti jsou pole, může mít buď jeden pár polí a hodnot, nebo násobky. Seznam přijatelných polí najdete ve struktuře definic.
Příklady připojení
Příklad 1: Pár jedno pole/hodnota, který používá alias s hodnotou pole pro nastavení [*] pravidel IP pro účet úložiště. Pokud je [*] alias pole, připojí efekt hodnotu jako celé pole. Pokud pole již existuje, v důsledku konfliktu dojde k události odepření.
"then": {
"effect": "append",
"details": [{
"field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules",
"value": [{
"action": "Allow",
"value": "134.5.0.0/21"
}]
}]
}
Příklad 2: Jeden pár polí/hodnota, který používá alias s hodnotou pole pro nastavení [*] pravidel IP pro účet úložiště. Pomocí [*] aliasu účinek připojí hodnotu k potenciálně existujícímu poli. Pokud pole ještě neexistuje, vytvoří se.
"then": {
"effect": "append",
"details": [{
"field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*]",
"value": {
"value": "40.40.40.40",
"action": "Allow"
}
}]
}
Auditování
Audit se používá k vytvoření události upozornění v protokolu aktivit při vyhodnocování prostředku, který nedodržuje předpisy, ale nezastaví požadavek.
Vyhodnocení auditu
Audit je poslední účinek, který kontroluje Azure Policy během vytváření nebo aktualizace prostředku. V Resource Manager režimu Azure Policy odešle prostředek poskytovateli prostředků. Při vyhodnocování požadavku na vytvoření nebo aktualizaci prostředku Azure Policy do protokolu aktivit operaci a označí prostředek jako Microsoft.Authorization/policies/audit/action nedodržující předpisy. Během standardního cyklu vyhodnocení dodržování předpisů se aktualizuje pouze stav dodržování předpisů u prostředku.
Vlastnosti auditu
V Resource Manager režim auditu nemá účinek auditu žádné další vlastnosti pro použití v podměně then definice zásady.
Pro režim poskytovatele prostředků Microsoft.Kubernetes.Data má účinek auditu následující další podvlastnosti podrobností. Pro nové nebo aktualizované definice zásad se vyžaduje použití , jak templateInfo constraintTemplate je zastaralé.
- templateInfo (povinné)
- Nelze použít s
constraintTemplate. - sourceType (povinné)
Definuje typ zdroje pro šablonu omezení. Povolené hodnoty: PublicURL nebo Base64Encoded.
Pokud PublicURL, spárovaný s
urlvlastností k poskytnutí umístění šablony omezení. Umístění musí být veřejně přístupné.Upozornění
Nepoužívejte identifikátory URI SAS nebo tokeny v nástroji ani nic
urljiného, co by mohlo zveřejnit tajný kód.Pokud base64Encoded, spárováno s vlastností , aby se poskytla šablona omezení s
contentkódováním Base 64. Informace o vytvoření vlastní definice z existující šablony omezení Open Policy Agent (OPA) GateKeeper v3 najdete v tématu Vytvoření definice zásady ze šablony omezení.
- Nelze použít s
- constraint (volitelné)
- Nelze použít s
templateInfo. - Implementace CRD šablony Omezení. Používá parametry předané prostřednictvím hodnot jako
{{ .Values.<valuename> }}. V příkladu 2 níže jsou tyto hodnoty{{ .Values.excludedNamespaces }}a{{ .Values.allowedContainerImagesRegex }}.
- Nelze použít s
- obory názvů (volitelné)
- Pole oborů názvů Kubernetes, na které se má omezit vyhodnocování zásad.
- Prázdná nebo chybějící hodnota způsobí, že vyhodnocení zásad bude zahrnovat všechny obory názvů s výjimkou těch, které jsou definované ve vyloučených oborech názvů.
- excludedNamespaces (povinné)
- Pole oborů názvů Kubernetes, které se mají vyloučit z vyhodnocení zásad.
- labelSelector (povinné)
- Objekt, který obsahuje vlastnosti matchLabels (object) a matchExpression (pole), aby bylo možné určit, které prostředky Kubernetes se mají zahrnout pro vyhodnocení zásad, které odpovídají zadaným popiskům a selektorům .
- Prázdná nebo chybějící hodnota způsobí, že vyhodnocení zásad bude obsahovat všechny popisky a selektory s výjimkou oborů názvů definovaných ve vyloučených oborech názvů.
- apiGroups (povinné při použití templateInfo)
- Pole, které obsahuje skupiny rozhraní API, které se mají shodovat. Prázdné pole (
[""]) je základní skupina rozhraní API, zatímco odpovídá všem["*"]skupinám rozhraní API.
- Pole, které obsahuje skupiny rozhraní API, které se mají shodovat. Prázdné pole (
- kinds (povinné při použití templateInfo)
- Pole, které obsahuje druh objektu Kubernetes, na který se má omezit vyhodnocení.
- hodnoty (volitelné)
- Definuje všechny parametry a hodnoty, které se mají předat do constraint. Každá hodnota musí existovat v crd šablony omezení.
- constraintTemplate (zastaralé)
- Nelze použít s
templateInfo. - Při vytváření nebo aktualizaci definice zásady
templateInfoje nutné nahradit za . - Šablona omezení CustomResourceDefinition (CRD), která definuje nová omezení. Šablona definuje logiku Rego, schéma omezení a parametry omezení, které se předá prostřednictvím hodnot z Azure Policy.
- Nelze použít s
Příklad auditu
Příklad 1: Použití efektu auditu pro Resource Manager režimy
"then": {
"effect": "audit"
}
Příklad 2: Použití efektu auditu pro režim poskytovatele prostředků Microsoft.Kubernetes.Data . Další informace v souboru details.templateInfo deklarují použití publicURL a nastaví umístění šablony Omezení, která se použije v Kubernetes k omezení povolených imagí url kontejneru.
"then": {
"effect": "audit",
"details": {
"templateInfo": {
"sourceType": "PublicURL",
"url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
},
"values": {
"imageRegex": "[parameters('allowedContainerImagesRegex')]"
},
"apiGroups": [""],
"kinds": ["Pod"]
}
}
AuditIfNotExists
AuditIfNotExists umožňuje auditování prostředků souvisejících s prostředky, které odpovídají podmnozce if, ale nemají vlastnosti zadané v podrobnostech podmínky then.
Vyhodnocení AuditIfNotExists
AuditIfNotExists se spustí po zpracování požadavku na vytvoření nebo aktualizaci prostředku poskytovatelem prostředků a vrátí stavový kód úspěchu. K auditu dojde v případě, že neexistují žádné související prostředky nebo pokud se prostředky definované podmínkou ExistenceCondition nevyhodnotí jako true. U nových a aktualizovaných prostředků Azure Policy do protokolu aktivit operaci a označí prostředek Microsoft.Authorization/policies/audit/action jako nedodržující předpisy. Když se aktivuje, prostředek, který splňuje podmínku if, je prostředek, který je označený jako nevyhovující.
Vlastnosti AuditIfNotExists
Vlastnost details efektů AuditIfNotExists má všechny podvlastnosti, které definují odpovídající související prostředky.
- Typ (povinné)
- Určuje typ souvisejícího prostředku, který se má shodovat.
- Pokud details.type je typ prostředku pod prostředek podmínky if, zásady se dotazují na prostředky tohoto typu v rámci oboru vyhodnocených prostředků. V opačném případě se zásady dotazují ve stejné skupině prostředků jako vyhodnocený prostředek.
- Název (volitelné)
- Určuje přesný název prostředku, který se má shodovat, a způsobí, že zásady místo všech prostředků zadaného typu načítá jeden konkrétní prostředek.
- Když se hodnoty podmínky pro if.field.type a then.details.type shodují, pak se Název stane povinným a musí být , nebo pro podřízený
[field('name')][field('fullName')]prostředek. Místo toho by se ale měl zvážit účinek auditu.
- ResourceGroupName (volitelné)
- Umožňuje, aby párování souvisejícího prostředku pochytána z jiné skupiny prostředků.
- Neplatí, pokud type je prostředek, který by byl pod prostředek podmínky if.
- Výchozí hodnota je skupina prostředků prostředku podmínky if.
- ExistenceScope (volitelné)
- Povolené hodnoty jsou Subscription a ResourceGroup.
- Nastaví rozsah, ze kterých se má načíst související prostředek, který se má shodovat.
- Neplatí, pokud type je prostředek, který by byl pod prostředek podmínky if.
- Pro ResourceGroup by se omezila na skupinu prostředků podmínky if nebo skupinu prostředků zadanou v ResourceGroupName.
- V případě předplatného se dotazuje celého předplatného na související prostředek. Pro správné vyhodnocení by měl být obor přiřazení nastavený na předplatné nebo vyšší.
- Výchozí hodnota je ResourceGroup.
- EvaluationDelay (volitelné)
- Určuje, kdy se má vyhodnotit existence souvisejících prostředků. Zpoždění se používá pouze pro vyhodnocení, která jsou výsledkem požadavku na vytvoření nebo aktualizaci prostředku.
- Povolené hodnoty jsou , , nebo doba trvání
AfterProvisioningAfterProvisioningSuccessISOAfterProvisioningFailure8601 mezi 0 a 360 minutami. - Hodnoty Po zřizování prověří výsledek zřizování prostředku, který se vyhodnotil v pod podmínkě IF pravidla zásad.
AfterProvisioningse spustí po dokončení zřizování bez ohledu na výsledek. Pokud zřizování trvá déle než 6 hodin, při určování zpoždění vyhodnocení zřizování se zachází jako se selháním. - Výchozí hodnota
PT10Mje (10 minut). - Zadání dlouhého zpoždění vyhodnocení může způsobit, že se zaznamenaný stav dodržování předpisů prostředku ne aktualizuje až do dalšího triggeru vyhodnocení.
- ExistenceCondition (volitelné)
- Pokud není zadaný, jakýkoli související prostředek typu splňuje účinek a nespouštěje audit.
- Používá stejný jazyk jako pravidlo zásad pro podmínku if, ale vyhodnocuje se pro každý související prostředek zvlášť.
- Pokud se některý odpovídající související prostředek vyhodnotí jako true, je účinek splněný a nespouštěl audit.
- Pomocí [field()] můžete zkontrolovat ekvivalenci s hodnotami v pod podmínkě if.
- Můžete například použít k ověření, že nadřazený prostředek (v pod podmínkou if) je ve stejném umístění prostředku jako odpovídající související prostředek.
Příklad AuditIfNotExists
Příklad: Vyhodnotí Virtual Machines, jestli antimalwarové rozšíření existuje, a pak v případě chybějícího rozšíření audituje.
{
"if": {
"field": "type",
"equals": "Microsoft.Compute/virtualMachines"
},
"then": {
"effect": "auditIfNotExists",
"details": {
"type": "Microsoft.Compute/virtualMachines/extensions",
"existenceCondition": {
"allOf": [{
"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
"equals": "Microsoft.Azure.Security"
},
{
"field": "Microsoft.Compute/virtualMachines/extensions/type",
"equals": "IaaSAntimalware"
}
]
}
}
}
}
Odepřít
Zamítnutí se používá k tomu, aby se zabránilo požadavku na prostředek, který neodpovídá definovaným standardům prostřednictvím definice zásady, a požadavek selže.
Odepřít vyhodnocení
Při vytváření nebo aktualizaci odpovídajícího prostředku v Resource Manager režimu zabrání odepření požadavku před odesláním poskytovateli prostředků. Požadavek se vrátí jako 403 (Forbidden) . Na portálu můžete zakázáno zobrazit jako stav nasazení, který přiřazení zásady znemožňoval. V případě režimu poskytovatele prostředků spravuje vyhodnocení prostředku poskytovatel prostředků.
Během vyhodnocování existujících prostředků se prostředky, které odpovídají definici zásady odepření, označí jako nedodržující předpisy.
Odepřít vlastnosti
V Resource Manager režimu zamítnutí nemá účinek zamítnutí žádné další vlastnosti pro použití v podměně then definice zásady.
V režimu poskytovatele prostředků Microsoft.Kubernetes.Data má účinek odepření následující další podvlastnosti podrobností. Pro nové nebo aktualizované definice zásad se vyžaduje použití , jak templateInfo constraintTemplate je zastaralé.
- templateInfo (povinné)
- Nelze použít s
constraintTemplate. - sourceType (povinné)
Definuje typ zdroje pro šablonu omezení. Povolené hodnoty: PublicURL nebo Base64Encoded.
Pokud PublicURL, spárovaný s
urlvlastností k poskytnutí umístění šablony omezení. Umístění musí být veřejně přístupné.Upozornění
Nepoužívejte identifikátory URI SAS nebo tokeny v nástroji ani nic
urljiného, co by mohlo zveřejnit tajný kód.Pokud base64Encoded, spárováno s vlastností , aby se poskytla šablona omezení s kódováním
contentBase 64. Informace o vytvoření vlastní definice z existující šablony omezení Open Policy Agent (OPA) GateKeeper v3 najdete v tématu Vytvoření definice zásady ze šablony omezení.
- Nelze použít s
- constraint (volitelné)
- Nelze použít s
templateInfo. - Implementace CRD šablony omezení. Používá parametry předané prostřednictvím hodnot jako
{{ .Values.<valuename> }}. V příkladu 2 níže jsou tyto hodnoty{{ .Values.excludedNamespaces }}a{{ .Values.allowedContainerImagesRegex }}.
- Nelze použít s
- obory názvů (volitelné)
- Pole oborů názvů Kubernetes, na které se má omezit vyhodnocování zásad.
- Prázdná nebo chybějící hodnota způsobí, že vyhodnocení zásad bude zahrnovat všechny obory názvů s výjimkou těch definovaných ve vyloučených oborech názvů.
- excludedNamespaces (povinné)
- Pole oborů názvů Kubernetes, které se mají vyloučit z vyhodnocení zásad.
- labelSelector (povinné)
- Objekt, který obsahuje vlastnosti matchLabels (object) a matchExpression (pole), aby bylo možné určit, které prostředky Kubernetes se mají zahrnout pro vyhodnocení zásad, které odpovídají zadaným popiskům a selektorům .
- Prázdná nebo chybějící hodnota způsobí, že vyhodnocení zásad bude obsahovat všechny popisky a selektory s výjimkou oborů názvů definovaných ve vyloučených oborech názvů.
- apiGroups (povinné při použití templateInfo)
- Pole, které obsahuje skupiny rozhraní API, které se mají shodovat. Prázdné pole (
[""]) je základní skupina rozhraní API, zatímco odpovídá všem["*"]skupinám rozhraní API.
- Pole, které obsahuje skupiny rozhraní API, které se mají shodovat. Prázdné pole (
- kinds (povinné při použití templateInfo)
- Pole, které obsahuje druh objektu Kubernetes, na který se má omezit vyhodnocení.
- hodnoty (volitelné)
- Definuje všechny parametry a hodnoty, které se mají předat do constraint. Každá hodnota musí existovat v crd šablony omezení.
- constraintTemplate (zastaralé)
- Nelze použít s
templateInfo. - Při vytváření nebo aktualizaci definice
templateInfozásady je nutné nahradit za . - Šablona omezení CustomResourceDefinition (CRD), která definuje nová omezení. Šablona definuje logiku Rego, schéma omezení a parametry omezení, které se předá prostřednictvím hodnot z Azure Policy. K nahrazení se doporučuje použít
templateInfoconstraintTemplatenovější.
- Nelze použít s
Příklad odepření
Příklad 1: Použití efektu odepření pro Resource Manager režimy
"then": {
"effect": "deny"
}
Příklad 2: Použití efektu odepření pro režim poskytovatele prostředků Microsoft.Kubernetes.Data . Další informace v details.templateInfo deklarují použití publicURL a nastaví umístění šablony Omezení, která se použije v Kubernetes k omezení povolených imagí url kontejneru.
"then": {
"effect": "deny",
"details": {
"templateInfo": {
"sourceType": "PublicURL",
"url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
},
"values": {
"imageRegex": "[parameters('allowedContainerImagesRegex')]"
},
"apiGroups": [""],
"kinds": ["Pod"]
}
}
DeployIfNotExists
Podobně jako AuditIfNotExists spustí definice zásady DeployIfNotExists nasazení šablony při splnití podmínky.
Poznámka
Vnořené šablony jsou podporované u deployIfNotExists, ale propojené šablony se v současné době nepodporují.
Vyhodnocení DeployIfNotExists
DeployIfNotExists se spustí po konfigurovatelné prodlevě, když poskytovatel prostředků zpracuje žádost o vytvoření nebo aktualizaci předplatného nebo prostředku a vrátí stavový kód úspěchu. K nasazení šablony dojde v případě, že neexistují žádné související prostředky nebo pokud se prostředky definované podmínkou ExistenceCondition nevyhodnotí jako true. Doba trvání nasazení závisí na složitosti prostředků zahrnutých v šabloně.
Během cyklu vyhodnocení se definice zásad s efektem DeployIfNotExists, které odpovídají prostředkům, označí jako nekompatibilní, ale u tohoto prostředku se neprovádí žádná akce. Stávající prostředky nedodržující předpisy je možné opravit pomocí úlohy nápravy.
Vlastnosti DeployIfNotExists
Vlastnost details efektu DeployIfNotExists má všechny podvlastnosti, které definují odpovídající související prostředky, a nasazení šablony, které se má provést.
Typ (povinné)
- Určuje typ souvisejícího prostředku, který se má shodovat.
- Začíná tím, že se pokoušíte načíst prostředek pod prostředek podmínky if, a pak se dotazuje ve stejné skupině prostředků jako prostředek podmínky if.
Název (volitelné)
- Určuje přesný název prostředku, který se má shodovat, a způsobí, že zásady místo všech prostředků zadaného typu načítá jeden konkrétní prostředek.
- Když se hodnoty podmínky pro if.field.type a then.details.type shodují, název se stane povinným a musí být , nebo pro podřízený
[field('name')][field('fullName')]prostředek.
ResourceGroupName (volitelné)
- Umožňuje, aby párování souvisejícího prostředku pochokané z jiné skupiny prostředků.
- Neplatí, pokud type je prostředek, který by byl pod prostředek podmínky if.
- Výchozí hodnota je skupina prostředků prostředku podmínky if.
- Pokud se spustí nasazení šablony, nasadí se ve skupině prostředků této hodnoty.
ExistenceScope (volitelné)
- Povolené hodnoty jsou Subscription a ResourceGroup.
- Nastaví rozsah, ze kterých se má načíst související prostředek, který se má shodovat.
- Neplatí, pokud type je prostředek, který by byl pod prostředek podmínky if.
- Pro ResourceGroup by se omezila na skupinu prostředků podmínky if nebo skupinu prostředků zadanou v ResourceGroupName.
- V případě předplatného se dotazuje celého předplatného na související prostředek. Pro správné vyhodnocení by měl být obor přiřazení nastavený na předplatné nebo vyšší.
- Výchozí hodnota je ResourceGroup.
EvaluationDelay (volitelné)
- Určuje, kdy se má vyhodnotit existence souvisejících prostředků. Zpoždění se používá pouze pro vyhodnocení, která jsou výsledkem požadavku na vytvoření nebo aktualizaci prostředku.
- Povolené hodnoty jsou , , nebo doba trvání
AfterProvisioningAfterProvisioningSuccessISOAfterProvisioningFailure8601 mezi 0 a 360 minutami. - Hodnoty Po zřizování prověří výsledek zřizování prostředku, který se vyhodnotil v pod podmínkě IF pravidla zásad.
AfterProvisioningse spustí po dokončení zřizování bez ohledu na výsledek. Pokud zřizování trvá déle než 6 hodin, při určování zpoždění vyhodnocení zřizování se zachází jako se selháním. - Výchozí hodnota
PT10Mje (10 minut). - Zadání dlouhého zpoždění vyhodnocení může způsobit, že se zaznamenaný stav dodržování předpisů prostředku ne aktualizován, dokud nesnížuje další aktivační událost vyhodnocení.
ExistenceCondition (volitelné)
- Pokud není zadaný, jakýkoli související prostředek typu splňuje účinek a nespouštěje nasazení.
- Používá stejný jazyk jako pravidlo zásad pro podmínku if, ale vyhodnocuje se pro každý související prostředek zvlášť.
- Pokud se některý odpovídající související prostředek vyhodnotí jako true, je účinek splněný a nespouštěl nasazení.
- Pomocí [field()] můžete zkontrolovat ekvivalenci s hodnotami v pod podmínkě if.
- Můžete například použít k ověření, že nadřazený prostředek (v pod podmínkou if) je ve stejném umístění prostředku jako odpovídající související prostředek.
roleDefinitionIds (povinné)
- Tato vlastnost musí obsahovat pole řetězců, které odpovídají ID role řízení přístupu na základě role dostupné pro předplatné. Další informace najdete v tématu Náprava – konfigurace definice zásady.
DeploymentScope (volitelné)
- Povolené hodnoty jsou Subscription a ResourceGroup.
- Nastaví typ nasazení, které se má aktivovat. Předplatné označuje nasazení na úrovni předplatného, ResourceGroup označuje nasazení do skupiny prostředků.
- Při použití nasazení na úrovni předplatného musí být v nasazení zadaná vlastnost umístění.
- Výchozí hodnota je ResourceGroup.
Nasazení (povinné)
- Tato vlastnost by měla zahrnovat úplné nasazení šablony, protože by se předá do
Microsoft.Resources/deploymentsrozhraní PUT API. Další informace najdete v tématu Nasazení REST API. - Vnořené
Microsoft.Resources/deploymentsv šabloně by měly používat jedinečné názvy, aby nedocházelo ke škádám mezi více vyhodnoceními zásad. Název nadřazeného nasazení lze použít jako součást názvu vnořeného nasazení prostřednictvím[concat('NestedDeploymentName-', uniqueString(deployment().name))].
Poznámka
Všechny funkce ve vlastnosti Deployment se vyhodnocují jako součásti šablony, ne jako zásady. Výjimkou je vlastnost parameters, která předává hodnoty ze zásady do šablony. Hodnota v této části pod názvem parametru šablony slouží k předávání této hodnoty (viz fullDbName v příkladu DeployIfNotExists).
- Tato vlastnost by měla zahrnovat úplné nasazení šablony, protože by se předá do
Příklad DeployIfNotExists
Příklad: Vyhodnotí SQL Server databází a určí, jestli je povolená funkce transparentDataEncryption. Pokud ne, provede se nasazení, které se povolí.
"if": {
"field": "type",
"equals": "Microsoft.Sql/servers/databases"
},
"then": {
"effect": "DeployIfNotExists",
"details": {
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"name": "current",
"evaluationDelay": "AfterProvisioning",
"roleDefinitionIds": [
"/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
"/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
],
"existenceCondition": {
"field": "Microsoft.Sql/transparentDataEncryption.status",
"equals": "Enabled"
},
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"fullDbName": {
"type": "string"
}
},
"resources": [{
"name": "[concat(parameters('fullDbName'), '/current')]",
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"apiVersion": "2014-04-01",
"properties": {
"status": "Enabled"
}
}]
},
"parameters": {
"fullDbName": {
"value": "[field('fullName')]"
}
}
}
}
}
}
Zakázáno
Tento účinek je užitečný pro testovací situace nebo pro případy, kdy definice zásady parametrizuje účinek. Díky této flexibilitě je možné místo zakázání všech přiřazení této zásady zakázat jedno přiřazení.
Alternativou k efektu Disabled je enforcementMode, který je nastavený u přiřazení zásady. Pokud je vlastnost enforcementMode zakázaná, prostředky se stále vyhodnocují. K protokolování, jako jsou protokoly aktivit a efekt zásad, nedochází. Další informace najdete v tématu Přiřazení zásad – režim vynucení.
VynuceníopaConstraint
Tento účinek se používá v režimu definice zásady Microsoft.Kubernetes.Data . Slouží k předání pravidel řízení přístupu Gatekeeper v3 definovaných pomocí OPA Constraint Framework do agenta OPA (Open Policy Agent) do clusterů Kubernetes v Azure.
Důležité
Definice zásad ve verzi Limited Preview s efektem EnforceOPAConstraint a související kategorií služby Kubernetes Service jsou zastaralé. Místo toho použijte efekty auditovat a odepřít v režimu poskytovatele prostředků Microsoft.Kubernetes.Data .
Vynucení vyhodnoceníOPAConstraint
Kontroler přístupu agenta Open Policy vyhodnocuje všechny nové požadavky v clusteru v reálném čase. Každých 15 minut se dokončí úplná kontrola clusteru a výsledky hlášené Azure Policy.
Vynucení vlastnostíOPAConstraint
Vlastnost details efektu EnforceOPAConstraint má podvlastnosti, které popisují pravidlo řízení přístupu Gatekeeper v3.
- constraintTemplate (povinné)
- Šablona omezení CustomResourceDefinition (CRD), která definuje nová omezení. Šablona definuje logiku Rego, schéma omezení a parametry omezení, které se předá prostřednictvím hodnot z Azure Policy.
- constraint (povinné)
- Implementace CRD šablony omezení. Používá parametry předané prostřednictvím hodnot jako
{{ .Values.<valuename> }}. V následujícím příkladu jsou tyto hodnoty{{ .Values.cpuLimit }}a{{ .Values.memoryLimit }}.
- Implementace CRD šablony omezení. Používá parametry předané prostřednictvím hodnot jako
- hodnoty (volitelné)
- Definuje všechny parametry a hodnoty, které se mají předat do constraint. Každá hodnota musí existovat v crd šablony omezení.
Příklad EnforceOPAConstraint
Příklad: pravidlo pro Admission Control pro gatekeeper v3, které nastaví omezení prostředků procesoru a paměti v Kubernetes.
"if": {
"allOf": [
{
"field": "type",
"in": [
"Microsoft.ContainerService/managedClusters",
"AKS Engine"
]
},
{
"field": "location",
"equals": "westus2"
}
]
},
"then": {
"effect": "enforceOPAConstraint",
"details": {
"constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/template.yaml",
"constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/constraint.yaml",
"values": {
"cpuLimit": "[parameters('cpuLimit')]",
"memoryLimit": "[parameters('memoryLimit')]"
}
}
}
EnforceRegoPolicy
Tento efekt se používá v režimu definice zásad Microsoft.ContainerService.Data . Používá se k předávání pravidel řízení přístupu serveru gatekeeper v2 definovaných pomocí Rego k otevření agenta zásad (Neprů) ve službě Azure Kubernetes Service.
Důležité
Definice zásad omezené verze Preview s EnforceRegoPolicy efektem a související kategorií služby Kubernetes jsou zastaralé. Místo toho použijte audit efektů a Odepřít v režimu poskytovatele prostředků Microsoft.Kubernetes.Data .
EnforceRegoPolicy vyhodnocování
Otevřený řadič pro přístup agenta zásad vyhodnocuje všechny nové žádosti v clusteru v reálném čase. Každých 15 minut se dokončila úplná kontrola clusteru a výsledky nahlásily Azure Policy.
Vlastnosti EnforceRegoPolicy
Vlastnost Details EnforceRegoPolicy efektu má podvlastnosti, které popisují pravidlo pro Admission Control pro rozhraní gatekeeper v2.
- policyId (povinné)
- K pravidlu Rego Admission Control se předal jedinečný název jako parametr.
- zásada (povinné)
- Určuje identifikátor URI pravidla Rego Admission Control.
- policyParameters (volitelné)
- Definuje všechny parametry a hodnoty, které se mají předat zásadám Rego.
Příklad EnforceRegoPolicy
Příklad: pravidlo pro Admission Control pro gatekeeper v2, které povoluje pouze zadané image kontejneru v AKS.
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.ContainerService/managedClusters"
},
{
"field": "location",
"equals": "westus2"
}
]
},
"then": {
"effect": "EnforceRegoPolicy",
"details": {
"policyId": "ContainerAllowedImages",
"policy": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/KubernetesService/container-allowed-images/limited-preview/gatekeeperpolicy.rego",
"policyParameters": {
"allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]"
}
}
}
Modify
Příkaz Upravit se používá k přidání, aktualizaci nebo odebrání vlastností nebo značek pro předplatné nebo prostředek během vytváření nebo aktualizace. Běžným příkladem je aktualizace značek na prostředky, jako je costCenter. Stávající prostředky, které nedodržují předpisy, lze opravit pomocí úlohy nápravy. Jediné pravidlo změny může mít libovolný počet operací.
Následující operace jsou podporovány úpravou:
- Přidejte, nahraďte nebo odeberte značky prostředků. U značek by měly být zásady úprav
modenastavené na indexované , pokud cílový prostředek není skupina prostředků. - Přidejte nebo nahraďte hodnotu spravovaného typu identity (
identity.type) virtuálních počítačů a sady škálování virtuálních počítačů. - Přidejte nebo nahraďte hodnoty určitých aliasů.
- Použití
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }v Azure PowerShell 4.6.0 nebo vyšší získáte seznam aliasů, které lze použít s úpravou.
- Použití
Důležité
Pokud spravujete značky, doporučuje se místo možnosti připojit jako upravit zadat další typy operací a možnost opravit stávající prostředky. Připojení se ale doporučuje, pokud nemůžete vytvořit spravovanou identitu nebo upravit ještě nepodporují alias pro vlastnost prostředku.
Upravit vyhodnocení
Úprava je vyhodnocena před tím, než je žádost zpracována poskytovatelem prostředků během vytváření nebo aktualizace prostředku. Operace změny se aplikují na obsah požadavku, pokud je splněna podmínka if pravidla zásad. Každá operace úprav může určovat podmínku, která určuje, kdy se použije. Operace s podmínkami, které jsou vyhodnocovány na hodnotu false , se přeskočí.
Když se zadá alias, provedou se následující další kontroly, aby se zajistilo, že operace změny nemění obsah žádosti způsobem, který způsobí, že ho poskytovatel prostředků odmítne:
- Vlastnost, na kterou se alias mapuje, je ve verzi rozhraní API žádosti označená jako "upravitelná".
- Typ tokenu v operaci Modify odpovídá očekávanému typu tokenu pro vlastnost ve verzi rozhraní API žádosti.
Pokud některá z těchto kontrol selže, hodnocení zásad se vrátí zpět na zadaný conflictEffect.
Důležité
Doporučuje se, aby změny definic, které obsahují aliasy, používaly konflikt auditu , aby nedocházelo k 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í operace změny používané pro jednotlivé verze rozhraní API použít operace podmíněného provádění změn.
Když se v rámci zkušebního cyklu spustí definice zásady pomocí efektu změny, 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í.
Upravit vlastnosti
Vlastnost Details pro efekt úpravy obsahuje všechny podvlastnosti, které definují oprávnění potřebná k nápravě a operace používané k přidání, aktualizaci nebo odebrání hodnot značek.
- roleDefinitionIds (povinné)
- Tato vlastnost musí zahrnovat pole řetězců, které odpovídají ID role řízení přístupu na základě rolí přístupné pro předplatné. Další informace najdete v tématu náprava – konfigurace definice zásad.
- Definovaná role musí zahrnovat všechny operace udělené roli přispěvatele .
- conflictEffect (volitelné)
- Určuje, která definice zásad "WINS", pokud více než jedna definice zásad upravuje stejnou vlastnost nebo když operace úpravy nefunguje na zadaném aliasu.
- U nových nebo aktualizovaných prostředků má přednost definice zásad s odepřením . Definice zásad s auditem přeskočí všechny operace. Pokud má zamítnutí více než jedna definice zásady, je žádost zamítnuta jako konflikt. Pokud všechny definice zásad mají audit, nezpracovávají se žádné operace pro konfliktní definice zásad.
- V případě existujících prostředků, pokud více než jedna definice zásad má odepření, je stav dodržování předpisů konflikt. Pokud jeden nebo více definic zásad má zamítnutí, každé přiřazení vrátí stav dodržování předpisů jako nevyhovující.
- Dostupné hodnoty: audit, Deny, zakázáno.
- Výchozí hodnota je Deny.
- Určuje, která definice zásad "WINS", pokud více než jedna definice zásad upravuje stejnou vlastnost nebo když operace úpravy nefunguje na zadaném aliasu.
- operace (povinné)
- Pole všech operací značek, které mají být dokončeny na vyhovujících prostředcích.
- Vlastnosti:
- operace (povinné)
- Definuje akci, která se má provést u odpovídajícího prostředku. Možnosti jsou: addOrReplace, Add, Remove. Přidat se chová podobně jako v efektu připojit .
- pole (povinné)
- Značka, která se má přidat, nahradit nebo odebrat. Názvy značek musí splňovat stejné zásady vytváření názvů pro ostatní pole.
- hodnota (nepovinná)
- Hodnota, na kterou má být značka nastavena.
- Tato vlastnost je povinná, pokud je operace addOrReplace nebo Add.
- Podmínka (volitelné)
- Řetězec obsahující Azure Policy výraz jazyka s funkcemi zásad , které jsou vyhodnoceny na hodnotu true nebo false.
- Nepodporuje následující funkce zásad:
field(),resourceGroup(),subscription().
- operace (povinné)
Úpravy operací
Pole vlastností Operations umožňuje změnit několik značek různými způsoby v rámci jedné definice zásady. Každá operace se skládá z vlastností operace, pole a hodnoty . Operace určuje, co je úloha nápravy pro značky, pole určuje, která značka se změní, a hodnota definuje nové nastavení pro tuto značku. Následující příklad provede následující změny značek:
- Nastaví
environmentznačku na "test", a to i v případě, že již existuje s jinou hodnotou. - Odebere značku
TempResource. - Nastaví
Deptznačku na parametr zásad, který je 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:
| Operace | Description |
|---|---|
| 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. |
| Přidání | Přidá do prostředku definovanou vlastnost nebo značku a hodnotu. |
| Odebrat | Odebere definovanou vlastnost nebo značku z prostředku. |
Upravit příklady
Příklad 1: přidejte environment značku a nahraďte stávající environment značky "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: odebrání env značky a přidání environment značky nebo náhrada stávajících environment značek s 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 objektu blob, operace úpravy se použije jenom při vyhodnocování požadavků s rozhraním API, které je větší nebo rovno hodnotě 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
}
]
}
}
Definice zásad vrstvení
Na prostředek může mít vliv několik přiřazení. Tato přiřazení mohou být ve stejném oboru nebo v různých oborech. Každé z těchto přiřazení bude mít také pravděpodobně definovaný jiný účinek. Podmínka a účinek pro každou zásadu se vyhodnotí nezávisle. Například:
- Zásada 1
- Omezí umístění prostředku na westus.
- Přiřazeno k předplatnému A
- Účinek Odepřít
- Zásada 2
- Omezuje umístění prostředku na eastus.
- Přiřazeno ke skupině prostředků B v předplatném A
- Účinek auditu
Výsledkem tohoto nastavení by byl následující výsledek:
- Všechny prostředky ve skupině prostředků B v oblasti eastus jsou kompatibilní se zásadou 2 a nevyhovují zásadám 1.
- Všechny prostředky, které už ve skupině prostředků B nejsou v eastus, nevyhovují zásadám 2 a nevyhovují zásadám 1, pokud nejsou v oblasti westus.
- Zásady 1 odepírá všechny nové prostředky v předplatném A, které nejsou v westus.
- Všechny nové prostředky v předplatném A a skupině prostředků B v oblasti westus se vytvoří a nevyhovují zásadám 2.
Pokud zásady 1 i zásady 2 měly účinek zamítnutí, situace se změní na:
- Všechny prostředky ve skupině prostředků B, které nejsou ve skupině eastus, nevyhovují zásadám 2.
- Jakýkoli prostředek, který už je ve skupině prostředků B mimo westus, nevyhovuje zásadám 1.
- Zásady 1 odepírá všechny nové prostředky v předplatném A, které nejsou v westus.
- Všechny nové prostředky ve skupině prostředků B předplatného A jsou odepřené.
Každé přiřazení se vyhodnocuje jednotlivě. Proto prostředek nemá příležitost projde mezerou od rozdílů v rozsahu. Čistý výsledek definic zásad vrstvení se považuje za kumulativní nejvíce omezující. Pokud by například zásady 1 i 2 měly účinek zamítnutí, zablokovaly by prostředky překrývající se a konfliktní definice zásad. Pokud stále potřebujete vytvořit prostředek v cílovém oboru, zkontrolujte vyloučení jednotlivých přiřazení a ověřte, že správné přiřazení zásad mají vliv na správné obory.
Další kroky
- Příklady najdete v Azure Policy ukázky.
- Projděte si strukturu definic Azure Policy.
- Porozumíte programovému vytváření zásad.
- Zjistěte, jak získat data o dodržování předpisů.
- Naučte se napravovat prostředky, které nedodržují předpisy.
- Informace o tom, co je skupina pro správu, můžete zkontrolovat pomocí nástroje Uspořádat prostředky pomocí skupin pro správu Azure.