Delen via


Azure Policy-toewijzingsstructuur

Beleidstoewijzingen definiëren welke resources worden geëvalueerd door een beleidsdefinitie of initiatief. Bovendien kan de beleidstoewijzing de waarden van parameters voor die groep resources tijdens de toewijzing bepalen, waardoor het mogelijk is beleidsdefinities te hergebruiken die betrekking hebben op dezelfde resource-eigenschappen met verschillende vereisten voor naleving.

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

In de volgende JSON ziet u bijvoorbeeld een voorbeeld van een aanvraag voor beleidstoewijzing in de DoNotEnforce-modus met parameters:

{
  "properties": {
    "displayName": "Enforce resource naming rules",
    "description": "Force resource names to begin with DeptA and end with -LC",
    "definitionVersion": "1.*.*",
    "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": []
  }
}

Bereik

Het bereik dat wordt gebruikt voor het maken van toewijzingsresources, is het primaire stuurprogramma voor de toepasselijkheid van resources. Zie Bereik begrijpen in Azure Policy voor meer informatie over het toewijzingsbereik.

Id en versie van beleidsdefinitie (preview)

Dit veld moet de volledige padnaam van een beleidsdefinitie of initiatiefdefinitie zijn. Dit 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. De aanbeveling is dat als meerdere beleidsregels vaak samen worden toegewezen, een initiatief moeten gebruiken.

Voor ingebouwde definities en initiatieven kunt u specifieke definitionVersion definities en initiatieven gebruiken waarop u kunt beoordelen. De versie is standaard ingesteld op de meest recente primaire versie en de automatischste kleine en patchwijzigingen.

  • Als u kleine wijzigingen van de definitie wilt automatisch uitvoeren, zou het versienummer zijn #.*.*. Het jokerteken vertegenwoordigt automatisch bijwerken.
  • Als u wilt vastmaken aan een secundair versiepad, zou de versie-indeling zijn #.#.*.
  • Alle patchwijzigingen moeten automatisch worden doorgevoerd voor beveiligingsdoeleinden. Patchwijzigingen zijn beperkt tot tekstwijzigingen en scenario's voor breukglas.

Schermnaam en -beschrijving

U gebruikt displayName en description 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 description een maximumlengte 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.
  • 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.

Scenariospecifieke metagegevenseigenschappen

  • 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 parameterScopes is 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}"
        }
    }
    
  • 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 bij te werken. 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 selectorsbevatten. Als u van toepassing wilt zijn op een resourcekiezer, moet een resource voldoen aan de vereisten die zijn opgegeven door alle bijbehorende selectors. Verder kan 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.

Een veelvoorkomend gebruiksscenario voor onderdrukkingen op effect 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 policyDefinitionReferenceId corpVMSizePolicy 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 van audit dit beleid kan worden vervangen door disabled een onderdrukking voor 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"
}

Een andere veelvoorkomende use-case voor onderdrukkingen is het implementeren van een nieuwe versie van een definitie. Zie de beleidsveilige implementatie voor aanbevolen stappen voor het veilig bijwerken van een toewijzingsversie.

Onderdrukkingen hebben de volgende eigenschappen:

  • kind: De eigenschap die de toewijzing overschrijft. De ondersteunde soorten zijn policyEffect en policyVersion.

  • value: De nieuwe waarde die de bestaande waarde overschrijft. De kind: policyEffectondersteunde waarden zijn effecten. Voor kind: policyVersionmoet het ondersteunde versienummer groter zijn dan of gelijk zijn aan de definitionVersion opgegeven versie in de toewijzing.

  • 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 welke kenmerken het bereik van de onderdrukking beperken. Toegestane waarden voor kind: policyEffect:

      • policyDefinitionReferenceId: Deze eigenschap geeft aan welke beleidsdefinities binnen een initiatieftoewijzing moeten worden toegepast op de onderdrukking van het effect.

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

      Toegestane waarde voor kind: policyVersion:

      • resourceLocation: Deze eigenschap wordt gebruikt om resources te selecteren op basis van hun type. Kan niet worden gebruikt in dezelfde resourceselector als resourceWithoutLocation.
    • 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.

Eén onderdrukking kan worden gebruikt om het effect van veel beleidsregels te vervangen door meerdere waarden in de policyDefinitionReferenceId matrix op te geven. Eén onderdrukking kan worden gebruikt voor maximaal 50 policyDefinitionReferenceIden éé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 enforcementMode eigenschap biedt klanten de mogelijkheid om het resultaat van een beleid op 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 effect Uitgeschakeld, omdat dat effect voorkomt dat de resource-evaluatie helemaal wordt uitgevoerd.

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 deze niet is opgegeven in een beleids- of initiatiefdefinitie, wordt de standaardwaarde gebruikt. Hersteltaken kunnen worden gestart voor deployIfNotExists-beleid , zelfs wanneer enforcementMode deze 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 de instelling in te stellen notScopes. Deze eigenschap is een matrix om een of meer resourcecontainers of resources uit evaluatie uit te sluiten. notScopes kan 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.

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 die zijn ingesteld op deployIfNotExists of modify, moet u een identiteitseigenschap hebben om herstel uit te voeren op niet-compatibele resources. Wanneer een toewijzing een identiteit gebruikt, 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/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
  }
},

Volgende stappen