Share via


Azure Policy-toewijzingsstructuur

Beleidstoewijzingen worden door Azure Policy gebruikt om te definiëren welke resources worden toegewezen aan welke beleidsregels of initiatieven. De beleidstoewijzing kan de waarden van parameters voor die groep resources tijdens de toewijzing bepalen, zodat beleidsdefinities kunnen worden hergebruikt die voldoen aan dezelfde resource-eigenschappen met verschillende vereisten voor naleving.

Notitie

Zie Bereik begrijpen in Azure Policy voor meer informatie over het bereik van Azure Policy.

U gebruikt JavaScript Object Notation (JSON) om een beleidstoewijzing te maken. De beleidstoewijzing bevat elementen voor:

De volgende JSON toont bijvoorbeeld een beleidstoewijzing in de DoNotEnforce-modus met dynamische parameters:

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "metadata": {
            "assignedBy": "Cloud Center of Excellence"
        },
        "enforcementMode": "DoNotEnforce",
        "notScopes": [],
        "policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
        "nonComplianceMessages": [
            {
                "message": "Resource names must start with 'DeptA' and end with '-LC'."
            }
        ],
        "parameters": {
            "prefix": {
                "value": "DeptA"
            },
            "suffix": {
                "value": "-LC"
            }
        },
        "identity": {
            "type": "SystemAssigned"
        },
        "resourceSelectors": [],
        "overrides": []
    }
}

Alle Voorbeelden van Azure Policy bevinden zich in Azure Policy-voorbeelden.

Schermnaam en -beschrijving

U gebruikt displayName en beschrijving om de beleidstoewijzing te identificeren en context te bieden voor het gebruik ervan met de specifieke set resources. displayName heeft een maximale lengte van 128 tekens en een maximale lengte van 512 tekens.

Metagegevens

Met de optionele metadata eigenschap wordt informatie over de beleidstoewijzing opgeslagen. Klanten kunnen eigenschappen en waarden definiëren die nuttig zijn voor hun organisatie in metadata. Er zijn echter enkele algemene eigenschappen die worden gebruikt door Azure Policy. Elke metadata eigenschap heeft een limiet van 1024 tekens.

