Vysvětlení účinků zásad Azure Policy

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 shoda. Efekty se chovají jinak, pokud se jedná o nový prostředek, aktualizovaný prostředek nebo existující prostředek.

V definici zásad se v současné době podporují tyto efekty:

Následující efekty jsou zastaralé:

Důležité

Místo efektů EnforceOPAConstraint nebo EnforceRegoPolicy použijte audit a odepřít s režimem Microsoft.Kubernetes.Dataposkytovatele prostředků . Předdefinované definice zásad byly aktualizovány. Pokud se změní stávající přiřazení těchto předdefinovaných definic zásad, musí být parametr efektu změněn na hodnotu v aktualizovaném seznamu allowedValues .

Pořadí vyhodnocování

Požadavky na vytvoření nebo aktualizaci prostředku vyhodnotí nejprve služba Azure Policy. Služba Azure Policy vytvoří seznam všech přiřazení, která se vztahují k danému prostředku, a pak tento prostředek vyhodnotí pro každou definici. V Resource Manager režimu Azure Policy před předáním požadavku příslušnému poskytovateli prostředků zpracuje několik efektů. Toto pořadí brání 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 nahlásí výsledky zpět do Azure Policy.

  • Nejprve je zaškrtnuto políčko Zakázáno, aby se zjistilo, jestli se má pravidlo zásad vyhodnotit.
  • Potom se vyhodnotí připojení a změna. Vzhledem k tomu, že obě tyto možnosti by mohly požadavek změnit, může provedená změna zabránit aktivaci účinku odmítnutí nebo auditu. Tyto efekty jsou k dispozici pouze v režimu Resource Manager.
  • Potom se vyhodnotí zamítnutí. Vyhodnocením zamítnutí před auditem se zabrání dvojitému protokolování nežádoucího prostředku.
  • Audit se vyhodnotí jako poslední.

Jakmile poskytovatel prostředků vrátí kód úspěchu v požadavku na režim Resource Manager, auditIfNotExists a DeployIfNotExists vyhodnotí, jestli se vyžaduje další protokolování dodržování předpisů nebo akce.

Kromě toho PATCH požadavky, které upravují tags pouze související pole, omezují vyhodnocení zásad na zásady obsahující podmínky, které kontrolují tags související pole.

Připojit

Připojení slouží k přidání dalších polí do požadovaného prostředku během vytváření nebo aktualizace. Běžným příkladem je určení povolených IP adres pro prostředek úložiště.

Důležité

Připojení je určeno pro použití s vlastnostmi, které nejsou značky. Zatímco připojení může přidávat značky k prostředku během žádosti o vytvoření nebo aktualizaci, doporučuje se místo toho použít efekt Upravit pro značky.

Vyhodnocení připojení

Připojení se vyhodnotí před zpracováním požadavku poskytovatelem prostředků během vytváření nebo aktualizace prostředku. Pokud je splněna podmínka pravidla zásad, přidá se k prostředku pole. Pokud by přidávací efekt přepsal hodnotu v původním požadavku jinou hodnotou, funguje jako efekt zamítnutí a odmítne požadavek. Pokud chcete k existujícímu poli připojit novou hodnotu, použijte verzi aliasu [* ].

Pokud je definice zásady používající přidávací efekt spuštěna jako součást zkušebního cyklu, neprovádí změny prostředků, které již existují. Místo toho označí všechny prostředky, které splňují podmínku if jako nevyhovující.

Vlastnosti připojení

Přidávací efekt má pouze pole podrobností , které je povinné. Vzhledem k tomu, že podrobnosti jsou matice, může mít buď jeden pár polí nebo hodnoty , nebo násobky. Projděte si strukturu definic pro seznam přijatelných polí.

Příklady připojení

Příklad 1: Pár jednoúčelových polí a hodnot pomocí aliasu jiného typu než[*]s maticovou hodnotou pro nastavení pravidel PROTOKOLU IP pro účet úložiště. Pokud je alias jiného typu než[*], efekt připojí hodnotu jako celé pole. Pokud pole již existuje, dojde ke konfliktu událost zamítnutí.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules",
        "value": [{
            "action": "Allow",
            "value": "134.5.0.0/21"
        }]
    }]
}

Příklad 2: Pár jednoúčelových polí a hodnot pomocí aliasu[*]s maticovou hodnotou pro nastavení pravidel PROTOKOLU IP pro účet úložiště. Pomocí aliasu [*] připojí efekt 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í nevyhovujícího prostředku, ale požadavek se nezastaví.

Vyhodnocení auditu

