Azure Policy-definíciós struktúraszabály
A szabályzatszabály a if
következőből áll és then
blokkokból áll. A blokkban if
egy vagy több feltételt határoz meg, amelyek meghatározzák a szabályzat kikényszerítését. Ezekre a feltételekre logikai operátorokat alkalmazhat a szabályzat forgatókönyvének pontos meghatározásához.
Az egyes effektusokra, a kiértékelési sorrendre, a tulajdonságokra és a példákra vonatkozó részletes információkért tekintse meg az Azure Policy-definíciók hatásának alapjait.
A blokkban then
a feltételek teljesülése esetén if
előforduló hatást határozza meg.
{
"if": {
<condition> | <logical operator>
},
"then": {
"effect": "deny | audit | modify | denyAction | append | auditIfNotExists | deployIfNotExists | disabled"
}
}
A policyRule-ról további információt a szabályzatdefiníciós sémában talál.
Logikai operátorok
A támogatott logikai operátorok a következők:
"not": {condition or operator}
"allOf": [{condition or operator},{condition or operator}]
"anyOf": [{condition or operator},{condition or operator}]
A not
szintaxis megfordítja a feltétel eredményét. A allOf
szintaxisnak (a logikai and
művelethez hasonlóan) minden feltételnek igaznak kell lennie. A anyOf
szintaxisnak (a logikai or
művelethez hasonlóan) egy vagy több feltételnek igaznak kell lennie.
Logikai operátorokat is beágyazhat. Az alábbi példa egy not
műveletbe ágyazott allOf
műveletet mutat be.
"if": {
"allOf": [
{
"not": {
"field": "tags",
"containsKey": "application"
}
},
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
}
]
},
Feltételek
A feltétel kiértékeli, hogy egy érték megfelel-e bizonyos feltételeknek. A támogatott feltételek a következők:
"equals": "stringValue"
"notEquals": "stringValue"
"like": "stringValue"
"notLike": "stringValue"
"match": "stringValue"
"matchInsensitively": "stringValue"
"notMatch": "stringValue"
"notMatchInsensitively": "stringValue"
"contains": "stringValue"
"notContains": "stringValue"
"in": ["stringValue1","stringValue2"]
"notIn": ["stringValue1","stringValue2"]
"containsKey": "keyName"
"notContainsKey": "keyName"
"less": "dateValue"
|"less": "stringValue"
|"less": intValue
"lessOrEquals": "dateValue"
|"lessOrEquals": "stringValue"
|"lessOrEquals": intValue
"greater": "dateValue"
|"greater": "stringValue"
|"greater": intValue
"greaterOrEquals": "dateValue"
|"greaterOrEquals": "stringValue"
|"greaterOrEquals": intValue
"exists": "bool"
lessOrEquals
greaterOrEquals
greater
Ha less
a tulajdonságtípus nem egyezik meg a feltételtípussal, hibaüzenet jelenik meg. A sztringek összehasonlítását a rendszer a InvariantCultureIgnoreCase
.
A feltételek és notLike
a like
feltételek használatakor helyettesítő karaktert (*
) kell megadnia az értékben. Az értéknek nem szabad egynél több helyettesítő karaktert megadnia.
A feltételek és notMatch
a match
feltételek használatakor adjon meg egy hashtaget (#
) a számjegy, a kérdőjel (?
) betűhöz, a pont (.
) pedig az adott karakternek megfelelő karaktert, illetve bármely más karaktert. Bár match
a kis- és nagybetűk megkülönböztetik a kis- és nagybetűket, a kis- és notMatch
nagybetűket kiértékelő stringValue
összes többi feltétel érzéketlen. A kis- és nagybetűk nem érzékeny alternatívái a következőkben matchInsensitively
érhetők el: és notMatchInsensitively
.
Mezők
Azok a feltételek, amelyek kiértékelik, hogy az erőforrás-kérelem hasznos adatainak értékei megfelelnek-e bizonyos feltételeknek, kifejezéssel field
alakíthatók ki. A következő mezők támogatottak:
name
fullName
- Az erőforrás teljes nevét adja vissza. Az erőforrás teljes neve a szülőerőforrás-nevek (például
myServer/myDatabase
) által előre felerősített erőforrásnév.
- Az erőforrás teljes nevét adja vissza. Az erőforrás teljes neve a szülőerőforrás-nevek (például
kind
type
location
- A helymezők normalizálva vannak a különböző formátumok támogatásához. Például egyenlőnek
East US 2
tekinthető.eastus2
- Globálisan használható helyfüggetlen erőforrásokhoz.
- A helymezők normalizálva vannak a különböző formátumok támogatásához. Például egyenlőnek
id
- A kiértékelendő erőforrás erőforrás-azonosítóját adja vissza.
- Példa:
/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myRG/providers/Microsoft.KeyVault/vaults/myVault
identity.type
- Az erőforráson engedélyezett felügyelt identitás típusát adja vissza.
tags
tags['<tagName>']
- Ez a zárójelszintaxis olyan címkeneveket támogat, amelyek írásjelekkel, például kötőjellel, pontlal vagy szóközzel rendelkeznek.
- Hol
tagName
található annak a címkének a neve, amelynek a feltételét ellenőrizni szeretné. - Példák:
tags['Acct.CostCenter']
holAcct.CostCenter
található a címke neve.
tags['''<tagName>''']
- Ez a zárójel szintaxisa támogatja azokat a címkéket, amelyekben aposztrófok vannak, dupla aposztrófokkal való meneküléssel.
- Hol
tagName
található annak a címkének a neve, amelynek a feltételét ellenőrizni szeretné. - Példa:
tags['''My.Apostrophe.Tag''']
hol'My.Apostrophe.Tag'
található a címke neve.
Feljegyzés
tags.<tagName>
,tags[tagName]
éstags[tag.with.dots]
továbbra is elfogadható módon deklarálhat egy címkemezőt. Az előnyben részesített kifejezések azonban a fent felsoroltak.tulajdonság-aliasok – egy listához lásd : Aliasok.
Feljegyzés
A
field
tömb aliasára[*]
hivatkozó kifejezésekben a tömb minden elemének kiértékelése egyenként történik az elemek közötti logikaiand
értékekkel. További információ: Hivatkozási tömberőforrás-tulajdonságok.
A kifejezéseket használó field
feltételek felülírhatják az írási műveletekhez használt régi szabályzatdefiníciós szintaxist "source": "action"
. Ez például már nem támogatott:
{
"source": "action",
"like": "Microsoft.Network/publicIPAddresses/*"
}
A kívánt viselkedés azonban a következő logikával field
érhető el:
{
"field": "type",
"equals": "Microsoft.Network/publicIPAddresses"
}
Címkék használata paraméterekkel
Egy paraméterérték átadható egy címkemezőnek. Ha egy paramétert egy címkemezőnek ad át, az növeli a szabályzatdefiníció rugalmasságát a szabályzat-hozzárendelés során.
Az alábbi példában concat
a paraméter értékének elnevezett címke mezőkeresésére tagName
szolgál. Ha ez a címke nem létezik, az modify
effektussal a rendszer a keresési függvény használatával resourcegroup()
hozzáadja a címkét a naplózott erőforrások szülőerőforrás-csoportjában beállított azonos nevű címke értékével.
{
"if": {
"field": "[concat('tags[', parameters('tagName'), ']')]",
"exists": "false"
},
"then": {
"effect": "modify",
"details": {
"operations": [
{
"operation": "add",
"field": "[concat('tags[', parameters('tagName'), ']')]",
"value": "[resourcegroup().tags[parameters('tagName')]]"
}
],
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/4a9ae827-6dc8-4573-8ac7-8239d42aa03f"
]
}
}
}
Érték
Azok a feltételek, amelyek kiértékelik, hogy egy érték megfelel-e bizonyos feltételeknek, kifejezéssel value
alakíthatók-e ki. Az értékek lehetnek literálok, paraméterek értékei vagy bármely támogatott sablonfüggvény visszaadott értékei.
Figyelmeztetés
Ha egy sablonfüggvény eredménye hiba, a szabályzat kiértékelése meghiúsul. A sikertelen kiértékelés implicit deny
. További információkért lásd a sablonhibák elkerülését ismertető témakört. A enforcementModedoNotEnforce
használatával megelőzheti a sikertelen értékelés új vagy frissített erőforrásokra gyakorolt hatását egy új szabályzatdefiníció tesztelése és érvényesítése során.
Példák értékre
Ez a házirendszabály-példa a függvény és a visszaadott name
tulajdonság eredményét hasonlítja value
össze egy like
feltétellel*netrg
.resourceGroup()
A szabály nem tagadja meg azokat az Microsoft.Network/*
type
erőforrásokat, amelyek neve egyetlen erőforráscsoportban sem végződik *netrg
.
{
"if": {
"allOf": [
{
"value": "[resourceGroup().name]",
"like": "*netrg"
},
{
"field": "type",
"notLike": "Microsoft.Network/*"
}
]
},
"then": {
"effect": "deny"
}
}
Ez a házirendszabály-példa több beágyazott függvény equals
true
eredményének ellenőrzésére szolgálvalue
. A szabály tagad minden olyan erőforrást, amely legalább három címkét nem rendelkezik.
{
"mode": "indexed",
"policyRule": {
"if": {
"value": "[less(length(field('tags')), 3)]",
"equals": "true"
},
"then": {
"effect": "deny"
}
}
}
Sablonhibák elkerülése
A sablonfüggvények value
használata számos összetett beágyazott függvényt tesz lehetővé. Ha egy sablonfüggvény eredménye hiba, a szabályzat kiértékelése meghiúsul. A sikertelen kiértékelés implicit deny
. Példa egy value
olyan esetre, amely bizonyos helyzetekben meghiúsul:
{
"policyRule": {
"if": {
"value": "[substring(field('name'), 0, 3)]",
"equals": "abc"
},
"then": {
"effect": "audit"
}
}
}
A fenti példaszabály a substring() függvény használatával hasonlítja össze az első három karaktert name
abc
. Ha name
három karakternél rövidebb, a substring()
függvény hibát eredményez. Ez a hiba miatt a szabályzat effektussá válik deny
.
Ehelyett használja a ha() függvényt annak ellenőrzésére, hogy az első három karakter name
egyenlő-e abc
anélkül name
, hogy háromnál rövidebb karakter okozna hibát:
{
"policyRule": {
"if": {
"value": "[if(greaterOrEquals(length(field('name')), 3), substring(field('name'), 0, 3), 'not starting with abc')]",
"equals": "abc"
},
"then": {
"effect": "audit"
}
}
}
A módosított szabályzatszabálysal ellenőrizze a hossztname
, if()
mielőtt három karakternél kevesebb karaktert tartalmazó értékre próbálna bejutnisubstring()
. Ha name
túl rövid, akkor a rendszer a "nem abc-vel kezdődő" értéket adja vissza, és összehasonlítja a következővel abc
: . A rövid névvel nem kezdődő abc
erőforrások továbbra is meghiúsulnak a szabályzatszabályban, de a kiértékelés során már nem okoznak hibát.
Count
Egy kifejezéssel olyan feltételek hozhatók létre, amelyek megszámolják, hogy egy tömb hány tagja felel meg bizonyos count
feltételeknek. A gyakori forgatókönyvek azt ellenőrzik, hogy a tömbtagok "legalább egyikének", "pontosan az egyiknek", az "összesnek" vagy a tömbtagok egyikének sem felel-e meg egy feltétel. A count
függvény kiértékeli az egyes tömbtagokat egy feltételkifejezéshez, és összegzi a valódi eredményeket, amelyet aztán összehasonlít a kifejezés operátorával.
Mezőszám
Megszámolja, hogy a kérelem hasznos adattömbjének hány tagja felel meg egy feltételkifejezésnek. A kifejezések struktúrája field count
a következő:
{
"count": {
"field": "<[*] alias>",
"where": {
/* condition expression */
}
},
"<condition>": "<compare the count of true condition expression array members to this value>"
}
A rendszer a következő tulajdonságokat field count
használja:
count.field
(kötelező): A tömb elérési útját tartalmazza, és tömb aliasának kell lennie.count.where
(nem kötelező): A feltételkifejezés, amely egyenként kiértékelhető a tömb aliastömbjének minden egyes tagjára vonatkozóancount.field
. Ha ez a tulajdonság nincs megadva, a rendszer a "mező" elérési úttal rendelkező összes tömbtagot igaz értékre értékeli. A tulajdonságon belül bármilyen feltétel használható. A tulajdonságon belül logikai operátorok használhatók összetett értékelési követelmények létrehozásához.condition
(kötelező): Az érték összehasonlítva van a feltételkifejezésnek megfelelőcount.where
elemek számával. Numerikus feltételt kell használni.
A tömbtulajdonságok Azure Policy-beli használatával kapcsolatos további részletekért, beleértve a kifejezés kiértékelésének részletes magyarázatát, tekintse meg a field count
tömberőforrás-tulajdonságokra vonatkozó hivatkozásokat.
Értékszám
Megszámolja, hogy egy tömb hány tagja felel meg egy feltételnek. A tömb lehet literális tömb vagy tömbparaméterre mutató hivatkozás. A kifejezések struktúrája value count
a következő:
{
"count": {
"value": "<literal array | array parameter reference>",
"name": "<index name>",
"where": {
/* condition expression */
}
},
"<condition>": "<compare the count of true condition expression array members to this value>"
}
A rendszer a következő tulajdonságokat value count
használja:
count.value
(kötelező): A kiértékelendő tömb.count.name
(kötelező): Az index neve, angol betűkből és számjegyekből áll. Az aktuális iterációban kiértékelt tömbtag értékének nevét határozza meg. A rendszer a nevet használja az aktuális értékre való hivatkozáshoz acount.where
feltételen belül. Nem kötelező, ha acount
kifejezés nem egy másikcount
kifejezés gyermekében van. Ha nincs megadva, az index neve implicit módon a következőre"default"
van állítva: .count.where
(nem kötelező): A feltételkifejezés, amely egyenként kiértékelhető a tömb minden egyes tagjáracount.value
vonatkozóan. Ha ez a tulajdonság nincs megadva, a rendszer az összes tömbtagot igaz értékre értékeli. A tulajdonságon belül bármilyen feltétel használható. A tulajdonságon belül logikai operátorok használhatók összetett értékelési követelmények létrehozásához. Az aktuális számba vehető tömbtag értéke az aktuális függvény meghívásával érhető el.condition
(kötelező): Az érték összehasonlítva van a feltételkifejezésnek megfelelőcount.where
elemek számával. Numerikus feltételt kell használni.
Az aktuális függvény
A current()
függvény csak a feltételen count.where
belül érhető el. A kifejezés kiértékelése által count
jelenleg számba adott tömbtag értékét adja vissza.
Értékszám használata
current(<index name defined in count.name>)
. Például:current('arrayMember')
current()
. Csak akkor engedélyezett, ha avalue count
kifejezés nem egy másikcount
kifejezés gyermeke. Ugyanazt az értéket adja vissza, mint a fenti.
Ha a hívás által visszaadott érték objektum, a tulajdonság tartozékai támogatottak. Például: current('objectArrayMember').property
Mezőszám használata
current(<the array alias defined in count.field>)
. Például:current('Microsoft.Test/resource/enumeratedArray[*]')
.current()
. Csak akkor engedélyezett, ha afield count
kifejezés nem egy másikcount
kifejezés gyermeke. Ugyanazt az értéket adja vissza, mint a fenti.current(<alias of a property of the array member>)
. Például:current('Microsoft.Test/resource/enumeratedArray[*].property')
.
Példák mezőszámra
1. példa: Annak ellenőrzése, hogy egy tömb üres-e
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]"
},
"equals": 0
}
2. példa: Ellenőrizze, hogy csak egy tömbtag felel-e meg a feltételkifejezésnek
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].description",
"equals": "My unique description"
}
},
"equals": 1
}
3. példa: Ellenőrizze, hogy legalább egy tömbtag megfelel-e a feltételkifejezésnek
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].description",
"equals": "My common description"
}
},
"greaterOrEquals": 1
}
4. példa: Ellenőrizze, hogy az objektumtömb összes tagja megfelel-e a feltételkifejezésnek
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].description",
"equals": "description"
}
},
"equals": "[length(field('Microsoft.Network/networkSecurityGroups/securityRules[*]'))]"
}
5. példa: Ellenőrizze, hogy legalább egy tömbtag egyezik-e a feltételkifejezés több tulajdonságával
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"allOf": [
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].direction",
"equals": "Inbound"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].access",
"equals": "Allow"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].destinationPortRange",
"equals": "3389"
}
]
}
},
"greater": 0
}
6. példa: A feltételeken belüli where
függvény használata current()
a sablonfüggvényben jelenleg számba adott tömbtag értékének eléréséhez. Ez a feltétel ellenőrzi, hogy egy virtuális hálózat tartalmaz-e olyan címelőtagot, amely nem tartozik a 10.0.0.0/24 CIDR-tartomány alá.
{
"count": {
"field": "Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]",
"where": {
"value": "[ipRangeContains('10.0.0.0/24', current('Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]'))]",
"equals": false
}
},
"greater": 0
}
7. példa: A feltételeken belüli where
függvény használata field()
az aktuálisan számba adott tömbtag értékének eléréséhez. Ez a feltétel ellenőrzi, hogy egy virtuális hálózat tartalmaz-e olyan címelőtagot, amely nem tartozik a 10.0.0.0/24 CIDR-tartomány alá.
{
"count": {
"field": "Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]",
"where": {
"value": "[ipRangeContains('10.0.0.0/24', first(field(('Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]')))]",
"equals": false
}
},
"greater": 0
}
Példák értékszámra
1. példa: Ellenőrizze, hogy az erőforrás neve megegyezik-e a megadott névminták bármelyikével.
{
"count": {
"value": [
"prefix1_*",
"prefix2_*"
],
"name": "pattern",
"where": {
"field": "name",
"like": "[current('pattern')]"
}
},
"greater": 0
}
2. példa: Ellenőrizze, hogy az erőforrás neve megegyezik-e a megadott névminták bármelyikével. A current()
függvény nem ad meg indexnevet. Az eredmény megegyezik az előző példával.
{
"count": {
"value": [
"prefix1_*",
"prefix2_*"
],
"where": {
"field": "name",
"like": "[current()]"
}
},
"greater": 0
}
3. példa: Ellenőrizze, hogy az erőforrás neve megegyezik-e a tömbparaméter által megadott keresztnévmintákkal.
{
"count": {
"value": "[parameters('namePatterns')]",
"name": "pattern",
"where": {
"field": "name",
"like": "[current('pattern')]"
}
},
"greater": 0
}
4. példa: Ellenőrizze, hogy a virtuális hálózat címelőtagja nem szerepel-e a jóváhagyott előtagok listájában.
{
"count": {
"field": "Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]",
"where": {
"count": {
"value": "[parameters('approvedPrefixes')]",
"name": "approvedPrefix",
"where": {
"value": "[ipRangeContains(current('approvedPrefix'), current('Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]'))]",
"equals": true
},
},
"equals": 0
}
},
"greater": 0
}
5. példa: Ellenőrizze, hogy az összes fenntartott NSG-szabály egy NSG-ben van-e definiálva. A fenntartott NSG-szabályok tulajdonságai objektumokat tartalmazó tömbparaméterben vannak definiálva.
Paraméter értéke:
[
{
"priority": 101,
"access": "deny",
"direction": "inbound",
"destinationPortRange": 22
},
{
"priority": 102,
"access": "deny",
"direction": "inbound",
"destinationPortRange": 3389
}
]
Szabályzat:
{
"count": {
"value": "[parameters('reservedNsgRules')]",
"name": "reservedNsgRule",
"where": {
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"allOf": [
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].priority",
"equals": "[current('reservedNsgRule').priority]"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].access",
"equals": "[current('reservedNsgRule').access]"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].direction",
"equals": "[current('reservedNsgRule').direction]"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].destinationPortRange",
"equals": "[current('reservedNsgRule').destinationPortRange]"
}
]
}
},
"equals": 1
}
},
"equals": "[length(parameters('reservedNsgRules'))]"
}
Szabályzatfüggvények
A függvények további logikát vezetnek be egy szabályzatszabályba. A feloldásuk egy szabályzatdefiníció házirendszabályán belül és a kezdeményezésben a szabályzatdefiníciókhoz rendelt paraméterértékek között van.
Minden Resource Manager-sablonfüggvény használható egy szabályzatszabályon belül, kivéve a következő függvényeket és a felhasználó által definiált függvényeket:
copyIndex()
dateTimeAdd()
dateTimeFromEpoch
dateTimeToEpoch
deployment()
environment()
extensionResourceId()
lambda()
További információ: lambdalistAccountSas()
listKeys()
listSecrets()
list*
managementGroup()
newGuid()
pickZones()
providers()
reference()
resourceId()
subscriptionResourceId()
tenantResourceId()
tenant()
variables()
Feljegyzés
Ezek a függvények továbbra is elérhetők a details.deployment.properties.template
sablon üzembe helyezésének egy deployIfNotExists
szabályzatdefinícióban való részén belül.
A következő függvény egy szabályzatszabályban használható, de eltér az Azure Resource Manager-sablonban (ARM-sablonban) való használattól:
utcNow()
– Az ARM-sablontól eltérően ez a tulajdonság az defaultValue értéken kívül is használható.- Egy olyan sztringet ad vissza, amely az aktuális dátumra és időre van állítva univerzális ISO 8601 DateTime formátumban
yyyy-MM-ddTHH:mm:ss.fffffffZ
.
- Egy olyan sztringet ad vissza, amely az aktuális dátumra és időre van állítva univerzális ISO 8601 DateTime formátumban
A következő függvények csak szabályzatszabályokban érhetők el:
addDays(dateTime, numberOfDaysToAdd)
dateTime
: [Kötelező] sztring – Az univerzális ISO 8601 DateTime formátumú sztring "yyyyy-MM-ddTHH:mm:ss. FFFFFFFZ'numberOfDaysToAdd
: [Kötelező] egész szám – Hozzáadandó napok száma
field(fieldName)
fieldName
: [Kötelező] sztring – A lekérendő mező neve- Ennek a mezőnek az értékét adja vissza a Ha feltétel által kiértékelt erőforrásból.
field
elsődlegesen a kiértékelendő erőforrás mezőireauditIfNotExists
deployIfNotExists
való hivatkozásra szolgál. Erre példa a DeployIfNotExists példában látható.
requestContext().apiVersion
- A szabályzat kiértékelését kezdeményező kérés API-verzióját adja vissza (például:
2021-09-01
). Ez az érték az API-verzió, amelyet az erőforrás-létrehozás/-frissítés kiértékelésére vonatkozó PUT/PATCH kérelemben használtak. A rendszer mindig a legújabb API-verziót használja a meglévő erőforrások megfelelőségi kiértékelése során.
- A szabályzat kiértékelését kezdeményező kérés API-verzióját adja vissza (például:
policy()
A kiértékelendő szabályzattal kapcsolatos alábbi információkat adja vissza. A tulajdonságok a visszaadott objektumból érhetők el (például:
[policy().assignmentId]
).{ "assignmentId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/policyAssignments/myAssignment", "definitionId": "/providers/Microsoft.Authorization/policyDefinitions/34c877ad-507e-4c82-993e-3452a6e0ad3c", "setDefinitionId": "/providers/Microsoft.Authorization/policySetDefinitions/42a694ed-f65e-42b2-aa9e-8052e9740a92", "definitionReferenceId": "StorageAccountNetworkACLs" }
ipRangeContains(range, targetRange)
range
: [Kötelező] sztring – Egy IP-címtartományt megadva annak ellenőrzéséhez, hogy a targetRange belül van-e.targetRange
: [Kötelező] sztring – A tartományon belül érvényesíteni kívánt IP-címtartományt meghatározó karakterlánc.- Logikai értéket ad vissza, hogy a tartomány IP-címtartománya tartalmazza-e a targetRange IP-címtartományt. Az üres tartományok vagy az IP-családok közötti keverés nem engedélyezett, és kiértékelési hibát eredményez.
Támogatott formátumok:
- Egyetlen IP-cím (példák:
10.0.0.0
,2001:0DB8::3:FFFE
) - CIDR-tartomány (példák:
10.0.0.0/24
,2001:0DB8::/110
) - Kezdő és záró IP-címek által definiált tartomány (példák:
192.168.0.1-192.168.0.9
,2001:0DB8::-2001:0DB8::3:FFFF
)
current(indexName)
- Speciális függvény, amely csak darabszámkifejezéseken belül használható.
Példa házirendfüggvényre
Ez a házirendszabály-példa az erőforrásfüggvényt használja a resourceGroup
name
tulajdonság lekéréséhez, a concat
tömb- és objektumfüggvénnyel kombinálva létrehoz egy feltételt like
, amely kikényszeríti az erőforrás nevét az erőforráscsoport nevével való kezdéshez.
{
"if": {
"not": {
"field": "name",
"like": "[concat(resourceGroup().name,'*')]"
}
},
"then": {
"effect": "deny"
}
}
Szabályzatszabály korlátai
A létrehozás során kikényszerített korlátok
A szabályzatszabályok struktúrájára vonatkozó korlátokat a szabályzat létrehozása vagy hozzárendelése során kényszeríti ki a rendszer. A korlátokat meghaladó szabályzatdefiníciók létrehozására vagy hozzárendelésére tett kísérletek sikertelenek lesznek.
Korlát | Érték | További részletek |
---|---|---|
Feltételkifejezések a if feltételben |
4096 | |
Feltételkifejezések a then blokkban |
128 | A szabályzatokra auditIfNotExists és deployIfNotExists a existenceCondition szabályzatokra vonatkozik |
Szabályzatfüggvények szabályzatszabályonként | 2048 | |
Szabályzatfüggvények paramétereinek száma | 128 | Példa: [function('parameter1', 'parameter2', ...)] |
Beágyazott szabályzatfüggvények mélysége | 64 | Példa: [function(nested1(nested2(...)))] |
Szabályzatfüggvények kifejezéssztringjeinek hossza | 81 920 | Példa: a hossza "[function(....)]" |
Field count kifejezések tömbenként |
5 | |
Value count szabályzatszabályonkénti kifejezések |
10 | |
Value count kifejezés iterációinak száma |
100 | Beágyazott Value count kifejezések esetén ez magában foglalja a szülőkifejezés iterációs számát is |
A kiértékelés során kikényszerített korlátok
A szabályzatfüggvények által a szabályzatkiértékelés során feldolgozott objektumok méretére vonatkozó korlátok. Ezek a korlátok nem mindig kényszeríthetők ki a létrehozás során, mivel a kiértékelt tartalomtól függenek. Példa:
{
"field": "name",
"equals": "[concat(field('stringPropertyA'), field('stringPropertyB'))]"
}
A függvény által létrehozott sztring concat()
hossza a kiértékelt erőforrás tulajdonságainak értékétől függ.
Korlát | Érték | Példa |
---|---|---|
Az adott függvény által visszaadott sztring hossza | 131 072 | [concat(field('longString1'), field('longString2'))] |
A függvény számára paraméterként megadott vagy a függvény által visszaadott összetett objektumok mélysége | 128 | [union(field('largeObject1'), field('largeObject2'))] |
A függvény számára paraméterként megadott vagy a függvény által visszaadott összetett objektumok csomópontjainak száma | 32 768 | [concat(field('largeArray1'), field('largeArray2'))] |
Figyelmeztetés
A fenti korlátokat az értékelés során túllépő szabályzatok hatékonyan szabályzattá válnak deny
, és blokkolhatják a bejövő kéréseket.
Ha összetett függvényeket tartalmazó szabályzatokat ír, ügyeljen ezekre a korlátokra, és tesztelje a szabályzatokat olyan erőforrásokon, amelyek túlléphetik a korlátokat.
Következő lépések
- A szabályzatdefiníció szerkezetéről további információt az alapismeretek, paraméterek és aliasok című témakörben talál.
- A kezdeményezésekhez keresse fel a kezdeményezésdefiníciós struktúrát.
- Tekintse át az Azure Policy-minták példáit.
- A Szabályzatok hatásainak ismertetése.
- Megtudhatja, hogyan hozhat létre programozott módon szabályzatokat.
- Megtudhatja, hogyan kérhet le megfelelőségi adatokat.
- Megtudhatja, hogyan orvosolhatja a nem megfelelő erőforrásokat.
- Tekintse át, hogy mi az a felügyeleti csoport az erőforrások azure-beli felügyeleti csoportokkal való rendszerezésével.