Model Azure Policy: logické operátory
Definice zásady může obsahovat několik podmíněných příkazů. Může být nutné, aby každý příkaz byl pravdivý, nebo potřebujete jen některé z nich, aby byly pravdivé. Pro podporu těchto potřeb má jazyk logické operátory pro ne, allOf a anyOf. Jsou volitelné a dají se vnořit a vytvářet složité scénáře.
Ukázka 1: Jeden logický operátor
Tato definice zásady vyhodnocuje účty služby Azure Cosmos DB a zjišťuje, jestli jsou nakonfigurovaná automatická převzetí služeb při selhání a více umístění zápisu. Pokud ne, audit se aktivuje a vytvoří položku protokolu při vytvoření nebo aktualizaci nevyhovujícího prostředku.
{
"properties": {
"mode": "all",
"displayName": "Audit Automatic Failover for CosmosDB accounts",
"description": "This policy audits Automatic Failover for CosmosDB accounts",
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.DocumentDB/databaseAccounts"
},
{
"field": "Microsoft.DocumentDB/databaseAccounts/enableAutomaticFailover",
"equals": "false"
},
{
"field": "Microsoft.DocumentDB/databaseAccounts/enableMultipleWriteLocations",
"equals": "false"
}
]
},
"then": {
"effect": "audit"
}
},
"parameters": {},
"metadata": {}
}
}
Ukázka 1: Vysvětlení
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.DocumentDB/databaseAccounts"
},
{
"field": "Microsoft.DocumentDB/databaseAccounts/enableAutomaticFailover",
"equals": "false"
},
{
"field": "Microsoft.DocumentDB/databaseAccounts/enableMultipleWriteLocations",
"equals": "false"
}
]
},
"then": {
Blok policyRule.if používá jeden allOf k zajištění, že jsou splněny všechny tři podmínky. Pouze když se všechny tyto podmínky vyhodnotí jako true, aktivuje se účinek auditu .
Ukázka 2: Více logických operátorů
Tato definice zásady vyhodnocuje prostředky pro vzor pojmenování. Pokud se prostředek neshoduje, je odepřen.
{
"properties": {
"displayName": "Match multiple name patterns.",
"description": "Allows one of multiple naming patterns for resources.",
"mode": "Indexed",
"policyRule": {
"if": {
"allOf": [{
"not": {
"field": "name",
"match": "contoso??????"
}
},
{
"not": {
"field": "name",
"match": "contoso-???-##"
}
}
]
},
"then": {
"effect": "deny"
}
}
}
}
Ukázka 2: Vysvětlení
"if": {
"allOf": [{
"not": {
"field": "name",
"match": "contoso??????"
}
},
{
"not": {
"field": "name",
"match": "contoso-???-##"
}
}
]
},
Tento blok policyRule.if obsahuje také jeden allOf, ale každá podmínka je zabalena ne logickým operátorem. Podmíněný vnitřní operátor, který není logický, se vyhodnotí jako první a pak vyhodnotí, zda je celá klauzule pravdivá nebo nepravda. Pokud se oba logické operátory vyhodnotí jako true, aktivuje se efekt zásady.
Ukázka 3: Kombinování logických operátorů
Tato definice zásady vyhodnocuje účty Spring v Azure a zjišťuje, jestli trasování není povolené nebo jestli trasování není v úspěšném stavu.
{
"properties": {
"displayName": "Audit Azure Spring Cloud instances where distributed tracing is not enabled",
"description": "Distributed tracing tools in Azure Spring Cloud allow debugging and monitoring the complex interconnections between microservices in an application. Distributed tracing tools should be enabled and in a healthy state.",
"mode": "Indexed",
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.AppPlatform/Spring"
},
{
"anyOf": [{
"field": "Microsoft.AppPlatform/Spring/trace.enabled",
"notEquals": "true"
},
{
"field": "Microsoft.AppPlatform/Spring/trace.state",
"notEquals": "Succeeded"
}
]
}
]
},
"then": {
"effect": "audit"
}
}
}
}
Ukázka 3: Vysvětlení
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.AppPlatform/Spring"
},
{
"anyOf": [{
"field": "Microsoft.AppPlatform/Spring/trace.enabled",
"notEquals": "true"
},
{
"field": "Microsoft.AppPlatform/Spring/trace.state",
"notEquals": "Succeeded"
}
]
}
]
},
"then": {
"effect": "audit"
}
}
Tento blok policyRule.if zahrnuje všechny logické operátoryOf i anyOf. Logický operátor anyOf vyhodnotí hodnotu true, pokud jedna zahrnutá podmínka je pravdivá. Vzhledem k tomu, že typ je jádrem allOf, musí vždy vyhodnotit hodnotu true. Pokud je typ a jedna z podmínek v anyOf true, efekt zásady se aktivuje.
Další kroky
- Projděte si další vzory a předdefinované definice.
- Projděte si strukturu definic Azure Policy.
- Projděte si Vysvětlení efektů zásad.