Audit je poslední efekt, který kontroluje Azure Policy během vytváření nebo aktualizace prostředku. V Resource Manager režimu Azure Policy pak prostředek odešle poskytovateli prostředků. Při vyhodnocování žádosti o vytvoření nebo aktualizaci prostředku Azure Policy přidá Microsoft.Authorization/policies/audit/action operaci do protokolu aktivit a označí prostředek jako nevyhovující předpisům. 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žimu nemá efekt auditu žádné další vlastnosti pro použití v podmínce definice zásady.

V případě režimu Microsoft.Kubernetes.Dataposkytovatele prostředků má účinek auditu následující další dílčí podrobnosti. templateInfo Použití je vyžadováno pro nové nebo aktualizované definice zásad, jak 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árováno s vlastností url pro poskytnutí umístění šablony omezení. Umístění musí být veřejně přístupné.

        Upozornění

        Nepoužívejte identifikátory URI SAS, tokeny adresy URL ani nic jiného, co by mohlo vystavit tajné kódy ve formátu prostého textu.

      • Pokud Base64Encoded, spárováno s vlastností content za účelem poskytnutí základní 64 zakódované omezené šablony. Viz Vytvoření definice zásad ze šablony omezení a vytvoření vlastní definice z existující šablony omezení OPA (Open Policy Agent) GateKeeper v3.

  • omezení (zastaralé)
    • Nelze použít s templateInfo.
    • Implementace CRD šablony Omezení Používá parametry předané hodnotami jako{{ .Values.<valuename> }}. V příkladu 2 níže jsou {{ .Values.excludedNamespaces }} tyto hodnoty a {{ .Values.allowedContainerImagesRegex }}.
  • obory názvů (volitelné)
    • Poleoborů názvů Kubernetes pro omezení vyhodnocování zásad na.
    • Prázdná nebo chybějící hodnota způsobí, že vyhodnocení zásad bude obsahovat všechny obory názvů s výjimkou těch definovaných v vyloučenýchnamespaces.
  • excludedNamespaces (povinné)
  • labelSelector (povinné)
    • Objekt, který obsahuje vlastnosti matchLabels (object) a matchExpression (array), aby bylo možné určit, které prostředky Kubernetes mají obsahovat pro vyhodnocení zásad odpovídající zadaným popiskům a selektorům.
    • Prázdná nebo chybějící hodnota způsobí, že vyhodnocení zásad zahrne všechny popisky a selektory s výjimkou oborů názvů definovaných v vyloučenýchnamespaces.
  • apiGroups (povinné při použití templateInfo)
    • Pole, které zahrnuje skupiny rozhraní API, které se mají shodovat. Prázdné pole ([""]) je základní skupina rozhraní API.
    • Definování ["*"] pro apiGroups je zakázáno.
  • druhy (povinné při použití templateInfo)
    • Pole, které zahrnuje druh objektu Kubernetes, aby se omezilo vyhodnocení.
    • Definování ["*"] pro typy je zakázáno.
  • hodnoty (volitelné)
    • Definuje všechny parametry a hodnoty, které se mají předat omezení. Každá hodnota musí existovat v šabloně omezení CRD.
  • constraintTemplate (zastaralé)
    • Nelze použít s templateInfo.
    • Při vytváření nebo aktualizaci definice zásad se musí nahradit templateInfo .
    • Šablona Omezení CustomResourceDefinition (CRD), která definuje nová omezení. Šablona definuje logiku rego, schéma omezení a parametry omezení předávané hodnotami z Azure Policy.

Příklad auditu

Příklad 1: Použití efektu auditu pro režimy Resource Manager

"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í knihovny PublicURL a nastaví url se na umístění šablony omezení, která se má použít v Kubernetes k omezení povolených imagí 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ředkem, který odpovídá podmínce if, ale nemá vlastnosti zadané v podrobnostechpodmínky.

AuditIfNotExists – vyhodnocení

AuditIfNotExists se spustí poté, co poskytovatel prostředků zpracoval žádost o vytvoření nebo aktualizaci prostředku a vrátil stavový kód úspěchu. Audit nastane v případě, že neexistují žádné související prostředky nebo pokud se prostředky definované službou ExistenceCondition nevyhodnocují jako true. U nových a aktualizovaných prostředků Azure Policy přidá Microsoft.Authorization/policies/audit/action operaci do protokolu aktivit a označí prostředek jako nevyhovující předpisům. Když se aktivuje, prostředek, který splnil podmínku if , je prostředek, který je označený jako nevyhovující předpisům.

