Definice azure Policy nasazují efektIfNotExists
auditIfNotExists
deployIfNotExists
Podobně jako definice zásady spustí nasazení šablony při splnění podmínky. Přiřazení zásad s nastavenými efekty jako DeployIfNotExists vyžadují spravovanou identitu k nápravě.
Poznámka:
Vnořené šablony se podporují deployIfNotExists
, ale propojené šablony se v současné době nepodporují.
Vyhodnocení DeployIfNotExists
deployIfNotExists
spustí se po konfigurovatelné prodlevě, když poskytovatel prostředků zpracuje požadavek na vytvoření nebo aktualizaci předplatného nebo prostředku a vrátí stavový kód úspěchu. Nasazení šablony nastane, pokud neexistují žádné související prostředky nebo pokud se prostředky definované existenceCondition
nehodnotí 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í nekompatibilní prostředky je možné napravit úlohou nápravy.
DeployIfNotExists – vlastnosti
Vlastnost details
DeployIfNotExists efekt má všechny dílčí podmínky, které definují související prostředky, které se mají shodovat, a nasazení šablony, které se má provést.
type
(povinné)- Určuje typ souvisejícího prostředku, který se má shodovat.
- Pokud
type
je typ prostředku pod prostředkemif
podmínky, zásady se dotazují na prostředky tohototype
prostředku v rámci 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 hodnotěexistenceScope
.
name
(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 jsou hodnoty podmínek pro
if.field.type
athen.details.type
shodné,name
pak se vyžadují a musí být[field('name')]
nebo[field('fullName')]
pro podřízený prostředek.
Poznámka:
type
a name
segmenty lze zkombinovat za účelem obecného načtení vnořených prostředků.
K načtení konkrétního prostředku můžete použít "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
a "name": "parentResourceName/nestedResourceName"
.
Pokud chcete načíst kolekci vnořených prostředků, můžete místo segmentu příjmení zadat zástupný znak ?
. Příklad: "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
a "name": "parentResourceName/?"
. To lze kombinovat s funkcemi polí pro přístup k prostředkům souvisejícím s vyhodnoceným prostředkem, například "name": "[concat(field('name'), '/?')]"
"
resourceGroupName
(volitelné)- Umožňuje porovnávání souvisejících prostředků pocházet z jiné skupiny prostředků.
- Nevztahuje se, pokud
type
se jedná o prostředek, který by byl pod prostředkemif
podmínky. - Výchozí hodnota je
if
skupina prostředků 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.
- Nevztahuje se, pokud
type
se jedná o prostředek, který by byl pod prostředkemif
podmínky. - V případě skupiny prostředků by se v případě zadání omezila na skupinu
resourceGroupName
prostředků. PokudresourceGroupName
není zadáno, omezí se to naif
skupinu prostředků podmínky, což je výchozí chování. - V případě předplatného se dotazuje na celé předplatné souvisejícího prostředku. Pro správné vyhodnocení by měl být obor přiřazení nastavený na předplatné nebo vyšší.
- Výchozí hodnota je ResourceGroup.
evaluationDelay
(volitelné)- Určuje, kdy se má vyhodnotit existence souvisejících prostředků. Zpoždění se používá pouze pro vyhodnocení, která jsou výsledkem požadavku na vytvoření nebo aktualizaci prostředku.
- Povolené hodnoty jsou
AfterProvisioning
,AfterProvisioningSuccess
,AfterProvisioningFailure
nebo 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 pravidla
if
zásad.AfterProvisioning
po dokončení zřizování bez ohledu na výsledek. Zřizování, které trvá déle než šest hodin, se při určování zpoždění vyhodnocení po zřízení 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, dokud se neaktualizuje další aktivační událost vyhodnocení.
existenceCondition
(volitelné)- Pokud není zadaný, jakýkoli související prostředek
type
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 pravdivý, efekt se splní a neaktivuje nasazení.
- Pomocí funkce [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
if
podmínce) je ve stejném umístění prostředku jako odpovídající související prostředek.
- Pokud není zadaný, jakýkoli 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é pro předplatné. Další informace najdete v tématu náprava – konfigurace definice zásady.
deploymentScope
(volitelné)- Povolené hodnoty jsou Subscription a ResourceGroup.
- Nastaví typ nasazení, který se má aktivovat. Předplatné označuje nasazení na úrovni předplatného a skupina prostředků označuje nasazení do skupiny prostředků.
- Vlastnost umístění musí být zadána v nasazení při použití nasazení na úrovni předplatného.
- Výchozí hodnota je ResourceGroup.
deployment
(povinné)- Tato vlastnost by měla obsahovat ú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 nedocházelo k 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ř
deployment
vlastnosti se vyhodnocují jako součásti šablony, ne jako zásady. Výjimkou jeparameters
vlastnost, která předává hodnoty ze zásady do šablony. Vvalue
této části pod názvem parametru šablony se používá k předání této hodnoty (viz fullDbName v příkladu DeployIfNotExists).- Tato vlastnost by měla obsahovat úplné nasazení šablony, protože by bylo předáno
Příklad DeployIfNotExists
Příklad: Vyhodnotí databáze SQL Serveru a určí, jestli transparentDataEncryption
je povolená. 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')]"
}
}
}
}
}
}
Další kroky
- Projděte si příklady v ukázkách azure Policy.
- Projděte si strukturu definic Azure Policy.
- 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 skupiny pro správu Azure.