Azure Policy initiativdefinitionsstruktur
Med initiativ kan du gruppera flera relaterade principdefinitioner för att förenkla tilldelningar och hantering eftersom du arbetar med en grupp som ett enda objekt. Du kan till exempel gruppera relaterade taggningsprincipdefinitioner i ett enda initiativ. I stället för att tilldela varje princip individuellt tillämpar du initiativet.
Du använder JSON för att skapa en principinitiativdefinition. Principinitiativdefinitionen innehåller element för:
- visningsnamn
- beskrivning
- metadata
- parametrar
- principdefinitioner
- principgrupper (den här egenskapen är en del av funktionen Regelefterlevnad (förhandsversion)
I följande exempel visas hur du skapar ett initiativ för att hantera två taggar: costCenter
och productName
. Den använder två inbyggda principer för att tillämpa standardtaggvärdet.
{
"properties": {
"displayName": "Billing Tags Policy",
"policyType": "Custom",
"description": "Specify cost Center tag and product name tag",
"metadata": {
"version": "1.0.0",
"category": "Tags"
},
"parameters": {
"costCenterValue": {
"type": "String",
"metadata": {
"description": "required value for Cost Center tag"
},
"defaultValue": "DefaultCostCenter"
},
"productNameValue": {
"type": "String",
"metadata": {
"description": "required value for product Name tag"
},
"defaultValue": "DefaultProduct"
}
},
"policyDefinitions": [{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"parameters": {
"tagName": {
"value": "costCenter"
},
"tagValue": {
"value": "[parameters('costCenterValue')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"parameters": {
"tagName": {
"value": "costCenter"
},
"tagValue": {
"value": "[parameters('costCenterValue')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"parameters": {
"tagName": {
"value": "productName"
},
"tagValue": {
"value": "[parameters('productNameValue')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"parameters": {
"tagName": {
"value": "productName"
},
"tagValue": {
"value": "[parameters('productNameValue')]"
}
}
}
]
}
}
Azure Policy inbyggda och mönster finns i Azure Policy exempel.
Metadata
Den valfria metadata
egenskapen lagrar information om principinitiativdefinitionen.
Kunder kan definiera alla egenskaper och värden som är användbara för deras organisation i metadata
. Det finns dock några vanliga egenskaper som används av Azure Policy och i inbyggda.
Vanliga metadataegenskaper
version
(sträng): Spårar information om versionen av innehållet i en principinitiativdefinition.category
(sträng): Avgör under vilken kategori i Azure Portal principdefinitionen visas.Anteckning
För ett initiativ
category
för regelefterlevnad måste vara Regelefterlevnad.preview
(boolesk): Sant eller falskt-flagga för om principinitiativdefinitionen är förhandsversion.deprecated
(boolesk): Sant eller falskt-flagga för om principinitiativdefinitionen har markerats som inaktuell.
Anteckning
Azure Policy-tjänsten använder version
egenskaperna , preview
och deprecated
för att förmedla ändringsnivån till en inbyggd principdefinition eller initiativ och tillstånd. Formatet version
är: {Major}.{Minor}.{Patch}
. Specifika tillstånd, till exempel inaktuella tillstånd eller förhandsversioner, läggs till i version
egenskapen eller i en annan egenskap som ett booleskt värde. Mer information om hur Azure Policy inbyggda versioner finns i Inbyggd versionshantering.
Parametrar
Parametrar underlättar hanteringen av principer genom att minska antalet principdefinitioner. Tänk på parametrar som fälten i ett formulär - name
, address
, city
, state
. Dessa parametrar förblir alltid desamma, men deras värden ändras baserat på den person som fyller i formuläret.
Parametrar fungerar på samma sätt när du skapar principinitiativ. Genom att inkludera parametrar i en principinitiativdefinition kan du återanvända den parametern i de inkluderade principerna.
Anteckning
När ett initiativ har tilldelats kan parametrar på initativ nivå inte ändras. Därför rekommenderar vi att du anger ett defaultValue när du definierar parametern .
Parameteregenskaper
En parameter har följande egenskaper som används i principinitiativdefinitionen:
name
: Namnet på parametern. Används av distributionsfunktionenparameters
i principregeln. Mer information finns i använda ett parametervärde.type
: Avgör om parametern är en sträng, matris, objekt, boolesk, heltal, flyttal eller datetime.metadata
: Definierar underegenskaper som främst används av Azure Portal för att visa användarvänlig information:description
: (Valfritt) Förklaringen av vad parametern används till. Kan användas för att ge exempel på godkända värden.displayName
: Det egna namnet som visas i portalen för parametern .strongType
: (Valfritt) Används när du tilldelar principdefinitionen via portalen. Innehåller en sammanhangsmedveten lista. Mer information finns i strongType.
defaultValue
: (Valfritt) Anger värdet för parametern i en tilldelning om inget värde anges.allowedValues
: (Valfritt) Tillhandahåller en matris med värden som parametern accepterar under tilldelningen.
Du kan till exempel definiera en principinitiativdefinition för att begränsa platserna för resurser i de olika inkluderade principdefinitionerna. En parameter för den principinitiativdefinitionen kan vara allowedLocations. Parametern är sedan tillgänglig för varje inkluderad principdefinition och definieras under tilldelningen av principinitiativet.
"parameters": {
"init_allowedLocations": {
"type": "array",
"metadata": {
"description": "The list of allowed locations for resources.",
"displayName": "Allowed locations",
"strongType": "location"
},
"defaultValue": [ "westus2" ],
"allowedValues": [
"eastus2",
"westus2",
"westus"
]
}
}
Skicka ett parametervärde till en principdefinition
Du deklarerar vilka initiativparametrar som du skickar till som inkluderade principdefinitioner i matrisen policyDefinitions för initiativdefinitionen. Även om parameternamnet kan vara detsamma, förenklar användningen av olika namn i initiativen än i principdefinitionerna kodens läsbarhet.
Till exempel kan den init_allowedLocations initiativparameter som definierats tidigare skickas till flera inkluderade principdefinitioner och deras parametrar, sql_locations och vm_locations, så här:
"policyDefinitions": [
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
"policyDefinitionReferenceId": "allowedLocationsSQL",
"parameters": {
"sql_locations": {
"value": "[parameters('init_allowedLocations')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
"policyDefinitionReferenceId": "allowedLocationsVMs",
"parameters": {
"vm_locations": {
"value": "[parameters('init_allowedLocations')]"
}
}
}
]
Det här exemplet refererar till parametern init_allowedLocations som visades i parameteregenskaper.
strongType
I egenskapen metadata
kan du använda strongType för att tillhandahålla en flervalslista med alternativ i Azure Portal. strongType kan vara en resurstyp som stöds eller ett tillåtet värde. Om du vill ta reda på om en resurstyp är giltig för strongType använder du Get-AzResourceProvider.
Vissa resurstyper som inte returneras av Get-AzResourceProvider stöds. Dessa resurstyper är:
Microsoft.RecoveryServices/vaults/backupPolicies
Tillåtna värden av typen icke-resurs för strongType är:
location
resourceTypes
storageSkus
vmSKUs
existingResourceGroups
Principdefinitioner
Delen policyDefinitions
av initiativdefinitionen är en matris där befintliga principdefinitioner ingår i initiativet. Som vi nämnde i Skicka ett parametervärde till en principdefinition är den här egenskapen den plats där initiativparametrar skickas till principdefinitionen.
Egenskaper för principdefinition
Varje matriselement som representerar en principdefinition har följande egenskaper:
policyDefinitionId
(sträng): ID:t för den anpassade eller inbyggda principdefinitionen som ska inkluderas.policyDefinitionReferenceId
(sträng): Ett kort namn för den inkluderade principdefinitionen.parameters
: (Valfritt) Namn/värde-par för att skicka en initiativparameter till den inkluderade principdefinitionen som en egenskap i den principdefinitionen. Mer information finns i Parametrar.groupNames
(matris med strängar): (Valfritt) Gruppen som principdefinitionen är medlem i. Mer information finns i Principgrupper.
Här är ett exempel på policyDefinitions
som har två inkluderade principdefinitioner som vart och ett skickas samma initiativparameter:
"policyDefinitions": [
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
"policyDefinitionReferenceId": "allowedLocationsSQL",
"parameters": {
"sql_locations": {
"value": "[parameters('init_allowedLocations')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
"policyDefinitionReferenceId": "allowedLocationsVMs",
"parameters": {
"vm_locations": {
"value": "[parameters('init_allowedLocations')]"
}
}
}
]
Principdefinitionsgrupper
Principdefinitioner i en initiativdefinition kan grupperas och kategoriseras. Azure Policy funktionen Regelefterlevnad (förhandsversion) använder den här egenskapen för att gruppera definitioner i kontroller och efterlevnadsdomäner. Den här informationen definieras i matrisegenskapenpolicyDefinitionGroups
. Mer information om gruppering finns i ett policyMetadata-objekt som skapats av Microsoft. Mer information finns i metadataobjekt.
Parametrar för principdefinitionsgrupper
Varje matriselement i policyDefinitionGroups
måste ha båda följande egenskaper:
name
(sträng) [krävs]: Gruppens korta namn. Kontrollen i Regelefterlevnad. Värdet för den här egenskapen används avgroupNames
ipolicyDefinitions
.category
(sträng): Hierarkin som gruppen tillhör. I Regelefterlevnad kontrollerar du kontrollens efterlevnadsdomän .displayName
(sträng): Det egna namnet för gruppen eller kontrollen. Används av portalen.description
(sträng): En beskrivning av vad gruppen eller kontrollen omfattar.additionalMetadataId
(sträng): Platsen för objektet policyMetadata som innehåller ytterligare information om kontroll- och efterlevnadsdomänen.Anteckning
Kunder kan peka på ett befintligt policyMetadata-objekt . Dessa objekt är dock skrivskyddade och skapas endast av Microsoft.
Ett exempel på policyDefinitionGroups
egenskapen från den inbyggda NIST-initiativdefinitionen ser ut så här:
"policyDefinitionGroups": [
{
"name": "NIST_SP_800-53_R4_AC-1",
"additionalMetadataId": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1"
}
]
Metadata-objekt
Inbyggda inbyggda regelefterlevnad som skapats av Microsoft har ytterligare information om varje kontroll. Den här informationen är:
- Visas i Azure Portal på översikten över en kontroll på ett initiativ för regelefterlevnad.
- Tillgängligt via REST API.
Microsoft.PolicyInsights
Se resursprovidern och åtgärdsgruppen policyMetadata. - Tillgängligt via Azure CLI. Se kommandot az policy metadata .
Viktigt
Metadataobjekt för regelefterlevnad är skrivskyddade och kan inte skapas av kunder.
Metadata för en principgrupp har följande information i properties
noden:
metadataId
: Kontroll-ID som gruppering avser.category
(krävs): Den efterlevnadsdomän som kontrollen tillhör.title
(krävs): Det egna namnet på kontroll-ID:t.owner
(krävs): Identifierar vem som har ansvar för kontrollen i Azure: Kund, Microsoft, Delad.description
: Ytterligare information om kontrollen.requirements
: Information om ansvaret för genomförandet av kontrollen.additionalContentUrl
: En länk till mer information om kontrollen. Den här egenskapen är vanligtvis en länk till avsnittet i dokumentationen som omfattar den här kontrollen i efterlevnadsstandarden.
Nedan visas ett exempel på objektet policyMetadata . Det här exemplets metadata tillhör KONTROLLEN NIST SP 800-53 R4 AC-1 .
{
"properties": {
"metadataId": "NIST SP 800-53 R4 AC-1",
"category": "Access Control",
"title": "Access Control Policy and Procedures",
"owner": "Shared",
"description": "**The organization:** \na. Develops, documents, and disseminates to [Assignment: organization-defined personnel or roles]: \n1. An access control policy that addresses purpose, scope, roles, responsibilities, management commitment, coordination among organizational entities, and compliance; and \n2. Procedures to facilitate the implementation of the access control policy and associated access controls; and \n
\nb. Reviews and updates the current: \n1. Access control policy [Assignment: organization-defined frequency]; and \n2. Access control procedures [Assignment: organization-defined frequency].",
"requirements": "**a.** The customer is responsible for developing, documenting, and disseminating access control policies and procedures. The customer access control policies and procedures address access to all customer-deployed resources and customer system access (e.g., access to customer-deployed virtual machines, access to customer-built applications). \n**b.** The customer is responsible for reviewing and updating access control policies and procedures in accordance with FedRAMP requirements.",
"additionalContentUrl": "https://nvd.nist.gov/800-53/Rev4/control/AC-1"
},
"id": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1",
"name": "NIST_SP_800-53_R4_AC-1",
"type": "Microsoft.PolicyInsights/policyMetadata"
}
Nästa steg
- Se definitionsstrukturen
- Granska exempel på 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.