AuditIfNotExists – vlastnosti

Vlastnost podrobností efektů AuditIfNotExists má všechny dílčí vlastnosti, které definují související prostředky, které se mají shodovat.

  • Typ (povinné)
    • Určuje typ souvisejícího prostředku, který se má shodovat.
    • Pokud je typ prostředku pod prostředkem podmínky if , zásady dotazují se na prostředky tohoto typu v rozsahu vyhodnoceného prostředku. V opačném případě se zásady dotazují ve stejné skupině prostředků nebo předplatném jako vyhodnocený prostředek v závislosti na existenciScope.
  • Název (volitelné)
    • Určuje přesný název prostředku, který se má shodovat, a způsobí, že zásada načte jeden konkrétní prostředek místo všech prostředků zadaného typu.
    • Pokud se hodnoty podmínky pro if.field.type a pak.details.type shodují , název sevyžaduje a musí být [field('name')]nebo [field('fullName')] pro podřízený prostředek. Místo toho by se ale měl zvážit účinek auditu .
  • ResourceGroupName (volitelné)
    • Umožňuje porovnávání souvisejícího prostředku pocházet z jiné skupiny prostředků.
    • Nepoužije se, pokud je typem prostředek, který by byl pod prostředkem podmínky if .
    • Výchozí hodnota je skupina prostředků prostředku podmínky.
  • ExistenceScope (volitelné)
    • Povolené hodnoty jsou Subscription a ResourceGroup.
    • Nastaví rozsah umístění, odkud se má související prostředek načíst, aby se shodovaly.
    • Nepoužije se, pokud je typem prostředek, který by byl pod prostředkem podmínky if .
    • V případě skupiny prostředků by se omezila skupina prostředků prostředku podmínky nebo skupina prostředků zadaná v ResourceGroupName.
    • V případě předplatného se dotazuje na celé předplatné pro související prostředek. Obor přiřazení by měl být nastavený na předplatné nebo vyšší pro správné vyhodnocení.
    • Výchozí hodnota je ResourceGroup.
  • VyhodnoceníDelay (volitelné)
    • Určuje, kdy by se měla vyhodnotit existence souvisejících prostředků. Zpoždění se používá pouze pro vyhodnocení, která jsou výsledkem žádosti o vytvoření nebo aktualizaci prostředku.
    • Povolené hodnoty jsou AfterProvisioning, , AfterProvisioningFailureAfterProvisioningSuccessnebo ISO 8601 doba trvání mezi 0 a 360 minut.
    • Hodnoty AfterProvisioning kontrolují výsledek zřizování prostředku, který byl vyhodnocen v podmínce IF pravidla zásad. AfterProvisioning spustí se po dokončení zřizování bez ohledu na výsledek. Pokud zřizování trvá déle než 6 hodin, považuje se za selhání při určování zpoždění vyhodnocení po zřízení .
    • Výchozí hodnota je PT10M (10 minut).
    • Určení dlouhé prodlevy vyhodnocení může způsobit, že se zaznamenaný stav dodržování předpisů prostředku neaktualizuje, dokud se neaktualizuje další aktivační událost vyhodnocení.
  • ExistenceCondition (volitelné)
    • Pokud není zadaný, žádný související prostředek typu splňuje účinek a neaktivuje audit.
    • Používá stejný jazyk jako pravidlo zásad pro podmínku if , ale vyhodnocuje se proti každému souvisejícímu prostředku jednotlivě.
    • Pokud se některý z odpovídajících souvisejících prostředků vyhodnotí jako true, efekt je splněný a neaktivuje audit.
    • Pomocí [field()] můžete zkontrolovat ekvivalenci s hodnotami v podmínce if .
    • Můžete například použít k ověření, že nadřazený prostředek (v podmínce 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 a určí, jestli rozšíření Antimalware existuje, pak audituje, když chybí.

{
    "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

Odepření se používá k zabránění 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 režimu Resource Manager odepřít požadavek před odesláním poskytovateli prostředků. Požadavek se vrátí jako 403 (Forbidden). Na portálu se zakázáno dá zobrazit jako stav nasazení, které přiřazení zásad znemožnilo. V režimu poskytovatele prostředků spravuje poskytovatel prostředků vyhodnocení prostředku.

Během vyhodnocení existujících prostředků se prostředky, které odpovídají definici zásady zamítnutí, označí jako nevyhovující předpisům.

Odepřít vlastnosti

V režimu Resource Manager nemá efekt zamítnutí žádné další vlastnosti pro použití v podmínce definice zásady.

V případě režimu poskytovatele prostředků má Microsoft.Kubernetes.Dataefekt zamítnutí následující další dílčí podrobnosti. templateInfo Použití je vyžadováno pro nové nebo aktualizované definice zásad, jak 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árováno s vlastností url pro poskytnutí umístění šablony omezení. Umístění musí být veřejně přístupné.

        Upozornění

        Nepoužívejte identifikátory URI sas ani tokeny ani url nic jiného, co by mohlo vystavit tajný kód.

      • Pokud Base64Encoded, spárováno s vlastností content za účelem poskytnutí základní 64 zakódované omezené šablony. Viz Vytvoření definice zásad ze šablony omezení a vytvoření vlastní definice z existující šablony omezení OPA (Open Policy Agent) GateKeeper v3.

  • omezení (volitelné)
    • Nelze použít s templateInfo.
    • Implementace CRD šablony Omezení Používá parametry předané hodnotami jako{{ .Values.<valuename> }}. V příkladu 2 níže jsou {{ .Values.excludedNamespaces }} tyto hodnoty a {{ .Values.allowedContainerImagesRegex }}.
  • obory názvů (volitelné)
    • Poleoborů názvů Kubernetes pro omezení vyhodnocování zásad na.
    • Prázdná nebo chybějící hodnota způsobí, že vyhodnocení zásad bude obsahovat všechny obory názvů s výjimkou těch definovaných v vyloučenýchnamespaces.
  • excludedNamespaces (povinné)
  • labelSelector (povinné)
    • Objekt, který obsahuje vlastnosti matchLabels (object) a matchExpression (array), aby bylo možné určit, které prostředky Kubernetes mají obsahovat pro vyhodnocení zásad odpovídající zadaným popiskům a selektorům.
    • Prázdná nebo chybějící hodnota způsobí, že vyhodnocení zásad zahrne všechny popisky a selektory s výjimkou oborů názvů definovaných v vyloučenýchnamespaces.
  • apiGroups (povinné při použití templateInfo)
    • Pole, které zahrnuje skupiny rozhraní API, které se mají shodovat. Prázdné pole ([""]) je základní skupina rozhraní API.
    • Definování ["*"] pro apiGroups je zakázáno.
  • druhy (povinné při použití templateInfo)
    • Pole, které obsahuje druh objektu Kubernetes pro omezení vyhodnocení.
    • Definování ["*"] pro druhy je zakázáno.
  • hodnoty (volitelné)
    • Definuje všechny parametry a hodnoty, které se mají předat omezení. Každá hodnota musí existovat v šabloně omezení CRD.
  • constraintTemplate (zastaralé)
    • Nelze použít s templateInfo.
    • Při vytváření nebo aktualizaci definice zásady je nutné nahradit templateInfo .
    • Šablona Constraint CustomResourceDefinition (CRD), která definuje nová omezení. Šablona definuje logiku Rego, schéma omezení a parametry Omezení, které se předávají prostřednictvím hodnot z Azure Policy. Doporučuje se použít novější templateInfo k nahrazení constraintTemplate.

Příklad odepření

Příklad 1: Použití efektu zamítnutí pro režimy Resource Manager

"then": {
    "effect": "deny"
}

Příklad 2: Použití efektu zamítnutí pro režim Microsoft.Kubernetes.Dataposkytovatele prostředků . Další informace v souboru details.templateInfo deklarují použití knihovny PublicURL a nastaví url umístění šablony omezení, které se má použít v Kubernetes k omezení povolených imagí 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 splnění podmínky. Přiřazení zásad s nastaveným účinkem jako DeployIfNotExists vyžadují spravovanou identitu k nápravě.

Poznámka

Vnořené šablony jsou podporovány pomocí deployIfNotExists, ale propojené šablony se v současné době nepodporují.

Vyhodnocení DeployIfNotExists

NasazeníIfNotExists se spustí po konfigurovatelné prodlevě, když poskytovatel prostředků zpracovává žádost o vytvoření nebo aktualizaci předplatného nebo prostředku a vrátil 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é službou ExistenceCondition nevyhodnocují jako true. Doba trvání nasazení závisí na složitosti prostředků zahrnutých v šabloně.

Během zkušebního cyklu se definice zásad s efektem DeployIfNotExists, který odpovídá prostředkům, označí jako nevyhovující, ale u tohoto prostředku se neprojeví žádná akce. Stávající nedodržující prostředky je možné napravit pomocí úlohy nápravy.

DeployIfNotExists – vlastnosti

Vlastnost podrobností efektu DeployIfNotExists má všechny dílčí podmínky, které definují související prostředky, které se mají shodovat, a nasazení šablony ke spuštění.

  • Typ (povinné)

    • Určuje typ souvisejícího prostředku, který se má shodovat.
    • Pokud je typ prostředku pod prostředkem podmínky if , zásady se dotazují na prostředky tohoto typu v rozsahu vyhodnoceného prostředku. V opačném případě se zásady dotazují ve stejné skupině prostředků nebo předplatném jako vyhodnocený prostředek v závislosti na existenciScope.
  • Název (volitelné)

    • Určuje přesný název prostředku, který se má shodovat, a způsobí, že zásada místo všech prostředků zadaného typu načte jeden konkrétní prostředek.
    • Pokud se hodnoty podmínky pro if.field.type a pak.details.type shodují, pak se název vyžaduje a musí být [field('name')][field('fullName')] nebo pro podřízený zdroj.
  • ResourceGroupName (volitelné)

    • Umožňuje shodný shod související prostředek pocházet z jiné skupiny prostředků.
    • Nepoužije se, pokud je typem prostředek, který by byl pod prostředkem podmínky if .
    • Výchozí hodnota je skupina prostředků prostředku podmínky.
    • Pokud se spustí nasazení šablony, nasadí se ve skupině prostředků této hodnoty.
  • ExistenceScope (volitelné)

    • Povolené hodnoty jsou Subscription a ResourceGroup.
    • Nastaví obor, ze kterého se má načíst související prostředek, ze kterého se má shodovat.
    • Nepoužije se, pokud je typem prostředek, který by byl pod prostředkem podmínky if .
    • U skupiny prostředků by se omezila na skupinu prostředků podmínky nebo skupinu prostředků zadanou v resourceGroupName.
    • V případě předplatného se dotazuje na celé předplatné pro 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 žádosti o vytvoření nebo aktualizaci prostředku.
    • Povolené hodnoty jsou AfterProvisioning, AfterProvisioningSuccess, AfterProvisioningFailurenebo iso 8601 doba trvání mezi 0 a 360 minut.
    • Hodnoty AfterProvisioning kontrolují výsledek zřizování prostředku, který byl vyhodnocen v podmínce IF pravidla zásad. AfterProvisioning 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í po zřízení se považuje za selhání.
    • Výchozí hodnota je PT10M (10 minut).
    • Určení dlouhé prodlevy vyhodnocení může způsobit, že se zaznamenaný stav dodržování předpisů prostředku neaktualizuje až do další aktivační události vyhodnocení.
  • ExistenceCondition (volitelné)

    • Pokud není zadaný, jakýkoli související prostředek typu splňuje účinek a neaktivuje nasazení.
    • Používá stejný jazyk jako pravidlo zásad pro podmínku if , ale vyhodnocuje se vůči jednotlivým souvisejícím prostředkům.
    • Pokud se některý z odpovídajících souvisejících prostředků vyhodnotí jako true, je efekt splněný a neaktivuje nasazení.
    • Pomocí [field()] můžete zkontrolovat ekvivalenci s hodnotami v podmínce if .
    • Můžete například použít k ověření, že nadřazený prostředek (v podmínce 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 přístupné předplatném. 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í zadána vlastnost umístění.
    • Výchozí hodnota je ResourceGroup.
  • Nasazení (povinné)

    • Tato vlastnost by měla zahrnovat úplné nasazení šablony, protože by bylo předáno Microsoft.Resources/deployments rozhraní PUT API. Další informace najdete v rozhraní REST API pro nasazení.
    • Vnořené Microsoft.Resources/deployments do šablony by měly používat jedinečné názvy, aby se zabránilo kolizím mezi více vyhodnoceními zásad. Název nadřazeného nasazení lze použít jako součást vnořeného názvu nasazení prostřednictvím [concat('NestedDeploymentName-', uniqueString(deployment().name))].

    Poznámka

    Všechny funkce uvnitř vlastnosti Nasazení se vyhodnocují jako součásti šablony, nikoli jako zásady. Výjimkou je vlastnost parametrů , která předává hodnoty ze zásady do šablony. Hodnota v této části pod názvem parametru šablony se používá k předání této hodnoty (viz fullDbName v příkladu DeployIfNotExists).

Příklad DeployIfNotExists

Příklad: Vyhodnotí SQL Server databáze a určí, jestli je povoleno transparentní šifrováníDataEncryption. Pokud ne, spustí 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 efekt. Tato flexibilita umožňuje zakázat jedno přiřazení místo zakázání všech přiřazení zásad.

Alternativou k zakázanému efektu je vynuceníMode, který je nastavený na přiřazení zásady. Pokud je režim vynucenízakázaný, prostředky se stále vyhodnocují. Protokolování, jako jsou protokoly aktivit, a efekt zásad se neprojeví. Další informace najdete v tématu přiřazení zásad – režim vynucení.

EnforceOPAConstraint

Tento účinek se používá s režimemMicrosoft.Kubernetes.Datadefinice zásady . Používá se k předávání pravidel řízení přístupu Gatekeeper v3 definovaných pomocí rozhraní OPA Constraint Framework pro open Policy Agent (OPA) do clusterů Kubernetes v Azure.

Důležité

Definice zásad s omezeným náhledem s efektem EnforceOPAConstraint a související kategorií služby Kubernetes Service jsou zastaralé. Místo toho použijte efekty auditování a zamítnutí s režimem Microsoft.Kubernetes.Dataposkytovatele prostředků .

Vyhodnocení EnforceOPAConstraint

Kontroler přístupu agenta Open Policy vyhodnocuje všechny nové požadavky na cluster 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á dílčí vlastnosti, 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í předávané hodnotami z Azure Policy.
  • omezení (povinné)
    • Implementace CRD šablony Omezení Používá parametry předané hodnotami jako{{ .Values.<valuename> }}. V následujícím příkladu jsou {{ .Values.cpuLimit }} tyto hodnoty a {{ .Values.memoryLimit }}.
  • hodnoty (volitelné)
    • Definuje všechny parametry a hodnoty, které se mají předat omezení. Každá hodnota musí existovat v šabloně omezení CRD.

Příklad vynuceníOPAConstraint

Příklad: Pravidlo řízení přístupu Gatekeeper v3 pro nastavení limitů prostředků procesoru a paměti kontejneru 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 účinek se používá s režimem definice zásad .Microsoft.ContainerService.Data Používá se k předávání pravidel řízení přístupu Gatekeeper v2 definovaných pomocí rego pro open Policy Agent (OPA) na Azure Kubernetes Service.

Důležité

Definice zásad s omezeným náhledem s efektem EnforceRegoPolicy a související kategorií služby Kubernetes Service jsou zastaralé. Místo toho použijte audit efektů a odepřít je v režimu Microsoft.Kubernetes.Dataposkytovatele prostředků .

Vynucení vyhodnoceníRegoPolicy

Kontroler přístupu agenta Open Policy vyhodnocuje všechny nové požadavky na cluster v reálném čase. Každých 15 minut se dokončí úplná kontrola clusteru a výsledky hlášené Azure Policy.

EnforceRegoPolicy – vlastnosti

Vlastnost details efektu EnforceRegoPolicy má dílčí vlastnosti, které popisují pravidlo řízení přístupu Gatekeeper v2.

  • policyId (povinné)
    • Jedinečný název předaný jako parametr pravidlu řízení přístupu rego.
  • zásady (povinné)
    • Určuje identifikátor URI pravidla řízení přístupu rego.
  • policyParameters (volitelné)
    • Definuje všechny parametry a hodnoty, které se mají předat zásadám rego.

Příklad VynuceníRegoPolicy

Příklad: Pravidlo řízení přístupu Gatekeeper v2 umožňující 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')]"
        }
    }
}

