Sdílet prostřednictvím


Struktura přiřazení Azure Policy

Přiřazení zásad definují, které prostředky se mají vyhodnotit definicí zásady nebo initiaitve. Přiřazení zásady navíc může určit hodnoty parametrů pro danou skupinu prostředků v době přiřazení, což umožňuje opakovaně používat definice zásad, které řeší stejné vlastnosti prostředků s různými potřebami pro dodržování předpisů.

K vytvoření přiřazení zásad použijete JavaScript Object Notation (JSON). Přiřazení zásady obsahuje prvky pro:

Například následující JSON ukazuje ukázkový požadavek na přiřazení zásad v režimu DoNotEnforce s parametry:

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "definitionVersion": "1.*.*",
        "metadata": {
            "assignedBy": "Cloud Center of Excellence"
        },
        "enforcementMode": "DoNotEnforce",
        "notScopes": [],
        "policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
        "nonComplianceMessages": [
            {
                "message": "Resource names must start with 'DeptA' and end with '-LC'."
            }
        ],
        "parameters": {
            "prefix": {
                "value": "DeptA"
            },
            "suffix": {
                "value": "-LC"
            }
        },
        "identity": {
            "type": "SystemAssigned"
        },
        "resourceSelectors": [],
        "overrides": []
    }
}

Obor

Obor používaný pro čas vytvoření zdroje přiřazení je primárním faktorem použitelnosti zdrojů. Další informace o oboru přiřazení najdete v tématu

Seznamte se s oborem ve službě Azure Policy.

ID a verze definice zásad (Preview)

Toto pole musí být úplným názvem cesty definice zásady nebo definice iniciativy. policyDefinitionId je řetězec, nikoli pole. Při každém vyhodnocení přiřazení zásad se načte nejnovější obsah definice přiřazené zásady nebo iniciativy. Pokud je často přiřazených více zásad, doporučujeme místo toho použít iniciativu.

U předdefinovaných definic a iniciativ můžete použít konkrétní definitionVersion definice, na kterých se má vyhodnotit. Ve výchozím nastavení bude verze nastavená na nejnovější hlavní verzi a automaticky ingestovat změny podverze a opravy.

K automatickému automatickému ingestování jakýchkoli dílčích změn definice by číslo verze bylo #.*.*. Zástupný znak představuje aktualizace automatického příjmu. Pokud chcete připnout k cestě podverze, formát verze by byl #.#.*. Všechny změny oprav musí být automaticky za účelem zabezpečení. Změny oprav jsou omezené na změny textu a rozbité skleněné scénáře.

Zobrazovaný název a popis

Pomocí displayName a popisu identifikujete přiřazení zásady a poskytnete kontext pro jeho použití s konkrétní sadou prostředků. displayName má maximální délku 128 znaků a popisuje maximální délku 512 znaků.

Metadata

Volitelná metadata vlastnost ukládá informace o přiřazení zásady. Zákazníci mohou definovat jakékoli vlastnosti a hodnoty užitečné pro svoji organizaci v metadata. Azure Policy ale používá několik běžných vlastností. Každá metadata vlastnost má limit 1 024 znaků.

Běžné vlastnosti metadat

  • assignedBy (řetězec): Popisný název objektu zabezpečení, který vytvořil přiřazení.
  • createdBy (řetězec): IDENTIFIKÁTOR GUID objektu zabezpečení, který vytvořil přiřazení.
  • createdOn (řetězec): Univerzální formát ISO 8601 DateTime času vytvoření přiřazení.
  • updatedBy (řetězec): Popisný název objektu zabezpečení, který v případě potřeby aktualizoval přiřazení.
  • updatedOn (řetězec): Univerzální formát ISO 8601 DateTime času přiřazení, pokud existuje.

