Tilldelningsstruktur i Azure Policy
Principtilldelningar definierar vilka resurser som ska utvärderas av en principdefinition eller initiaitve. Dessutom kan principtilldelningen fastställa parametrarnas värden för den resursgruppen vid tilldelningstiden, vilket gör det möjligt att återanvända principdefinitioner som hanterar samma resursegenskaper med olika efterlevnadsbehov.
Du använder JavaScript Object Notation (JSON) för att skapa en principtilldelning. Principtilldelningen innehåller element för:
- omfattning
- principdefinitions-ID och version
- visningsnamn
- beskrivning
- metadata
- resursväljare
- Åsidosätter
- tvingande läge
- exkluderade omfång
- icke-efterlevnadsmeddelanden
- parameters
- identitet
Följande JSON visar till exempel en exempelbegäran om principtilldelning i DoNotEnforce-läge med parametrar:
{
"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": []
}
}
Omfattning
Omfånget som används för att skapa tilldelningsresurser är den primära drivrutinen för resurstillämpabilitet. Mer information om tilldelningsomfång finns i
Principdefinitions-ID och version (förhandsversion)
Det här fältet måste vara det fullständiga sökvägsnamnet för antingen en principdefinition eller en initiativdefinition.
policyDefinitionId
är en sträng och inte en matris. Det senaste innehållet i den tilldelade principdefinitionen eller initiativet hämtas varje gång principtilldelningen utvärderas. Vi rekommenderar att du använder ett initiativ i stället om flera principer ofta tilldelas tillsammans.
För inbyggda definitioner och initiativ kan du använda specifika som definitionVersion
du kan utvärdera. Som standard är versionen inställd på den senaste huvudversionen och automatiska ändringar av delversioner och korrigeringar.
Om du vill göra några mindre ändringar av definitionen automatiskt blir #.*.*
versionsnumret . Jokertecken representerar automatiska uppdateringar.
Om du vill fästa på en delversionssökväg skulle versionsformatet vara #.#.*
.
Alla korrigeringsändringar måste anges automatiskt i säkerhetssyfte. Korrigeringsändringar är begränsade till textändringar och scenarier med brytglas.
Visningsnamn och beskrivning
Du använder displayName och beskrivning för att identifiera principtilldelningen och ange kontext för dess användning med den specifika uppsättningen resurser. displayName har en maximal längd på 128 tecken och en maximal längd på 512 tecken.
Metadata
Den valfria metadata
egenskapen lagrar information om principtilldelningen. Kunder kan definiera alla egenskaper och värden som är användbara för organisationen i metadata
. Det finns dock några vanliga egenskaper som används av Azure Policy. Varje metadata
egenskap har en gräns på 1 024 tecken.
Vanliga metadataegenskaper
assignedBy
(sträng): Det egna namnet på säkerhetsobjektet som skapade tilldelningen.createdBy
(sträng): GUID för säkerhetsobjektet som skapade tilldelningen.createdOn
(sträng): Universal ISO 8601 DateTime-formatet för tilldelningens skapandetid.updatedBy
(sträng): Det egna namnet på säkerhetsobjektet som uppdaterade tilldelningen, om någon.updatedOn
(sträng): Universal ISO 8601 DateTime-formatet för tilldelningens uppdateringstid, om det finns några.
Scenariospecifika metadataegenskaper
parameterScopes
(objekt): En samling nyckel/värde-par där nyckeln matchar ett strongType-konfigurerat parameternamn och värdet definierar resursomfånget som används i portalen för att tillhandahålla listan över tillgängliga resurser genom att matcha strongType. Portalen anger det här värdet om omfånget skiljer sig från tilldelningsomfånget. Om det anges anger en redigering av principtilldelningen i portalen automatiskt omfånget för parametern till det här värdet. Omfånget är dock inte låst till värdet och kan ändras till ett annat omfång.Följande exempel
parameterScopes
är för en strongType-parameter med namnetbackupPolicyId
som anger ett omfång för resursval när tilldelningen redigeras i portalen."metadata": { "parameterScopes": { "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}" } }
evidenceStorages
(objekt): Det rekommenderade standardlagringskontot som ska användas för att lagra bevis för attesteringar till principtilldelningar med verkanmanual
. EgenskapendisplayName
är namnet på lagringskontot. EgenskapenevidenceStorageAccountID
är resurs-ID för lagringskontot. EgenskapenevidenceBlobContainer
är namnet på blobcontainern där du planerar att lagra bevisen.{ "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" } ] } } }
Resursväljare
Den valfria resourceSelectors
egenskapen underlättar säkra distributionsmetoder (SDP) genom att du gradvis kan distribuera principtilldelningar baserat på faktorer som resursplats, resurstyp eller om en resurs har en plats. När resursväljare används utvärderar Azure Policy endast resurser som är tillämpliga på specifikationerna i resursväljarna.
Resursväljare kan också användas för att begränsa omfattningen av undantag på samma sätt.
I följande exempelscenario utvärderas den nya principtilldelningen endast om resursens plats är USA , östra eller USA, västra.
{
"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"
}
När du är redo att utöka utvärderingsomfånget för principen behöver du bara uppdatera tilldelningen. I följande exempel visas vår principtilldelning med ytterligare två Azure-regioner som lagts till i SDPRegions-väljaren . Observera att I det här exemplet innebär SDP säker distributionspraxis:
{
"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"
}
Resursväljare har följande egenskaper:
name
: Namnet på resursväljaren.selectors
: (Valfritt) Egenskapen som används för att avgöra vilken delmängd av resurser som ska tillämpas på principtilldelningen ska utvärderas för efterlevnad.kind
: Egenskapen för en väljare som beskriver vilken egenskap som begränsar uppsättningen utvärderade resurser. Varje typ kan bara användas en gång i en enskild resursväljare. Tillåtna värden är:resourceLocation
: Den här egenskapen används för att välja resurser baserat på deras typ. Det går inte att använda i samma resursväljare somresourceWithoutLocation
.resourceType
: Den här egenskapen används för att välja resurser baserat på deras typ.resourceWithoutLocation
: Den här egenskapen används för att välja resurser på prenumerationsnivå som inte har någon plats. Stöder för närvarande endastsubscriptionLevelResources
. Det går inte att använda i samma resursväljare somresourceLocation
.
in
: Listan över tillåtna värden för angivnakind
. Det går inte att använda mednotIn
. Kan innehålla upp till 50 värden.notIn
: Listan över värden som inte tillåts för den angivnakind
. Det går inte att använda medin
. Kan innehålla upp till 50 värden.
En resursväljare kan innehålla flera väljare. För att kunna tillämpas på en resursväljare måste en resurs uppfylla de krav som anges av alla dess väljare. Dessutom kan upp till 10 resursväljare anges i en enda tilldelning. Resurser inom omfång utvärderas när de uppfyller någon av dessa resursväljare.
Åsidosättningar
Med den valfria overrides
egenskapen kan du ändra effekten av en principdefinition utan att ändra den underliggande principdefinitionen eller använda en parametriserad effekt i principdefinitionen.
Ett vanligt användningsfall för åsidosättningar vid effekt är principinitiativ med ett stort antal associerade principdefinitioner. I den här situationen kan hantering av flera principeffekter förbruka betydande administrativt arbete, särskilt när effekten måste uppdateras då och då. Åsidosättningar kan användas för att samtidigt uppdatera effekterna av flera principdefinitioner inom ett initiativ.
Vi tittar på ett exempel. Anta att du har ett principinitiativ med namnet CostManagement som innehåller en anpassad principdefinition med policyDefinitionReferenceId
corpVMSizePolicy och en enda effekt av audit
. Anta att du vill tilldela CostManagement-initiativet , men ännu inte vill se efterlevnad som rapporterats för den här principen. Den här principens granskningseffekt kan ersättas med "inaktiverad" genom en åsidosättning för initiativtilldelningen, som du ser i följande exempel:
{
"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"
}
Ett annat vanligt användningsfall för åsidosättningar är att lansera en ny version av en definition. Rekommenderade steg för att uppdatera en tilldelningsversion på ett säkert sätt finns i Principsäker distribution.
Åsidosättningar har följande egenskaper:
kind
: Egenskapen som tilldelningen åsidosätter. De typer som stöds ärpolicyEffect
ochpolicyVersion
.value
: Det nya värdet som åsidosätter det befintliga värdet. Förkind: policyEffect
är de värden som stöds effekter. Förkind: policyVersion
måste versionsnumret som stöds vara större än eller lika med detdefinitionVersion
som anges i tilldelningen.selectors
: (Valfritt) Egenskapen som används för att avgöra vilken omfattning principtilldelningen ska ha på åsidosättningen.kind
: Egenskapen för en väljare som beskriver vilken egenskap som begränsar omfånget för åsidosättningen. Tillåtna värden förkind: policyEffect
:policyDefinitionReferenceId
: Detta anger vilka principdefinitioner i en initiativtilldelning som ska ha effekt åsidosättningen.resourceLocation
: Den här egenskapen används för att välja resurser baserat på deras typ. Det går inte att använda i samma resursväljare somresourceWithoutLocation
.
Tillåtet värde för
kind: policyVersion
:resourceLocation
: Den här egenskapen används för att välja resurser baserat på deras typ. Det går inte att använda i samma resursväljare somresourceWithoutLocation
.
in
: Listan över tillåtna värden för angivnakind
. Det går inte att använda mednotIn
. Kan innehålla upp till 50 värden.notIn
: Listan över värden som inte tillåts för den angivnakind
. Det går inte att använda medin
. Kan innehålla upp till 50 värden.
En åsidosättning kan användas för att ersätta effekten av många principer genom att ange flera värden i matrisen policyDefinitionReferenceId. En enda åsidosättning kan användas för upp till 50 policyDefinitionReferenceIds, och en enskild principtilldelning kan innehålla upp till 10 åsidosättningar, utvärderas i den ordning de anges. Innan tilldelningen skapas verifieras den effekt som väljs i åsidosättningen mot principregeln och listan över tillåtna parametervärden (i de fall då effekten parametriseras).
Tvingande läge
Egenskapen enforcementMode ger kunderna möjlighet att testa resultatet av en princip på befintliga resurser utan att initiera principeffekten eller utlösa poster i Azure-aktivitetsloggen.
Det här scenariot kallas ofta "What If" och anpassas till säkra distributionsmetoder. enforcementMode skiljer sig från effekten Inaktiverad , eftersom den effekten förhindrar att resursutvärdering sker alls.
Den här egenskapen har följande värden:
Läge | JSON-värde | Typ | Åtgärda manuellt | Post i aktivitetslogg | Description |
---|---|---|---|---|---|
Enabled | Standardvärde | sträng | Ja | Ja | Principeffekten framtvingas när resursen skapas eller uppdateras. |
Inaktiverad | DoNotEnforce | sträng | Ja | Inga | Principeffekten framtvingas när resursen skapas eller uppdateras. |
Om enforcementMode inte anges i en princip- eller initiativdefinition används värdet Standard . Reparationsåtgärder kan startas för att distribueraIfNotExists-principer , även när enforcementMode är inställt på DoNotEnforce.
Undantagna omfång
Tilldelningens omfattning omfattar alla underordnade resurscontainrar och underordnade resurser. Om en underordnad resurscontainer eller underordnad resurs inte ska ha definitionen tillämpad kan var och en undantas från utvärderingen genom att ange notScopes. Den här egenskapen är en matris för att aktivera exkludera en eller flera resurscontainrar eller resurser från utvärdering. notScopes kan läggas till eller uppdateras när den första tilldelningen har skapats.
Kommentar
En exkluderad resurs skiljer sig från en undantagen resurs. Mer information finns i Förstå omfång i Azure Policy.
Icke-efterlevnadsmeddelanden
Om du vill ange ett anpassat meddelande som beskriver varför en resurs inte är kompatibel med princip- eller initiativdefinitionen anger du nonComplianceMessages
i tilldelningsdefinitionen. Den här noden är en matris med message
poster. Det här anpassade meddelandet är ett tillägg till standardfelmeddelandet för inkompatibilitet och är valfritt.
Viktigt!
Anpassade meddelanden för inkompatibilitet stöds endast för definitioner eller initiativ med Resource Manager-lägesdefinitioner .
"nonComplianceMessages": [
{
"message": "Default message"
}
]
Om tilldelningen är för ett initiativ kan olika meddelanden konfigureras för varje principdefinition i initiativet. Meddelandena använder värdet policyDefinitionReferenceId
som konfigurerats i initiativdefinitionen. Mer information finns i egenskaper för principdefinitioner.
"nonComplianceMessages": [
{
"message": "Default message"
},
{
"message": "Message for just this policy definition by reference ID",
"policyDefinitionReferenceId": "10420126870854049575"
}
]
Parametrar
Det här segmentet av principtilldelningen innehåller värdena för parametrarna som definierats i principdefinitionen eller initiativdefinitionen. Den här designen gör det möjligt att återanvända en princip- eller initiativdefinition med olika resurser, men söka efter olika affärsvärden eller resultat.
"parameters": {
"prefix": {
"value": "DeptA"
},
"suffix": {
"value": "-LC"
}
}
I det här exemplet är prefix
de parametrar som tidigare definierats i principdefinitionen och suffix
. Den här specifika principtilldelningen anges prefix
till DeptA och suffix
- LC. Samma principdefinition kan återanvändas med en annan uppsättning parametrar för en annan avdelning, vilket minskar dupliceringen och komplexiteten i principdefinitioner samtidigt som flexibiliteten ges.
Identitet
För principtilldelningar med effekt inställd på att distribueraIfNotExist eller ändra måste den ha en identitetsegenskap för att utföra reparation på icke-kompatibla resurser. När du använder en identitet måste användaren också ange en plats för tilldelningen.
Kommentar
En enskild principtilldelning kan bara associeras med en system- eller användartilldelad hanterad identitet. Den identiteten kan dock tilldelas mer än en roll om det behövs.
# System-assigned identity
"identity": {
"type": "SystemAssigned"
}
# User-assigned identity
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/SubscriptionID/resourceGroups/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
}
},
Nästa steg
- Lär dig mer om policydefinitionsstrukturen.
- Förstå hur du programmatiskt skapar principer.
- Lär dig hur du hämtar efterlevnadsdata.
- Lär dig hur du åtgärdar icke-kompatibla resurser.
- Granska vad en hanteringsgrupp är med Organisera dina resurser med Azure-hanteringsgrupper.