Ruční (Preview)

Nový manual efekt (Preview) umožňuje definovat a sledovat vlastní prostředky ověření identity. Na rozdíl od jiných definic zásad, které aktivně prohledávají vyhodnocení, umožňuje ruční změny stavu dodržování předpisů. Pokud chcete změnit dodržování předpisů pro ruční zásadu, musíte pro tento stav dodržování předpisů vytvořit ověření.

Poznámka

Během verze Public Preview je podpora ručních zásad dostupná prostřednictvím různých Microsoft Defender pro iniciativy dodržování předpisů v cloudu. Pokud jste zákazníkem úrovně Cloud Premium Microsoft Defender, podívejte se na přehled jejich prostředí.

V současné době zahrnují následující iniciativy regulačních zásad definice zásad, které obsahují ruční účinek:

  • FedRAMP High
  • FedRAMP Medium
  • HIPAA
  • HITRUST
  • ISO 27001
  • Microsoft CIS 1.3.0
  • Microsoft CIS 1.4.0
  • NIST SP 800-171 Rev. 2
  • NIST SP 800-53 Rev. 4
  • NIST SP 800-53 Rev. 5
  • PCI DSS 3.2.1
  • PCI DSS 4.0
  • SOC TSP
  • SWIFT CSP CSCF v2022

