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:
- rozsah
- ID a verze definice zásady
- zobrazovaný název
- popis
- metadata
- selektory prostředků
- potlačuje
- režim vynucení
- vyloučené obory
- zprávy o nedodržování předpisů
- parameters
- identita
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ázvembackupPolicyId
, 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 účinkemmanual
. VlastnostdisplayName
je název účtu úložiště. VlastnostevidenceStorageAccountID
je ID prostředku účtu úložiště. VlastnostevidenceBlobContainer
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ů jakoresourceWithoutLocation
.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ě podporujesubscriptionLevelResources
pouze . Nelze použít ve stejném selektoru prostředků jakoresourceLocation
.
in
: Seznam povolených hodnot pro zadanoukind
hodnotu . Nelze použít snotIn
. Může obsahovat až 50 hodnot.notIn
: Seznam nepovolovaných hodnot pro zadanoukind
hodnotu . Nelze použít sin
. 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 jsoupolicyEffect
apolicyVersion
.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 rovnodefinitionVersion
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 prokind: 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ů jakoresourceWithoutLocation
.
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ů jakoresourceWithoutLocation
.
in
: Seznam povolených hodnot pro zadanoukind
hodnotu . Nelze použít snotIn
. Může obsahovat až 50 hodnot.notIn
: Seznam nepovolovaných hodnot pro zadanoukind
hodnotu . Nelze použít sin
. 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 policyDefinitionReferenceId
a 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 modify
je 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
- Seznamte se se strukturou definic zásad.
- Seznamte se s programovým vytvářením zásad.
- Zjistěte, jak získat data dodržování předpisů.
- Zjistěte, jak napravit nevyhovující prostředky.
- Zkontrolujte, co je skupina pro správu pomocí uspořádání prostředků pomocí skupin pro správu Azure.