Azure Policy undantagsstruktur

Funktionen Azure Policy undantag används för att undanta en resurshierarki eller en enskild resurs från utvärdering av initiativ eller definitioner. Resurser som är undantagna räknas mot övergripande efterlevnad, men som inte kan utvärderas eller ha ett tillfälligt undantag. Mer information finns i Förstå omfånget i Azure Policy. Azure Policy undantag fungerar bara med Resource Manager lägen och fungerar inte med lägen för resursprovidern.

Anteckning

Avsiktligt undantar Azure Policy alla resurser under Microsoft.Resources resursprovidern (RP) från principutvärdering med undantag för prenumerationer och resursgrupper som kan utvärderas.

Du använder JSON (JavaScript Object Notation) för att skapa principundantag. Principundantaget innehåller element för:

Anteckning

Ett principundantag skapas som ett underordnat objekt i resurshierarkin eller den enskilda resurs som beviljats undantaget, så målet ingår inte i undantagsdefinitionen. Om den överordnade resurs som undantaget gäller för tas bort kommer även undantaget att tas bort.

Följande JSON visar till exempel ett principundantag i undantagskategorin för en resurs till en initiativtilldelning med namnet resourceShouldBeCompliantInit. Resursen är endast undantagen från två av principdefinitionerna i initiativet, den anpassade principdefinitionen customOrgPolicy (referens requiredTags) och den inbyggda principdefinitionen Tillåtna platser (ID: e56962a6-4747-49cd-b67b-bf8b01975c4c, referens allowedLocations):

{
    "id": "/subscriptions/{subId}/resourceGroups/ExemptRG/providers/Microsoft.Authorization/policyExemptions/resourceIsNotApplicable",
    "apiVersion": "2020-07-01-preview",
    "name": "resourceIsNotApplicable",
    "type": "Microsoft.Authorization/policyExemptions",
    "properties": {
        "displayName": "This resource is scheduled for deletion",
        "description": "This resources is planned to be deleted by end of quarter and has been granted a waiver to the policy.",
        "metadata": {
            "requestedBy": "Storage team",
            "approvedBy": "IA",
            "approvedOn": "2020-07-26T08:02:32.0000000Z",
            "ticketRef": "4baf214c-8d54-4646-be3f-eb6ec7b9bc4f"
        },
        "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
        "policyDefinitionReferenceIds": [
            "requiredTags",
            "allowedLocations"
        ],
        "exemptionCategory": "waiver",
        "expiresOn": "2020-12-31T23:59:00.0000000Z",
        "assignmentScopeValidation": "Default"
    }
}

Kodfragmentet för det relaterade initiativet med matchningen policyDefinitionReferenceIds som används av principundantaget:

"policyDefinitions": [
    {
        "policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/customOrgPolicy",
        "policyDefinitionReferenceId": "requiredTags",
        "parameters": {
            "reqTags": {
                "value": "[parameters('init_reqTags')]"
            }
        }
    },
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/e56962a6-4747-49cd-b67b-bf8b01975c4c",
        "policyDefinitionReferenceId": "allowedLocations",
        "parameters": {
            "listOfAllowedLocations": {
                "value": "[parameters('init_listOfAllowedLocations')]"
            }
        }
    }
]

Visningsnamn och beskrivning

Du använder displayName och beskrivning för att identifiera principundantaget och ange kontext för dess användning med den specifika resursen. displayName har en maximal längd på 128 tecken och en beskrivning på högst 512 tecken.

Metadata

Med metadataegenskapen kan du skapa alla underordnade egenskaper som behövs för att lagra relevant information. I exemplet ovan innehåller properties requestedBy, approvedBy, approvedOn och ticketRef kundvärden för att ange information om vem som begärde undantaget, vem som godkände det och när, samt en intern spårningsbiljett för begäran. Dessa metadataegenskaper är exempel, men de krävs inte och metadata är inte begränsade till dessa underordnade egenskaper.

Principtilldelnings-ID

Det här fältet måste vara det fullständiga sökvägsnamnet för antingen en principtilldelning eller en initiativtilldelning. policyAssignmentId är en sträng och inte en matris. Den här egenskapen definierar vilken tilldelning som den överordnade resurshierarkin eller den enskilda resursen är undantagen från.

Principdefinitions-ID:n