Následující příklad cílí na předplatná Azure a nastaví počáteční stav dodržování předpisů na Unknown.

{
  "if": {
    "field":  "type",
    "equals": "Microsoft.Resources/subscriptions"
  },
  "then": {
    "effect": "manual",
    "details": {
      "defaultState": "Unknown"
    }
  }
}

Vlastnost defaultState má tři možné hodnoty:

  • Neznámý: Počáteční výchozí stav cílových prostředků.
  • Kompatibilní: Prostředek je kompatibilní podle vašich ručních standardů zásad.
  • Nedodržuje předpisy: Prostředek nedodržuje předpisy podle vašich ručních standardů zásad

Modul dodržování předpisů Azure Policy vyhodnotí všechny příslušné prostředky na výchozí stav zadaný v definici (Unknownpokud není zadán). Stav Unknown dodržování předpisů označuje, že musíte stav dodržování předpisů prostředků ověřit ručně. Pokud je stav efektu nezadaný, je výchozí hodnota Unknown. Stav Unknown dodržování předpisů označuje, že musíte ověřit stav dodržování předpisů sami.

Následující snímek obrazovky ukazuje, jak se v Azure Portal zobrazuje ruční přiřazení zásad se stavemUnknown:

Tabulka dodržování předpisů prostředků v Azure Portal zobrazující přiřazenou ruční zásadu s důvodem dodržování předpisů

