Definitionsstruktur för Azure Policy-initiativ

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 använder 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 standardtaggens värde.

{
    "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')]"
                    }
                }
            }
        ]
    }
}

Inbyggda Azure Policy-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 organisationen 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-portalen principdefinitionen visas.

    Kommentar

    För ett initiativ för regelefterlevnad måste vara regelefterlevnadcategory.

  • preview (booleskt): Sant eller falskt flagga för om principinitiativdefinitionen är förhandsversion.

  • deprecated (booleskt): Sant eller falskt flagga för om principinitiativdefinitionen har markerats som inaktuell.

Kommentar

Azure Policy-tjänsten använder versionegenskaperna , previewoch deprecated för att förmedla ändringsnivån till en inbyggd principdefinition eller ett initiativ och tillstånd. Formatet version är: {Major}.{Minor}.{Patch}. Specifika tillstånd, till exempel inaktuella eller förhandsgranskning, läggs till i version egenskapen eller i en annan egenskap som ett booleskt värde. Mer information om hur inbyggda Azure Policy-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å att individen 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.

Kommentar

När ett initiativ har tilldelats kan parametrar på initiativnivå inte ändras. På grund av detta är rekommendationen att ange 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-portalen 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å godtagbara 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 resursernas platser 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 vilka inkluderade principdefinitioner i matrisen policyDefinitions för initiativdefinitionen. Parameternamnet kan vara detsamma, men om du använder olika namn i initiativen än i principdefinitionerna förenklas 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-portalen. strongType kan vara en resurstyp som stöds eller ett tillåtet värde. Om du vill avgöra 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 för 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 nämnts i Skicka ett parametervärde till en principdefinition är den här egenskapen 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 principdefinition 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 var och en har 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 Policys funktion för 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. I Regelefterlevnad kontrollerar du. 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 på 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.

    Kommentar

    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-portalen i översikten över en kontroll på ett initiativ för regelefterlevnad.
  • Tillgänglig via REST API. Microsoft.PolicyInsights Se resursprovidern och åtgärdsgruppen policyMetadata.
  • Tillgänglig 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 principgruppering har följande information i properties noden:

  • metadataId: Kontroll-ID som gruppering relaterar till.
  • 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 täcker den här kontrollen i efterlevnadsstandarden.

Nedan visas ett exempel på policyMetadata-objektet . 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