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:

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 categoryfö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 versionegenskaperna , previewoch 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 distributionsfunktionen parameters 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 av groupNames i policyDefinitions.

  • 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