Pokud je přiřazena definice zásady s manual účinkem, máte možnost zahrnout důkazy, které odkazují na volitelné doplňující informace, které podporují vlastní ověření dodržování předpisů. Samotný důkaz je uložený ve službě Azure Storage a v metadatech přiřazení zásad v rámci vlastnosti evidenceStoragesmůžete zadat kontejner objektů blob úložiště. Další podrobnosti o souboru důkazů jsou popsány v prostředku JSON ověření identity.

Osvědčení

Microsoft.PolicyInsights/attestations, označovaný jako prostředek ověření identity, je nový typ prostředku proxy serveru, který nastavuje stavy dodržování předpisů pro cílové prostředky v ručních zásadách. Další informace o prostředku ověření identity najdete v Azure Policy struktuře ověření identity.

Modify

Úprava slouží k přidání, aktualizaci nebo odebrání vlastností nebo značek v předplatném nebo prostředku během vytváření nebo aktualizace. Běžným příkladem je aktualizace značek u prostředků, jako jsou costCenter. Stávající nevyhovující prostředky je možné napravit pomocí úlohy nápravy. Jedno pravidlo upravit může mít libovolný počet operací. Přiřazení zásad s nastaveným účinkem jako Úprava vyžadují, aby se spravovaná identita opravuje.

