Grunderna i Azure Policy-definitionsstruktur
Azure Policy-definitioner beskriver resursefterlevnadsvillkor och vilken effekt som ska gälla om ett villkor uppfylls. Ett villkor jämför ett fält eller ett värde för en resursegenskap med ett obligatoriskt värde. Resursegenskapsfält används med hjälp av alias. När ett resursegenskapsfält är en matris kan ett särskilt matrisalias användas för att välja värden från alla matrismedlemmar och tillämpa ett villkor på var och en. Läs mer om villkor.
Genom att använda principtilldelningar kan du styra kostnader och hantera dina resurser. Du kan till exempel ange att endast vissa typer av virtuella datorer tillåts. Eller så kan du kräva att resurserna har en viss tagg. Tilldelningar i ett omfång gäller för alla resurser i det omfånget och nedan. Om en principtilldelning används för en resursgrupp är den tillämplig på alla resurser i den resursgruppen.
Du använder JSON för att skapa en principdefinition som innehåller element för:
displayName
description
mode
version
metadata
parameters
policyRule
- logiska utvärderingar
effect
Följande JSON visar till exempel en princip som begränsar var resurser distribueras:
{
"properties": {
"displayName": "Allowed locations",
"description": "This policy enables you to restrict the locations your organization can specify when deploying resources.",
"mode": "Indexed",
"metadata": {
"version": "1.0.0",
"category": "Locations"
},
"parameters": {
"allowedLocations": {
"type": "array",
"metadata": {
"description": "The list of locations that can be specified when deploying resources",
"strongType": "location",
"displayName": "Allowed locations"
},
"defaultValue": [
"westus2"
]
}
},
"policyRule": {
"if": {
"not": {
"field": "location",
"in": "[parameters('allowedLocations')]"
}
},
"then": {
"effect": "deny"
}
}
}
}
Mer information finns i principdefinitionsschemat. Inbyggda Azure Policy-mönster finns i Azure Policy-exempel.
Visningsnamn och beskrivning
Du använder displayName
och description
för att identifiera principdefinitionen och ange kontext för när definitionen används. Har displayName
en maximal längd på 128 tecken och description
en maximal längd på 512 tecken.
Kommentar
När du skapar eller uppdaterar en principdefinition id
definieras , type
och name
av egenskaper utanför JSON och behövs inte i JSON-filen. Om du hämtar principdefinitionen via SDK returneras id
egenskaperna , type
och som en del av JSON, men var och name
en är skrivskyddad information som är relaterad till principdefinitionen.
Principtyp
policyType
Egenskapen kan inte anges, men det finns tre värden som returneras av SDK och visas i portalen:
Builtin
: Microsoft tillhandahåller och underhåller dessa principdefinitioner.Custom
: Alla principdefinitioner som skapats av kunder har det här värdet.Static
: Anger en principdefinition för regelefterlevnad med Microsoft Ownership. Efterlevnadsresultaten för dessa principdefinitioner är resultatet av granskningar som inte kommer från Microsoft av Microsofts infrastruktur. I Azure Portal visas det här värdet ibland som Microsoft-hanterat. Mer information finns i Delat ansvar i molnet.
Läge
mode
Konfigureras beroende på om principen är riktad mot en Azure Resource Manager-egenskap eller en resursprovideregenskap.
Resource Manager-lägen
Avgör mode
vilka resurstyper som utvärderas för en principdefinition. De lägen som stöds är:
all
: utvärdera resursgrupper, prenumerationer och alla resurstyperindexed
: Utvärdera endast resurstyper som stöder taggar och platser
Resursen stöder till exempel Microsoft.Network/routeTables
taggar och platser och utvärderas i båda lägena. Resursen kan dock Microsoft.Network/routeTables/routes
inte taggas och utvärderas inte i indexed
läge.
Vi rekommenderar att du anger mode
till all
i de flesta fall. Alla principdefinitioner som skapas via portalen använder all
läget. Om du använder PowerShell eller Azure CLI kan du ange parametern mode
manuellt. Om principdefinitionen inte innehåller något mode
värde, är det som standard all
i Azure PowerShell och null
i Azure CLI. Ett null
läge är detsamma som att använda indexed
för att stödja bakåtkompatibilitet.
indexed
bör användas när du skapar principer som tillämpar taggar eller platser. Även om det inte krävs förhindrar det att resurser som inte stöder taggar och platser visas som icke-kompatibla i efterlevnadsresultaten. Undantaget är resursgrupper och prenumerationer. Principdefinitioner som framtvingar plats eller taggar i en resursgrupp eller prenumeration bör anges mode
till all
och specifikt riktas mot Microsoft.Resources/subscriptions/resourceGroups
eller-typen Microsoft.Resources/subscriptions
. Ett exempel finns i Mönster: Taggar – Exempel 1. En lista över resurser som stöder taggar finns i Taggstöd för Azure-resurser.
Lägen för resursprovider
Följande lägen för resursprovider stöds fullt ut:
Microsoft.Kubernetes.Data
för att hantera Kubernetes-kluster och komponenter som poddar, containrar och ingresser. Stöds för Azure Kubernetes Service-kluster och Azure Arc-aktiverade Kubernetes-kluster. Definitioner som använder det här resursproviderläget använder effektgranskning, neka och inaktiverad.Microsoft.KeyVault.Data
för att hantera valv och certifikat i Azure Key Vault. Mer information om dessa principdefinitioner finns i Integrera Azure Key Vault med Azure Policy.Microsoft.Network.Data
för att hantera anpassade medlemskapsprinciper för Azure Virtual Network Manager med hjälp av Azure Policy.
Följande lägen för resursprovider stöds för närvarande som en förhandsversion:
Microsoft.ManagedHSM.Data
för att hantera HSM-nycklar (Managed Hardware Security Module) med hjälp av Azure Policy.Microsoft.DataFactory.Data
för att använda Azure Policy för att neka utgående trafikdomännamn för Azure Data Factory som inte anges i en tillåtna lista. Det här läget för resursprovider är endast tvingande och rapporterar inte efterlevnad i offentlig förhandsversion.Microsoft.MachineLearningServices.v2.Data
för att hantera distributioner av Azure Machine Learning-modell . Det här resursproviderläget rapporterar efterlevnad för nyligen skapade och uppdaterade komponenter. Under allmänt tillgänglig förhandsversion finns efterlevnadsposter kvar i 24 timmar. Modelldistributioner som finns innan dessa principdefinitioner tilldelas rapporterar inte efterlevnad.Microsoft.LoadTestService.Data
för att begränsa Azure Load Testing-instanser till privata slutpunkter.
Kommentar
Om inte uttryckligen anges stöder resursproviderlägen endast inbyggda principdefinitioner och undantag stöds inte på komponentnivå.
När Azure Policy-versionshantering släpps har följande lägen för resursprovider inte stöd för inbyggd versionshantering:
Microsoft.DataFactory.Data
Microsoft.MachineLearningServices.v2.Data
Microsoft.ManagedHSM.Data
Version (förhandsversion)
Inbyggda principdefinitioner kan vara värd för flera versioner med samma definitionID
. Om inget versionsnummer anges visar alla funktioner den senaste versionen av definitionen. Om du vill se en specifik version av en inbyggd version måste den anges i API, SDK eller användargränssnitt. Information om hur du refererar till en specifik version av en definition i en tilldelning finns i definitionsversion inom tilldelning
Azure Policy-tjänsten använder version
egenskaperna , preview
och deprecated
för att förmedla tillstånd och ändringsnivå till en inbyggd principdefinition eller ett initiativ. Formatet version
är: {Major}.{Minor}.{Patch}
. När en principdefinition är i förhandsversionstillstånd läggs förhandsgranskningen av suffixet till i version
egenskapen och behandlas som ett booleskt värde. När en principdefinition är inaktuell registreras utfasningen som ett booleskt värde i definitionens metadata med hjälp av "deprecated": "true"
.
- Huvudversion (exempel: 2.0.0): Introducera icke-bakåtkompatibla ändringar, till exempel större regellogikändringar, ta bort parametrar och lägga till en tillämpningseffekt som standard.
- Delversion (exempel: 2.1.0): introducera ändringar som mindre regellogikändringar, lägga till nya tillåtna parametervärden, ändra till , lägga till
roleDefinitionIds
eller flytta definitioner inom ett initiativ. - Korrigeringsversion (exempel: 2.1.4): Introducera sträng- eller metadataändringar och säkerhetsscenarier för brytglas (sällsynta).
Mer information om inbyggda Azure Policy-versioner finns i Inbyggd versionshantering. Mer information om vad det innebär för en princip att bli inaktuell eller i förhandsversion finns i Förhandsversion och inaktuella principer.
Metadata
Den valfria metadata
egenskapen lagrar information om principdefinitionen. 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 och i inbyggda. Varje metadata
egenskap har en gräns på 1 024 tecken.
Vanliga metadataegenskaper
version
(sträng): Spårar information om versionen av innehållet i en principdefinition.category
(sträng): Avgör under vilken kategori i Azure Portal principdefinitionen visas.preview
(booleskt): Sant eller falskt flagga för om principdefinitionen är förhandsversion.deprecated
(booleskt): Sant eller falskt flagga för om principdefinitionen har markerats som inaktuell.portalReview
(sträng): Avgör om parametrar ska granskas i portalen, oavsett vilka indata som krävs.
Definitionsplats
När du skapar ett initiativ eller en princip måste du ange definitionsplatsen. Definitionsplatsen måste vara en hanteringsgrupp eller en prenumeration. Den här platsen avgör omfånget som initiativet eller principen kan tilldelas till. Resurser måste vara direkta medlemmar i eller underordnade i hierarkin för den definitionsplats som ska riktas för tilldelning.
Om definitionsplatsen är en:
- Prenumeration – Endast resurser inom den prenumerationen kan tilldelas principdefinitionen.
- Hanteringsgrupp – Endast resurser i underordnade hanteringsgrupper och underordnade prenumerationer kan tilldelas principdefinitionen. Om du planerar att tillämpa principdefinitionen på flera prenumerationer måste platsen vara en hanteringsgrupp som innehåller varje prenumeration.
Mer information finns i Förstå omfång i Azure Policy.
Nästa steg
- Mer information om principdefinitionsstruktur finns i parametrar, principregel och alias.
- För initiativ går du till initiativdefinitionsstruktur.
- Granska exempel i Azure Policy-exempel.
- Granska Förstå policy-effekter.
- 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.