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 url vlastností 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 url jiného, co by mohlo zveřejnit tajný kód.

      • Pokud base64Encoded, spárováno s vlastností , aby se poskytla šablona omezení s content kó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í.

  • 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 }} .
  • 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é)
  • 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.
  • 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 templateInfo 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.

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í AfterProvisioning AfterProvisioningSuccess ISO AfterProvisioningFailure 8601 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. AfterProvisioning se 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 PT10M je (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 url vlastností 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 url jiné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 content 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í.

  • 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 }} .
  • 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é)
  • 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.
  • 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 templateInfo zá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 templateInfo constraintTemplate novější.

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í AfterProvisioning AfterProvisioningSuccess ISO AfterProvisioningFailure 8601 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. AfterProvisioning se 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 PT10M je (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/deployments rozhraní PUT API. Další informace najdete v tématu Nasazení REST API.
    • Vnořené Microsoft.Resources/deployments v š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).

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 }} .
  • 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 mode nastavené 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.

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.
  • 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() .

Ú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í environment značku na "test", a to i v případě, že již existuje s jinou hodnotou.
  • Odebere značku TempResource .
  • Nastaví Dept znač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