Úpravy podporují následující operace:

  • Přidejte, nahraďte nebo odeberte značky prostředků. U značek by měla mode být zásada Upravit nastavená na Indexované , 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čů.
  • 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šší, abyste získali seznam aliasů, které lze použít s úpravou.

Důležité

Pokud spravujete značky, doporučuje se místo připojení použít funkci Upravit, protože funkce Upravit poskytuje další typy operací a možnost napravit stávají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 Upravit se použijí na obsah požadavku, pokud je splněna podmínka pravidla zásad. Každá operace Upravit může určit podmínku, která určuje, kdy je použita. Operace s vyhodnocením falešně podmínek se přeskočí.

Pokud je zadaný alias, provede se následující další kontroly, aby se zajistilo, že operace Úpravy nezmění obsah žádosti 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 v operaci Modify odpovídá očekávanému typu tokenu vlastnosti ve verzi rozhraní API požadavku.

Pokud některý z těchto kontrol selže, vyhodnocení zásad se vrátí do zadaného konfliktního efektu.

Důležité

Doporučuje se upravit definice, které obsahují aliasy, použít konfliktní účinekauditu, 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 použít operace podmíněné úpravy k určení operace úprav používaných pro každou verzi rozhraní API.

Pokud je definice zásady používající efekt Upravit spuštěna jako součást zkušebního cyklu, neprovádí změny prostředků, které již existují. Místo toho označí všechny prostředky, které splňují podmínku if jako nevyhovující.

Úprava vlastností

