Sdílet prostřednictvím


Struktura přiřazení Azure Policy

Přiřazení zásad definují, které prostředky se vyhodnocují definicí zásady nebo iniciativou. 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 Principy oboru 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. Jedná se policyDefinitionId o ř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. Doporučení je, že pokud je k použití iniciativy často přiřazeno více zásad.

U předdefinovaných definic a iniciativ můžete použít konkrétní definitionVersion definice, na kterých se mají vyhodnotit. Ve výchozím nastavení je 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

Použijete displayName a description 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 description 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 vyhodnocuje 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 selectors. Aby byl prostředek použitelný pro selektor prostředků, musí splňovat požadavky stanovené všemi jeho selektory. V jednom přiřazení je navíc možné zadat až 10 resourceSelectors . 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 této zásady audit může být nahrazen přepsáním disabled 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, která charakteristika zúží rozsah přepsání. Povolené hodnoty pro kind: policyEffect:

      • policyDefinitionReferenceId: Tato vlastnost 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 policyDefinitionReferenceId poli. Jedno přepsání lze použít až pro 50 policyDefinitionReferenceIda jedno přiřazení zásad může obsahovat až 10 přepsání, vyhodnocených v pořadí, v jakém jsou zadány. 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í

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

Tento scénář se běžně označuje jako What If a odpovídá postupům bezpečného nasazení. Efekt enforcementMode se liší od hodnoty Disabled, protože tento efekt zcela brání vyhodnocení prostředků.

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 enforcementMode není zadána v definici zásady nebo iniciativy, použije se hodnota Default . Úlohy nápravy je možné spustit pro zásady deployIfNotExists , i když enforcementMode je nastavená 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, je možné každou z nich 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. Další informace 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 nastaveným účinkem deployIfNotExists nebo modifyje požadavek mít vlastnost identity k nápravě u nevyhovujících prostředků. Pokud přiřazení používá identitu, 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/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
  }
},

Další kroky