Vlastnosti metadat pro konkrétní scénář

  • parameterScopes (objekt): Kolekce párů klíč-hodnota, kde klíč odpovídá názvu nakonfigurovaného parametru strongType a hodnota definuje obor prostředku použitý na portálu k poskytnutí seznamu dostupných prostředků odpovídajícím strongType. Portál nastaví tuto hodnotu, pokud se obor liší od oboru přiřazení. Pokud je nastavená, úprava přiřazení zásad na portálu automaticky nastaví obor parametru na tuto hodnotu. Obor ale není uzamčený na hodnotu a dá se změnit na jiný obor.

    Následující příklad parameterScopes je pro parametr strongType s názvem backupPolicyId , který nastaví obor pro výběr prostředků při úpravě přiřazení na portálu.

    "metadata": {
        "parameterScopes": {
            "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • evidenceStorages (objekt): Doporučený výchozí účet úložiště, který by se měl použít k uchovávání důkazů pro ověření identity pro přiřazení zásad s účinkem manual . Vlastnost displayName je název účtu úložiště. Vlastnost evidenceStorageAccountID je ID prostředku účtu úložiště. Vlastnost evidenceBlobContainer je název kontejneru objektů blob, ve kterém plánujete uložit důkazy.

    {
      "properties": {
        "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}",
        "metadata": {
          "evidenceStorages": [
            {
              "displayName": "Default evidence storage",
              "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}",
              "evidenceBlobContainer": "evidence-container"
            }
          ]
        }
      }
    }
    

Selektory prostředků

Volitelná resourceSelectors vlastnost usnadňuje postupy bezpečného nasazení (SDP) tím, že umožňuje postupně zavádět přiřazení zásad na základě faktorů, jako je umístění prostředku, typ prostředku nebo umístění prostředku. Při použití selektorů prostředků azure Policy vyhodnotí pouze prostředky, které se vztahují na specifikace provedené v selektorech prostředků. Selektory prostředků lze také použít k zúžení rozsahu výjimek stejným způsobem.

V následujícím ukázkovém scénáři se nové přiřazení zásady vyhodnotí jenom v případě, že umístění prostředku je USA – východ nebo USA – západ.

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1.*",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Až budete připraveni rozšířit rozsah vyhodnocení zásad, stačí aktualizovat přiřazení. Následující příklad ukazuje přiřazení zásad se dvěma dalšími oblastmi Azure přidanými do selektoru SDPRegions . Všimněte si, že v tomto příkladu znamená protokol SDP pro bezpečný postup nasazení:

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1.*",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus", "centralus", "southcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Selektory prostředků mají následující vlastnosti:

  • name: Název selektoru prostředků.

  • selectors: (Volitelné) Vlastnost použitá k určení podmnožina prostředků použitelných pro přiřazení zásad by se měla vyhodnotit pro dodržování předpisů.

    • kind: Vlastnost selektoru, který popisuje, která charakteristika zúží sadu vyhodnocených prostředků. Každý druh lze použít pouze jednou v jednom selektoru prostředků. Povolené hodnoty jsou následující:

      • resourceLocation: Tato vlastnost slouží k výběru prostředků na základě jejich typu. Nelze použít ve stejném selektoru prostředků jako resourceWithoutLocation.

      • resourceType: Tato vlastnost slouží k výběru prostředků na základě jejich typu.

      • resourceWithoutLocation: Tato vlastnost slouží k výběru prostředků na úrovni předplatného, které nemají umístění. V současné době podporuje subscriptionLevelResourcespouze . Nelze použít ve stejném selektoru prostředků jako resourceLocation.

    • in: Seznam povolených hodnot pro zadanou kindhodnotu . Nelze použít s notIn. Může obsahovat až 50 hodnot.

    • notIn: Seznam nepovolovaných hodnot pro zadanou kindhodnotu . Nelze použít s in. Může obsahovat až 50 hodnot.

Selektor prostředků může obsahovat více selektorů. Aby byl prostředek použitelný pro selektor prostředků, musí splňovat požadavky stanovené všemi jeho selektory. Dále je možné zadat až 10 selektorů zdrojů v jednom přiřazení. Prostředky v oboru se vyhodnocují, když vyhovují některému z těchto selektorů prostředků.

Přepsání

Volitelná overrides vlastnost umožňuje změnit účinek definice zásady beze změny definice podkladové zásady nebo použití parametrizovaného efektu v definici zásady.

Běžným případem použití pro přepsání na účinek jsou iniciativy zásad s velkým počtem přidružených definic zásad. V této situaci může správa několika efektů zásad spotřebovávat značné administrativní úsilí, zejména v případě, že je potřeba efekt aktualizovat čas od času. Přepsání lze použít k souběžné aktualizaci účinků více definic zásad v rámci iniciativy.

Podívejme se na nějaký příklad. Představte si, že máte iniciativu zásad s názvem CostManagement, která obsahuje vlastní definici zásad s policyDefinitionReferenceId corpVMSizePolicy a jediným účinkem audit. Předpokládejme, že chcete přiřadit iniciativu CostManagement , ale zatím nechcete zobrazit nahlášené dodržování předpisů pro tuto zásadu. Účinek auditování této zásady lze nahradit "zakázaným" prostřednictvím přepsání přiřazení iniciativy, jak je znázorněno v následující ukázce:

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
        "overrides": [
            {
                "kind": "policyEffect",
                "value": "disabled",
                "selectors": [
                    {
                        "kind": "policyDefinitionReferenceId",
                        "in": [ "corpVMSizePolicy" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "CostManagement"
}

Dalším běžným případem použití přepsání je uvedení nové verze definice. Doporučené kroky pro bezpečnou aktualizaci verze přiřazení najdete v tématu Bezpečné nasazení zásad.

Přepsání mají následující vlastnosti:

  • kind: Vlastnost, která přiřazení přepíše. Podporované typy jsou policyEffect a policyVersion.

  • value: Nová hodnota, která přepíše existující hodnotu. Podporované hodnoty jsou v případě kind: policyEffect, že se jedná o efekty. V případě kind: policyVersion, podporované číslo verze musí být větší než nebo rovno definitionVersion zadané v přiřazení.

  • selectors: (Volitelné) Vlastnost použitá k určení rozsahu přiřazení zásady by měla převzít přepsání.

    • kind: Vlastnost selektoru, který popisuje, jakou charakteristiku zpřesní rozsah přepsání. Povolené hodnoty pro kind: policyEffect:

      • policyDefinitionReferenceId: Určuje, které definice zásad v rámci přiřazení iniciativy by měly mít na přepsání efektu.

      • resourceLocation: Tato vlastnost slouží k výběru prostředků na základě jejich typu. Nelze použít ve stejném selektoru prostředků jako resourceWithoutLocation.

      Povolená hodnota pro kind: policyVersion:

      • resourceLocation: Tato vlastnost slouží k výběru prostředků na základě jejich typu. Nelze použít ve stejném selektoru prostředků jako resourceWithoutLocation.
    • in: Seznam povolených hodnot pro zadanou kindhodnotu . Nelze použít s notIn. Může obsahovat až 50 hodnot.

    • notIn: Seznam nepovolovaných hodnot pro zadanou kindhodnotu . Nelze použít s in. Může obsahovat až 50 hodnot.

Jedno přepsání lze použít k nahrazení efektu mnoha zásad zadáním více hodnot v poli policyDefinitionReferenceId. Jedno přepsání lze použít až pro 50 policyDefinitionReferenceIds a jedno přiřazení zásad může obsahovat až 10 přepsání vyhodnocených v pořadí, v jakém jsou zadané. Před vytvořením přiřazení se účinek zvolený v přepsání ověří v pravidle zásad a seznamu povolených hodnot parametrů (v případech, kdy je efekt parametrizován).

Režim vynucení

Vlastnost enforcementMode poskytuje zákazníkům možnost testovat výsledek zásady u existujících prostředků, aniž by iniciovala účinek zásady nebo aktivovala položky v protokolu aktivit Azure.

Tento scénář se běžně označuje jako "What If" a je v souladu s postupy bezpečného nasazení. enforcementMode se liší od zakázaného efektu, protože tento účinek brání vyhodnocení prostředků vůbec.

Tato vlastnost má následující hodnoty:

Režim Hodnota JSON Typ Ruční náprava Položka protokolu aktivit Description
Povoleno Výchozí řetězec Yes Yes Účinek zásad se vynucuje během vytváření nebo aktualizace prostředku.
Zakázáno DoNotEnforce řetězec Yes No Účinek zásad se nevynucuje během vytváření nebo aktualizace prostředku.

Pokud v definici zásady nebo iniciativy není zadán režim vynucení , použije se hodnota Default . Úlohy nápravy lze spustit pro zásady deployIfNotExists , i když je vynuceníMode nastaveno na DoNotEnforce.

Vyloučené obory

Rozsah přiřazení zahrnuje všechny podřízené kontejnery prostředků a podřízené prostředky. Pokud by podřízený kontejner prostředků nebo podřízený prostředek neměl mít použitou definici, každou z nich je možné vyloučit z vyhodnocení nastavením notScopes. Tato vlastnost je pole, které umožňuje vyloučit jeden nebo více kontejnerů prostředků nebo prostředků z vyhodnocení. notScopes lze přidat nebo aktualizovat po vytvoření počátečního přiřazení.

Poznámka:

Vyloučený prostředek se liší od vyloučeného prostředku. Další informace najdete v tématu Vysvětlení oboru ve službě Azure Policy.

Zprávy o nedodržování předpisů

Pokud chcete nastavit vlastní zprávu, která popisuje, proč prostředek nevyhovuje definici zásady nebo iniciativy, nastavte nonComplianceMessages ji v definici přiřazení. Tento uzel je pole message položek. Tato vlastní zpráva je kromě výchozí chybové zprávy pro nedodržování předpisů a je volitelná.

Důležité

Vlastní zprávy pro nedodržování předpisů jsou podporovány pouze u definic nebo iniciativ s definicemi režimů Resource Manageru.

"nonComplianceMessages": [
    {
        "message": "Default message"
    }
]

Pokud je přiřazení pro iniciativu, můžete pro každou definici zásad v iniciativě nakonfigurovat různé zprávy. Zprávy používají policyDefinitionReferenceId hodnotu nakonfigurovanou v definici iniciativy. Podrobnosti najdete v tématu vlastnosti definic zásad.

"nonComplianceMessages": [
    {
        "message": "Default message"
    },
    {
        "message": "Message for just this policy definition by reference ID",
        "policyDefinitionReferenceId": "10420126870854049575"
    }
]

Parametry

Tento segment přiřazení zásady poskytuje hodnoty parametrů definovaných v definici zásady nebo definici iniciativy. Tento návrh umožňuje opakovaně používat definici zásad nebo iniciativ s různými prostředky, ale kontrolovat různé obchodní hodnoty nebo výsledky.

"parameters": {
    "prefix": {
        "value": "DeptA"
    },
    "suffix": {
        "value": "-LC"
    }
}

V tomto příkladu jsou parametry dříve definované v definici prefix zásady a suffix. Toto konkrétní přiřazení zásad se nastaví prefix na oddělení a suffix - LC. Stejná definice zásady je opakovaně použitelná s jinou sadou parametrů pro jiné oddělení, což snižuje duplicitu a složitost definic zásad a současně poskytuje flexibilitu.

Identita

U přiřazení zásad s účinkem nastaveným na deployIfNotExist nebo úpravu je nutné, aby vlastnost identity měla k nápravě u nevyhovujících prostředků. Při použití identity musí uživatel také zadat umístění pro přiřazení.

Poznámka:

Jedno přiřazení zásad je možné přidružit pouze k jedné spravované identitě přiřazené systémem nebo uživatelem. Tato identita však může být v případě potřeby přiřazena více než jedna role.

# System-assigned identity
 "identity": {
    "type": "SystemAssigned"
  }
# User-assigned identity
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/SubscriptionID/resourceGroups/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
    }
  },

Další kroky