Vlastnost podrobností efektu Modify má všechny dílčí vlastnosti, 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í obsahovat pole řetězců, které odpovídají ID role řízení přístupu na základě role přístupného předplatným. Další informace najdete v tématu náprava – konfigurace definice zásady.
    • Definovaná role musí obsahovat všechny operace udělené roli přispěvatele .
  • conflictEffect (volitelné)
    • Určuje, která definice zásady "vyhraje", pokud více než jedna definice zásady upraví stejnou vlastnost nebo když operace Upravit nefunguje na zadaném aliasu.
      • U nových nebo aktualizovaných prostředků má definice zásad se zamítnutím přednost. Definice zásad s auditem přeskočí všechny operace. Pokud více definic zásad odepřelo, žádost se zamítá jako konflikt. Pokud všechny definice zásad mají audit, nezpracují se žádné operace konfliktních definic zásad.
      • U existujících prostředků platí, že pokud několik definic zásad odepře, stav dodržování předpisů je Konflikt. Pokud jedna nebo méně definic zásad odepřelo, vrátí každé přiřazení stav dodržování předpisů nevyhovující předpisům.
    • Dostupné hodnoty: audit, zamítnutí, zakázáno.
    • Výchozí hodnota je odepřena.
  • operace (povinné)
    • Pole všech operací značek, které se mají dokončit u odpovídajících prostředků.
    • Vlastnosti:
      • operace (povinné)
        • Definuje, jaká akce se má provést u odpovídajícího prostředku. Možnosti jsou: addOrReplace, Add, Remove. Přidání se chová podobně jako při doplňovacím efektu.
      • pole (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.
      • hodnota (volitelné)
        • Hodnota, na kterou chcete značku nastavit.
        • Tato vlastnost se vyžaduje, pokud je operaceaddOrReplace nebo Add.
      • podmínka (volitelné)
        • Řetězec obsahující výraz jazyka Azure Policy s funkcemi zásad, které se vyhodnotí jako true nebo false.
        • Nepodporuje následující funkce zásad: field(), resourceGroup(), subscription().

Úpravy operací

Pole vlastností operací 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 operací, polí a vlastností hodnot . Operace určuje, co úloha nápravy dělá se značkami, pole určuje, která značka se změní, a hodnota definuje nové nastavení této značky. Následující příklad provede následující změny značky:

  • 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ásad.
"details": {
    ...
    "operations": [
        {
            "operation": "addOrReplace",
            "field": "tags['environment']",
            "value": "Test"
        },
        {
            "operation": "Remove",
            "field": "tags['TempResource']",
        },
        {
            "operation": "addOrReplace",
            "field": "tags['Dept']",
            "value": "[parameters('DeptName')]"
        }
    ]
}

Vlastnost operace 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 z prostředku definovanou vlastnost nebo značku.

Úprava příkladů

Příklad 1: Přidejte environment značku a nahraďte existující environment značky "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, použije se operace Modify 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
            }
        ]
    }
}

Definice zásad vrstvení

Zdroj může mít vliv na několik přiřazení. Tato přiřazení můžou být ve stejném rozsahu nebo v různých oborech. Každé z těchto přiřazení je také pravděpodobně definováno jiného efektu. Podmínka a účinek pro každou zásadu se vyhodnotí nezávisle. Příklad:

  • Zásada 1
    • Omezuje umístění prostředků na westus.
    • Přiřazeno k předplatnému A
    • Odepřít efekt
  • Zásady 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:

  • Jakýkoli prostředek již ve skupině prostředků B v eastus je kompatibilní se zásadami 2 a nedodržuje předpisy zásad 1.
  • Jakýkoli prostředek již ve skupině prostředků B není v oblasti eastus kompatibilní se zásadami 2 a nevyhovuje zásadám 1, pokud není v oblasti westus.
  • Všechny nové prostředky v předplatném A, které nejsou v westus, jsou odepřeny zásadami 1.
  • Všechny nové prostředky v předplatném A a skupině prostředků B v "westus" se vytvoří a nevyhovují zásadám 2.

Pokud by zásady 1 i zásady 2 měly vliv na zamítnutí, situace se změní na:

  • Jakýkoli prostředek, který už ve skupině prostředků B není v eastus, nevyhovuje zásadám 2.
  • Jakýkoli prostředek, který už ve skupině prostředků B není v westus, nevyhovuje zásadám 1.
  • Všechny nové prostředky v předplatném A, které nejsou v westus, jsou odepřeny zásadami 1.
  • Jakýkoli nový prostředek ve skupině prostředků B předplatného A je odepřen

Každé přiřazení se vyhodnocuje jednotlivě. V takovém případě není možné, aby zdroj proklouzl mezi rozdíly 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í, prostředek by se zablokoval překrývajícími se definicemi a konfliktních zásad. Pokud stále potřebujete, aby se prostředek vytvořil 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