policyAssignmentId Om är för en initiativtilldelning kan egenskapen policyDefinitionReferenceIds användas för att ange vilka principdefinitioner i initiativet som ämnesresursen har undantag för. Eftersom resursen kan undantas från en eller flera inkluderade principdefinitioner är den här egenskapen en matris. Värdena måste matcha värdena i initiativdefinitionen i fälten policyDefinitions.policyDefinitionReferenceId .

Undantagskategori

Det finns två undantagskategorier. De används för att gruppera undantag:

  • Åtgärdat: Undantaget beviljas eftersom princip avsikten uppfylls via en annan metod.
  • Undantag: Undantaget beviljas eftersom resursens inkompatibilitetsstatus tillfälligt accepteras. En annan anledning att använda den här kategorin är för en resurs- eller resurshierarki som ska undantas från en eller flera definitioner i ett initiativ, men som inte bör undantas från hela initiativet.

Förfallodatum

Om du vill ange när en resurshierarki eller en enskild resurs inte längre är undantagen från en tilldelning anger du egenskapen expiresOn . Den här valfria egenskapen måste ha formatet Universal ISO 8601 DateTime yyyy-MM-ddTHH:mm:ss.fffffffZ.

Anteckning

Principundantag tas inte bort när expiresOn datumet nås. Objektet bevaras för arkivering, men undantaget respekteras inte längre.

Resursväljare (förhandsversion)

Undantag stöder en valfri egenskap resourceSelectors. Den här egenskapen fungerar på samma sätt i undantag som i tilldelningar, vilket möjliggör gradvis distribution eller återställning av ett undantag till vissa delmängder av resurser på ett kontrollerat sätt baserat på resurstyp, resursplats eller om resursen har en plats. Mer information om hur du använder resursväljare finns i tilldelningsstrukturen. Nedan visas ett exempel på undantags-JSON som utnyttjar resursväljare. I det här exemplet undantas endast resurser i westcentralus från principtilldelningen:

{
    "properties": {
        "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "resourceSelectors": [
            {
                "name": "TemporaryMitigation",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "westcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/resourceGroups/demoCluster/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
    "type": "Microsoft.Authorization/policyExemptions",
    "name": "DemoExpensiveVM"
}

Regioner kan läggas till eller tas bort från resourceLocation listan i exemplet ovan. Resursväljare ger större flexibilitet när det gäller var och hur undantag kan skapas och hanteras.

Validering av tilldelningsomfång (förhandsversion)

I de flesta fall verifieras undantagsomfånget för att säkerställa att det ligger inom eller under principtilldelningsomfånget. Den valfria assignmentScopeValidation egenskapen kan tillåta ett undantag för att kringgå den här verifieringen och skapas utanför tilldelningsomfånget. Detta är avsett för situationer där en prenumeration måste flyttas från en hanteringsgrupp (MG) till en annan, men flytten blockeras av en princip på grund av egenskaper för resurser i prenumerationen. I det här scenariot kan ett undantag skapas för prenumerationen i dess nuvarande MG för att undanta dess resurser från en principtilldelning på mål-MG. På så sätt blockeras inte åtgärden när prenumerationen flyttas till målets MG eftersom resurser redan är undantagna från principtilldelningen i fråga. Användningen av den här egenskapen illustreras nedan:

{
    "properties": {
        "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgB}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "assignmentScopeValidation": "DoNotValidate",
    },
    "systemData": { ... },
    "id": "/subscriptions/{subIdA}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
    "type": "Microsoft.Authorization/policyExemptions",
    "name": "DemoExpensiveVM"
}

Tillåtna värden för assignmentScopeValidation är Defaultoch DoNotValidate. Om inget anges sker standardverifieringsprocessen.

Behörigheter som krävs

De Azure RBAC-behörigheter som krävs för att hantera principundantagsobjekt finns i Microsoft.Authorization/policyExemptions åtgärdsgruppen. De inbyggda rollerna Resursprincipdeltagare och Säkerhets Admin både har behörigheterna read och och Policy Insights Data Writer (förhandsversion) har behörigheten read .write

Undantag har extra säkerhetsåtgärder på grund av den påverkan som beviljande av ett undantag medför. Förutom att Microsoft.Authorization/policyExemptions/write åtgärden i resurshierarkin eller den enskilda resursen krävs måste skaparen av ett undantag ha verbet exempt/Action på måltilldelningen.

Nästa steg