Algemene eigenschappen van metagegevens

  • assignedBy (tekenreeks): De beschrijvende naam van de beveiligingsprincipaal waarmee de toewijzing is gemaakt.

  • createdBy (tekenreeks): De GUID van de beveiligingsprincipaal die de toewijzing heeft gemaakt.

  • createdOn (tekenreeks): De Universal ISO 8601 DateTime-indeling van de aanmaaktijd van de opdracht.

  • parameterScopes (object): Een verzameling sleutel-waardeparen waarbij de sleutel overeenkomt met een door StrongType geconfigureerde parameternaam en de waarde definieert het resourcebereik dat in de portal wordt gebruikt om de lijst met beschikbare resources op te geven door overeenkomend met strongType. In de portal wordt deze waarde ingesteld als het bereik anders is dan het toewijzingsbereik. Als deze instelling is ingesteld, wordt met een bewerking van de beleidstoewijzing in Portal automatisch het bereik voor de parameter ingesteld op deze waarde. Het bereik is echter niet vergrendeld voor de waarde en kan worden gewijzigd in een ander bereik.

    Het volgende voorbeeld is parameterScopes voor een strongType-parameter met de naam backupPolicyId waarmee een bereik voor resourceselectie wordt ingesteld wanneer de toewijzing wordt bewerkt in de portal.

    "metadata": {
        "parameterScopes": {
            "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • updatedBy (tekenreeks): de beschrijvende naam van de beveiligingsprincipaal die de toewijzing heeft bijgewerkt, indien van toepassing.

  • updatedOn (tekenreeks): De universal ISO 8601 DateTime-indeling van de tijd van de toewijzingsupdate, indien van toepassing.

  • evidenceStorages (object): Het aanbevolen standaardopslagaccount dat moet worden gebruikt voor het bewaren van bewijs voor attestations aan beleidstoewijzingen met een manual effect. De displayName eigenschap is de naam van het opslagaccount. De evidenceStorageAccountID eigenschap is de resource-id van het opslagaccount. De evidenceBlobContainer eigenschap is de naam van de blobcontainer waarin u het bewijs wilt opslaan.

    {
      "properties": {
        "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}",
        "metadata": {
          "evidenceStorages": [
            {
              "displayName": "Default evidence storage",
              "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}",
              "evidenceBlobContainer": "evidence-container"
            }
          ]
        }
      }
    }
    

Resourceselectors

De optionele resourceSelectors eigenschap faciliteert veilige implementatieprocedures (SDP) door u in staat te stellen beleidstoewijzingen geleidelijk uit te rollen op basis van factoren zoals resourcelocatie, resourcetype of of een resource een locatie heeft. Wanneer resourceselectors worden gebruikt, evalueert Azure Policy alleen resources die van toepassing zijn op de specificaties die zijn gemaakt in de resourceselectors. Resourceselectors kunnen ook worden gebruikt om het bereik van uitzonderingen op dezelfde manier te beperken.

In het volgende voorbeeldscenario wordt de nieuwe beleidstoewijzing alleen geëvalueerd als de locatie van de resource VS - oost of VS - west is.

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Wanneer u klaar bent om het evaluatiebereik voor uw beleid uit te breiden, hoeft u alleen de toewijzing te wijzigen. In het volgende voorbeeld ziet u de beleidstoewijzing met nog twee Azure-regio's die zijn toegevoegd aan de SDPRegions-selector . In dit voorbeeld betekent SDP veilige implementatie:

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus", "centralus", "southcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Resourceselectors hebben de volgende eigenschappen:

  • name: De naam van de resourceselector.

  • selectors: (Optioneel) De eigenschap die wordt gebruikt om te bepalen welke subset van resources die van toepassing zijn op de beleidstoewijzing, moet worden geëvalueerd op naleving.

    • kind: De eigenschap van een selector die beschrijft welke kenmerken de set geëvalueerde resources beperken. Elk type kan slechts eenmaal in één resourcekiezer worden gebruikt. Toegestane waarden zijn:

      • resourceLocation: Deze eigenschap wordt gebruikt om resources te selecteren op basis van hun type. Kan niet worden gebruikt in dezelfde resourceselector als resourceWithoutLocation.

      • resourceType: Deze eigenschap wordt gebruikt om resources te selecteren op basis van hun type.

      • resourceWithoutLocation: Deze eigenschap wordt gebruikt om resources te selecteren op abonnementsniveau die geen locatie hebben. Momenteel wordt alleen ondersteund subscriptionLevelResources. Kan niet worden gebruikt in dezelfde resourceselector als resourceLocation.

    • in: De lijst met toegestane waarden voor de opgegeven kind. Kan niet worden gebruikt met notIn. Kan maximaal 50 waarden bevatten.

    • notIn: De lijst met niet-toegestane waarden voor de opgegeven kind. Kan niet worden gebruikt met in. Kan maximaal 50 waarden bevatten.

Een resourceselector kan meerdere selectors bevatten. Als u van toepassing wilt zijn op een resourcekiezer, moet een resource voldoen aan de vereisten die zijn opgegeven door alle bijbehorende selectors. Bovendien kunnen maximaal 10 resourceselectors worden opgegeven in één toewijzing. Resources binnen het bereik worden geëvalueerd wanneer ze voldoen aan een van deze resourceselectors.

Overschrijvingen

Met de optionele overrides eigenschap kunt u het effect van een beleidsdefinitie wijzigen zonder de onderliggende beleidsdefinitie te wijzigen of een geparameteriseerd effect in de beleidsdefinitie te gebruiken.

De meest voorkomende use case voor onderdrukkingen is beleidsinitiatieven met een groot aantal gekoppelde beleidsdefinities. In deze situatie kan het beheren van meerdere beleidseffecten aanzienlijke administratieve inspanningen verbruiken, met name wanneer het effect van tijd tot tijd moet worden bijgewerkt. Onderdrukkingen kunnen worden gebruikt om tegelijkertijd de effecten van meerdere beleidsdefinities binnen een initiatief bij te werken.

We gaan nu eerst naar een voorbeeld kijken. Stel dat u een beleidsinitiatief hebt met de naam CostManagement dat een aangepaste beleidsdefinitie bevat met policyDefinitionReferenceIdcorpVMSizePolicy en één effect van audit. Stel dat u het CostManagement-initiatief wilt toewijzen, maar nog geen naleving wilt zien die is gerapporteerd voor dit beleid. Het effect 'controle' van dit beleid kan worden vervangen door 'uitgeschakeld' door middel van een onderdrukking van de initiatieftoewijzing, zoals wordt weergegeven in het volgende voorbeeld:

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
        "overrides": [
            {
                "kind": "policyEffect",
                "value": "disabled",
                "selectors": [
                    {
                        "kind": "policyDefinitionReferenceId",
                        "in": [ "corpVMSizePolicy" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "CostManagement"
}

Onderdrukkingen hebben de volgende eigenschappen:

  • kind: De eigenschap die de toewijzing overschrijft. Het ondersteunde type is policyEffect.

  • value: De nieuwe waarde die de bestaande waarde overschrijft. De ondersteunde waarden zijn effecten.

  • selectors: (Optioneel) De eigenschap die wordt gebruikt om te bepalen welk bereik van de beleidstoewijzing moet worden toegepast op de onderdrukking.

    • kind: De eigenschap van een selector die beschrijft welk kenmerk het bereik van de onderdrukking zal beperken. Toegestane waarde kind: policyEffect is:

      • policyDefinitionReferenceId: Hiermee geeft u op welke beleidsdefinities binnen een initiatieftoewijzing de effectoverschrijving moeten overnemen.
    • in: De lijst met toegestane waarden voor de opgegeven kind. Kan niet worden gebruikt met notIn. Kan maximaal 50 waarden bevatten.

    • notIn: De lijst met niet-toegestane waarden voor de opgegeven kind. Kan niet worden gebruikt met in. Kan maximaal 50 waarden bevatten.

Houd er rekening mee dat één onderdrukking kan worden gebruikt om het effect van veel beleidsregels te vervangen door meerdere waarden op te geven in de matrix policyDefinitionReferenceId. Eén onderdrukking kan worden gebruikt voor maximaal 50 policyDefinitionReferenceIds en één beleidstoewijzing kan maximaal 10 onderdrukkingen bevatten, geëvalueerd in de volgorde waarin ze worden opgegeven. Voordat de toewijzing wordt gemaakt, wordt het effect dat in de onderdrukking is gekozen, gevalideerd op basis van de beleidsregel en de lijst met toegestane parameterwaarden (in gevallen waarin het effect wordt geparameteriseerd).

De afdwingingsmodus

De eigenschap enforcementMode biedt klanten de mogelijkheid om het resultaat van een beleid voor bestaande resources te testen zonder het beleidseffect te initiëren of vermeldingen in het Azure-activiteitenlogboek te activeren.

Dit scenario wordt meestal 'What If' genoemd en is afgestemd op veilige implementatieprocedures. enforcementMode verschilt van het uitgeschakelde effect, omdat dat effect voorkomt dat resource-evaluatie helemaal plaatsvindt.

Die eigenschap heeft de volgende waarden:

Modus JSON-waarde Type Handmatig herstel Vermelding in het activiteitenlogboek Beschrijving
Ingeschakeld Standaard tekenreeks Ja Ja Het beleidseffect wordt afgedwongen tijdens maken of bijwerken van resources.
Uitgeschakeld DoNotEnforce tekenreeks Ja Nee Het beleidseffect wordt niet afgedwongen tijdens maken of bijwerken van resources.

Als enforcementMode niet is opgegeven in een beleids- of initiatiefdefinitie, wordt de standaardwaardegebruikt. Hersteltaken kunnen worden gestart voor deployIfNotExists-beleid , zelfs wanneer enforcementMode is ingesteld op DoNotEnforce.

Uitgesloten bereiken

Het bereik van de toewijzing omvat alle onderliggende resourcecontainers en onderliggende resources. Als voor een onderliggende resourcecontainer of onderliggende resource niet de definitie moet worden toegepast, kan elk van deze resources worden uitgesloten van evaluatie door notScopes in te stellen. Deze eigenschap is een matrix om een of meer resourcecontainers of resources uit evaluatie uit te sluiten. notScopes kunnen worden toegevoegd of bijgewerkt na het maken van de eerste toewijzing.

Notitie

Een uitgesloten resource verschilt van een uitgesloten resource. Zie Bereik in Azure Policy begrijpen voor meer informatie.

Id van beleidsdefinitie

Dit veld moet de volledige padnaam van een beleidsdefinitie of initiatiefdefinitie zijn. policyDefinitionId is een tekenreeks en geen matrix. De meest recente inhoud van de toegewezen beleidsdefinitie of het toegewezen initiatief wordt telkens opgehaald wanneer de beleidstoewijzing wordt geëvalueerd. Het wordt aanbevolen om in plaats daarvan een initiatief te gebruiken als er vaak meerdere beleidsregels aan elkaar worden toegewezen.

Niet-nalevingsberichten

Als u een aangepast bericht wilt instellen waarin wordt beschreven waarom een resource niet compatibel is met het beleid of de initiatiefdefinitie, stelt u nonComplianceMessages deze in de toewijzingsdefinitie in. Dit knooppunt is een matrix met message vermeldingen. Dit aangepaste bericht is naast het standaardfoutbericht voor niet-naleving en is optioneel.

Belangrijk

Aangepaste berichten voor niet-naleving worden alleen ondersteund voor definities of initiatieven met Resource Manager-modidefinities .

"nonComplianceMessages": [
    {
        "message": "Default message"
    }
]

Als de toewijzing voor een initiatief is, kunnen verschillende berichten worden geconfigureerd voor elke beleidsdefinitie in het initiatief. De berichten gebruiken de policyDefinitionReferenceId waarde die is geconfigureerd in de initiatiefdefinitie. Zie de eigenschappen van beleidsdefinities voor meer informatie.

"nonComplianceMessages": [
    {
        "message": "Default message"
    },
    {
        "message": "Message for just this policy definition by reference ID",
        "policyDefinitionReferenceId": "10420126870854049575"
    }
]

Parameters

Dit segment van de beleidstoewijzing bevat de waarden voor de parameters die zijn gedefinieerd in de beleidsdefinitie of initiatiefdefinitie. Dit ontwerp maakt het mogelijk om een beleids- of initiatiefdefinitie opnieuw te gebruiken met verschillende resources, maar om te controleren op verschillende bedrijfswaarden of resultaten.

"parameters": {
    "prefix": {
        "value": "DeptA"
    },
    "suffix": {
        "value": "-LC"
    }
}

In dit voorbeeld zijn prefix de parameters die eerder zijn gedefinieerd in de beleidsdefinitie en suffix. Deze specifieke beleidstoewijzing wordt ingesteld prefix op DeptA en suffix - LC. Dezelfde beleidsdefinitie kan opnieuw worden gebruikt met een andere set parameters voor een andere afdeling, waardoor de duplicatie en complexiteit van beleidsdefinities wordt verminderd en tegelijkertijd flexibiliteit wordt geboden.

Identiteit

Voor beleidstoewijzingen waarvoor het effect is ingesteld op deployIfNotExist of wijzigen, moet u een identiteitseigenschap hebben om herstel uit te voeren op niet-compatibele resources. Bij het gebruik van identiteit moet de gebruiker ook een locatie voor de toewijzing opgeven.

Notitie

Eén beleidstoewijzing kan worden gekoppeld aan slechts één door het systeem of de gebruiker toegewezen beheerde identiteit. Deze identiteit kan echter meer dan één rol worden toegewezen, indien nodig.

# System-assigned identity
 "identity": {
    "type": "SystemAssigned"
  }
# User-assigned identity
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/SubscriptionID/resourceGroups/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
    }
  },

Volgende stappen