Azure Policy minta: logikai operátorok
A szabályzatdefiníciók több feltételes utasítást is tartalmazhatnak. Előfordulhat, hogy mindegyik utasításnak igaznak kell lennie, vagy csak néhánynak kell igaznak lennie. Ezeknek az igényeknek a támogatása érdekében a nyelv logikai operátorokkal rendelkezik a nem, az allOf és az anyOf esetében. Ezek nem kötelezőek, és beágyazhatók összetett forgatókönyvek létrehozásához.
1. minta: Egy logikai operátor
Ez a szabályzatdefiníció kiértékeli az Azure Cosmos DB-fiókokat , és ellenőrzi, hogy konfigurálva vannak-e az automatikus feladatátvételek és több írási hely. Ha nem, a naplózás aktivál és létrehoz egy naplóbejegyzést a nem megfelelő erőforrás létrehozásakor vagy frissítésekor.
{
"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": {}
}
}
1. minta: Magyarázat
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.DocumentDB/databaseAccounts"
},
{
"field": "Microsoft.DocumentDB/databaseAccounts/enableAutomaticFailover",
"equals": "false"
},
{
"field": "Microsoft.DocumentDB/databaseAccounts/enableMultipleWriteLocations",
"equals": "false"
}
]
},
"then": {
A policyRule.if blokk egyetlen allOf használatával biztosítja, hogy mindhárom feltétel teljesüljön. Csak akkor aktiválódik a naplózási hatás, ha az összes feltétel igaz értéket ad vissza.
2. minta: Több logikai operátor
Ez a szabályzatdefiníció kiértékeli az erőforrásokat egy elnevezési mintához. Ha egy erőforrás nem egyezik meg, a rendszer megtagadja.
{
"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"
}
}
}
}
2. minta: Magyarázat
"if": {
"allOf": [{
"not": {
"field": "name",
"match": "contoso??????"
}
},
{
"not": {
"field": "name",
"match": "contoso-???-##"
}
}
]
},
Ez a policyRule.if blokk egyetlen allOf-et is tartalmaz, de minden feltétel a nem logikai operátorral van burkolva. A nem logikai operátor feltétele először kiértékeli, majd kiértékeli a nemet annak megállapításához, hogy a teljes záradék igaz vagy hamis-e. Ha mindkét logikai operátor igaz értéket ad vissza, a szabályzateffektus aktiválódik.
3. minta: Logikai operátorok kombinálása
Ez a szabályzatdefiníció kiértékeli a Spring on Azure-fiókokat annak megállapításához, hogy a nyomkövetés nincs-e engedélyezve, vagy hogy a nyomkövetés nem sikeres állapotban van-e.
{
"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"
}
}
}
}
3. minta: Magyarázat
"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"
}
}
Ez a policyRule.if blokk az allOf és az anyOf logikai operátorokat is tartalmazza. Az anyOf logikai operátor mindaddig igaz értéket ad ki, amíg egy belefoglalt feltétel igaz. Mivel a típus az allOf középpontjában van, mindig igaz értéket kell kiértékelnie. Ha az anyOftípusának és feltételeinek egyike igaz, a szabályzateffektus aktiválódik.
Következő lépések
- Tekintse át az egyéb mintákat és a beépített definíciókat.
- Tekintse meg az Azure szabályzatdefiníciók struktúrája szakaszt.
- A Szabályzatok hatásainak ismertetése.