Inzicht Azure Policy effecten

Elke beleidsdefinitie in Azure Policy heeft één effect. Dit effect bepaalt wat er gebeurt wanneer de beleidsregel wordt geëvalueerd als overeenkomend. De effecten gedragen zich anders als ze voor een nieuwe resource, een bijgewerkte resource of een bestaande resource zijn.

Deze effecten worden momenteel ondersteund in een beleidsdefinitie:

De volgende effecten zijn afgeschaft:

Belangrijk

In plaats van de effecten EnforceOPAConstraint of EnforceRegoPolicy gebruikt u audit en deny met de resourceprovidermodus Microsoft.Kubernetes.Data . De ingebouwde beleidsdefinities zijn bijgewerkt. Wanneer bestaande beleidstoewijzingen van deze ingebouwde beleidsdefinities worden gewijzigd, moet de effectparameter worden gewijzigd in een waarde in de bijgewerkte lijst allowedValues.

Volgorde van evaluatie

Aanvragen voor het maken of bijwerken van een resource worden eerst Azure Policy geëvalueerd. Azure Policy maakt een lijst met alle toewijzingen die van toepassing zijn op de resource en evalueert vervolgens de resource op elke definitie. Voor een Resource Manager verwerktAzure Policy verschillende effecten voordat de aanvraag wordt ingediend bij de juiste resourceprovider. Met deze volgorde voorkomt u onnodige verwerking door een resourceprovider wanneer een resource niet voldoet aan de ontworpen beheerbesturingselementen van Azure Policy. Met de resourceprovidermodusbeheert de resourceprovider de evaluatie en het resultaat en rapporteert de resultaten terug naar Azure Policy.

  • Uitgeschakeld wordt eerst gecontroleerd om te bepalen of de beleidsregel moet worden geëvalueerd.
  • Vervolgens worden Append en Modify geëvalueerd. Aangezien een van beide de aanvraag kan wijzigen, kan een aangebrachte wijziging verhinderen dat een controle- of weigereffect wordt veroorzaakt. Deze effecten zijn alleen beschikbaar met een Resource Manager modus.
  • Weigeren wordt vervolgens geëvalueerd. Door weigeren vóór controle te evalueren, wordt dubbele logboekregistratie van een ongewenste resource voorkomen.
  • Controle wordt als laatste geëvalueerd.

Nadat de resourceprovider een succescode retourneert voor een Resource Manager-modusaanvraag, evalueren AuditIfNotExists en DeployIfNotExists om te bepalen of er aanvullende nalevingslogboekregistratie of -actie vereist is.

Bovendien beperken aanvragen die alleen gerelateerde velden wijzigen de beleidsevaluatie tot beleidsregels met PATCH voorwaarden die gerelateerde velden tags tags inspecteren.

Toevoegen

Toevoegen wordt gebruikt om extra velden toe te voegen aan de aangevraagde resource tijdens het maken of bijwerken. Een veelvoorkomende voorbeeld is het opgeven van toegestane IP's voor een opslagresource.

Belangrijk

Toevoegen is bedoeld voor gebruik met niet-tageigenschappen. Terwijl Toevoegen tags aan een resource kan toevoegen tijdens een aanvraag voor maken of bijwerken, is het raadzaam om in plaats daarvan het effect Wijzigen voor tags te gebruiken.

Evaluatie van append

De app-waarde evalueert voordat de aanvraag wordt verwerkt door een resourceprovider tijdens het maken of bijwerken van een resource. Als aan de if-voorwaarde van de beleidsregel wordt voldaan, voegt u velden toe aan de resource. Als het toevoegen-effect een waarde in de oorspronkelijke aanvraag zou overschrijven met een andere waarde, fungeert dit als een weigeringseffect en wordt de aanvraag afgewezen. Als u een nieuwe waarde wilt toevoegen aan een bestaande matrix, gebruikt u [*] de versie van de alias.

Wanneer een beleidsdefinitie die gebruik maakt van het append-effect wordt uitgevoerd als onderdeel van een evaluatiecyclus, worden er geen wijzigingen aangebracht in resources die al bestaan. In plaats daarvan wordt elke resource die voldoet aan de if-voorwaarde als niet-compatibel markeert.

Eigenschappen van append

Een append-effect heeft alleen een matrix met details. Dit is vereist. Omdat details een matrix zijn, kan er één veld/waarde-paar of veelvouden nodig zijn. Raadpleeg definitiestructuur voor de lijst met acceptabele velden.

Voorbeelden van append

Voorbeeld 1: Eén veld/waarde-paar met een niet-alias met een [*] matrixwaarde om IP-regels in te stellen voor een opslagaccount. Wanneer de niet-alias een matrix is, wordt de waarde door het effect als de [*] hele matrix aan de waarde toevoegen. Als de matrix al bestaat, treedt er een deny-gebeurtenis op door het conflict.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules",
        "value": [{
            "action": "Allow",
            "value": "134.5.0.0/21"
        }]
    }]
}

Voorbeeld 2: Een veld/waarde-paar met een alias met een matrixwaarde om [*] IP-regels in te stellen voor een opslagaccount. Met behulp van de alias wordt de waarde door het effect aan [*] een mogelijk bestaande matrix toevoegen. Als de matrix nog niet bestaat, wordt deze gemaakt.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*]",
        "value": {
            "value": "40.40.40.40",
            "action": "Allow"
        }
    }]
}

Controleren

Controle wordt gebruikt om een waarschuwingsgebeurtenis in het activiteitenlogboek te maken bij het evalueren van een niet-compatibele resource, maar de aanvraag wordt niet gestopt.

Controle-evaluatie

Controle is het laatste effect dat wordt gecontroleerd door Azure Policy tijdens het maken of bijwerken van een resource. Voor een Resource Manager modus verzendt Azure Policy vervolgens de resource naar de resourceprovider. Wanneer u een aanvraag voor maken of bijwerken voor een resource evalueert, Azure Policy een bewerking aan het activiteitenlogboek toegevoegd en wordt de resource als Microsoft.Authorization/policies/audit/action niet-compatibel markeert. Tijdens een standaardevaluatiecyclus voor naleving wordt alleen de nalevingsstatus van de resource bijgewerkt.

Controle-eigenschappen

Voor een Resource Manager-modus heeft het controle-effect geen aanvullende eigenschappen voor gebruik in de voorwaarde van de beleidsdefinitie.

Voor de resourceprovidermodus Microsoft.Kubernetes.Data van heeft het controle-effect de volgende aanvullende subproperties met details. Gebruik van templateInfo is vereist voor nieuwe of bijgewerkte beleidsdefinities, zoals is constraintTemplate afgeschaft.

  • templateInfo (vereist)
    • Kan niet worden gebruikt met constraintTemplate .
    • sourceType (vereist)
      • Hiermee definieert u het type bron voor de beperkingssjabloon. Toegestane waarden: PublicURL of Base64Encoded.

      • Als PublicURL is gekoppeld aan de eigenschap om url de locatie van de beperkingssjabloon op te geven. De locatie moet openbaar toegankelijk zijn.

        Waarschuwing

        Gebruik geen SAS-URI's of tokens in url of iets anders dat een geheim kan blootstellen.

      • Als Base64Encoded is, gekoppeld aan de eigenschap om de met content base 64 gecodeerde beperkingssjabloon op te geven. Zie Create policy definition from constraint template (Beleidsdefinitie maken op basis van een beperkingssjabloon) om een aangepaste definitie te maken op basis van een bestaande GateKeeper v3-beperkingssjabloon (Open Policy Agent( OPA).

  • beperking (optioneel)
    • Kan niet worden gebruikt met templateInfo .
    • De CRD-implementatie van de sjabloon Beperking. Gebruikt parameters die via waarden worden doorgegeven als {{ .Values.<valuename> }} . In voorbeeld 2 hieronder zijn deze waarden {{ .Values.excludedNamespaces }} en {{ .Values.allowedContainerImagesRegex }} .
  • naamruimten (optioneel)
    • Een matrix van Kubernetes-naamruimten om de beleidsevaluatie tot te beperken.
    • Een lege of ontbrekende waarde zorgt ervoor dat beleidsevaluatie alle naamruimten bevat, met uitzondering van de waarden die zijn gedefinieerd in excludedNamespaces.
  • excludedNamespaces (vereist)
  • labelSelector (vereist)
    • Een object dat de eigenschappen matchLabels (object) en matchExpression (matrix) bevat om op te geven welke Kubernetes-resources moeten worden gebruikt voor beleidsevaluatie die overeenkomen met de opgegeven labels en selectors.
    • Een lege of ontbrekende waarde zorgt ervoor dat beleidsevaluatie alle labels en selectors bevat, met uitzondering van naamruimten die zijn gedefinieerd in excludedNamespaces.
  • apiGroups (vereist bij het gebruik van templateInfo)
    • Een matrix die de API-groepen bevat die overeenkomen. Een lege matrix ( [""] ) is de kern-API-groep en komt ["*"] overeen met alle API-groepen.
  • kinds (vereist bij het gebruik van templateInfo)
    • Een matrix met het soort Kubernetes-object om de evaluatie tot te beperken.
  • waarden (optioneel)
    • Definieert parameters en waarden die moeten worden door geven aan de beperking. Elke waarde moet bestaan in de beperkingssjabloon CRD.
  • constraintTemplate (afgeschaft)
    • Kan niet worden gebruikt met templateInfo .
    • Moet worden vervangen door templateInfo bij het maken of bijwerken van een beleidsdefinitie.
    • De beperkingssjabloon CustomResourceDefinition (CRD) die nieuwe beperkingen definieert. De sjabloon definieert de Rego-logica, het beperkingsschema en de beperkingsparameters die worden doorgegeven via waarden van Azure Policy.

Voorbeeld van controle

Voorbeeld 1: Het controle-effect voor de Resource Manager gebruiken.

"then": {
    "effect": "audit"
}

Voorbeeld 2: Het controle-effect gebruiken voor een resourceprovidermodus van Microsoft.Kubernetes.Data . De aanvullende informatie in details.templateInfo declareer het gebruik van PublicURL en stelt in op de locatie van de sjabloon Beperking die moet worden gebruikt in Kubernetes om de toegestane url containerafbeeldingen te beperken.

"then": {
    "effect": "audit",
    "details": {
        "templateInfo": {
            "sourceType": "PublicURL",
            "url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
        },
        "values": {
            "imageRegex": "[parameters('allowedContainerImagesRegex')]"
        },
        "apiGroups": [""],
        "kinds": ["Pod"]
    }
}

AuditIfNotExists

AuditIfNotExists maakt het mogelijk om resources te controleren die zijn gerelateerd aan de resource die overeenkomt met de if-voorwaarde, maar die niet de eigenschappen hebben die zijn opgegeven in de details van de voorwaarde.

AuditIfNotExists-evaluatie

AuditIfNotExists wordt uitgevoerd nadat een resourceprovider een resourceaanvraag voor maken of bijwerken heeft verwerkt en een statuscode voor succes heeft geretourneerd. De controle vindt plaats als er geen gerelateerde resources zijn of als de resources die zijn gedefinieerd door ExistenceCondition niet worden geëvalueerd als waar. Voor nieuwe en bijgewerkte resources voegt Azure Policy bewerking toe aan het activiteitenlogboek en markeert Microsoft.Authorization/policies/audit/action de resource als niet-compatibel. Wanneer deze wordt geactiveerd, is de resource die voldoet aan de if-voorwaarde de resource die is gemarkeerd als niet-compatibel.

AuditIfNotExists-eigenschappen

De eigenschap details van de effecten AuditIfNotExists heeft alle subproperties die de gerelateerde resources definiëren die moeten overeenkomen.

  • Type (vereist)
    • Hiermee geeft u het type van de gerelateerde resource overeen te komen.
    • Als details.type een resourcetype is onder de if-voorwaarderesource, vraagt het beleid naar resources van dit type binnen het bereik van de geëvalueerde resource. Anders worden beleidsquery's binnen dezelfde resourcegroep als de geëvalueerde resource opgevraagd.
  • Naam (optioneel)
    • Hiermee geeft u de exacte naam van de resource overeen en zorgt ervoor dat het beleid één specifieke resource op te halen in plaats van alle resources van het opgegeven type.
    • Wanneer de voorwaardewaarden voor if.field.type en then.details.type overeenkomen, wordt Naam vereist en moet dat zijn, of [field('name')] voor een [field('fullName')] onderliggende resource. In plaats daarvan moet echter een controle-effect worden overwogen.
  • ResourceGroupName (optioneel)
    • Hiermee kan de overeenkomende resource afkomstig zijn uit een andere resourcegroep.
    • Is niet van toepassing als type een resource is die zich onder de resource if-voorwaarde zou houden.
    • De standaardwaarde is de resourcegroep van de if-voorwaarde.
  • ExistenceScope (optioneel)
    • Toegestane waarden zijn Subscription en ResourceGroup.
    • Hiermee stelt u het bereik in van waar de gerelateerde resource moet worden opgehaald om vandaan te komen.
    • Is niet van toepassing als type een resource is die zich onder de resource if-voorwaarde zou houden.
    • Voor ResourceGroup wordt beperkt tot de resourcegroep if condition of de resourcegroep die is opgegeven in ResourceGroupName.
    • Bij Abonnement wordt het hele abonnement voor de gerelateerde resource opgevraagd. Toewijzingsbereik moet worden ingesteld op abonnement of hoger voor een juiste evaluatie.
    • De standaardwaarde is ResourceGroup.
  • EvaluationDelay (optioneel)
    • Hiermee geeft u op wanneer het bestaan van de gerelateerde resources moet worden geëvalueerd. De vertraging wordt alleen gebruikt voor evaluaties die het resultaat zijn van een resourceaanvraag voor maken of bijwerken.
    • Toegestane waarden AfterProvisioning zijn , , of een ISO AfterProvisioningSuccess AfterProvisioningFailure 8601-duur tussen 0 en 360 minuten.
    • Met de waarden voor AfterProvisioning wordt het inrichtingsresultaat gecontroleerd van de resource die is geëvalueerd in de IF-voorwaarde van de beleidsregel. AfterProvisioning wordt uitgevoerd nadat het inrichten is voltooid, ongeacht het resultaat. Als het inrichten langer duurt dan 6 uur, wordt het beschouwd als een fout bij het bepalen van de evaluatievertraging na het inrichten.
    • De standaardwaarde is PT10M (10 minuten).
    • Het opgeven van een lange evaluatievertraging kan ertoe leiden dat de vastgelegde nalevingstoestand van de resource pas wordt bijgewerkt wanneer de volgende evaluatie wordt trigger.
  • ExistenceCondition (optioneel)
    • Als dit niet wordt opgegeven, voldoet een gerelateerde resource van het type aan het effect en wordt de controle niet uitgevoerd.
    • Gebruikt dezelfde taal als de beleidsregel voor de if-voorwaarde, maar wordt afzonderlijk geëvalueerd voor elke gerelateerde resource.
    • Als een overeenkomende gerelateerde resource wordt geëvalueerd als waar, wordt aan het effect voldaan en wordt de controle niet uitgevoerd.
    • Kan [field()] gebruiken om de equivalentie met waarden in de if-voorwaarde te controleren.
    • Kan bijvoorbeeld worden gebruikt om te valideren dat de bovenliggende resource (in de if-voorwaarde) zich op dezelfde resourcelocatie bevindt als de overeenkomende gerelateerde resource.

Voorbeeld van AuditIfNotExists

Voorbeeld: evalueert Virtual Machines om te bepalen of de Antimalware-extensie bestaat en controleert wanneer deze ontbreekt.

{
    "if": {
        "field": "type",
        "equals": "Microsoft.Compute/virtualMachines"
    },
    "then": {
        "effect": "auditIfNotExists",
        "details": {
            "type": "Microsoft.Compute/virtualMachines/extensions",
            "existenceCondition": {
                "allOf": [{
                        "field": "Microsoft.Compute/virtualMachines/extensions/publisher",
                        "equals": "Microsoft.Azure.Security"
                    },
                    {
                        "field": "Microsoft.Compute/virtualMachines/extensions/type",
                        "equals": "IaaSAntimalware"
                    }
                ]
            }
        }
    }
}

Weigeren

Weigeren wordt gebruikt om een resourceaanvraag te voorkomen die niet voldoet aan gedefinieerde standaarden via een beleidsdefinitie en mislukt de aanvraag.

Evaluatie weigeren

Bij het maken of bijwerken van een overeenkomende resource in Resource Manager modus, voorkomt weigeren dat de aanvraag wordt verzonden naar de resourceprovider. De aanvraag wordt geretourneerd als een 403 (Forbidden) . In de portal kan Verboden worden gezien als een status voor de implementatie die is voorkomen door de beleidstoewijzing. Voor een resourceprovidermodus beheert de resourceprovider de evaluatie van de resource.

Tijdens de evaluatie van bestaande resources worden resources die overeenkomen met een beleidsdefinitie voor weigeren gemarkeerd als niet-compatibel.

Eigenschappen weigeren

Voor een Resource Manager modus heeft het weigereffect geen aanvullende eigenschappen voor gebruik in de voorwaarde die toen werd gebruikt voor de beleidsdefinitie.

Voor de resourceprovidermodus van Microsoft.Kubernetes.Data heeft het weigereffect de volgende aanvullende subproperties met details. Gebruik van templateInfo is vereist voor nieuwe of bijgewerkte beleidsdefinities zoals is constraintTemplate afgeschaft.

  • templateInfo (vereist)
    • Kan niet worden gebruikt met constraintTemplate .
    • sourceType (vereist)
      • Hiermee definieert u het type bron voor de beperkingssjabloon. Toegestane waarden: PublicURL of Base64Encoded.

      • Als PublicURL is gekoppeld aan de eigenschap om url de locatie van de beperkingssjabloon op te geven. De locatie moet openbaar toegankelijk zijn.

        Waarschuwing

        Gebruik geen SAS-URI's of tokens in url of iets anders dat een geheim kan blootstellen.

      • Als Base64Encoded is, gekoppeld aan de eigenschap om de met Base 64 gecodeerde beperkingssjabloon content op te geven. Zie Create policy definition from constraint template (Beleidsdefinitie maken op basis van een beperkingssjabloon) om een aangepaste definitie te maken op basis van een bestaande OpA-beperkingssjabloon (Open Policy Agent) GateKeeper v3.

  • beperking (optioneel)
    • Kan niet worden gebruikt met templateInfo .
    • De CRD-implementatie van de sjabloon Beperking. Gebruikt parameters die worden doorgegeven via waarden als {{ .Values.<valuename> }} . In voorbeeld 2 hieronder zijn deze waarden {{ .Values.excludedNamespaces }} en {{ .Values.allowedContainerImagesRegex }} .
  • naamruimten (optioneel)
    • Een matrix van Kubernetes-naamruimten om de beleidsevaluatie tot te beperken.
    • Een lege of ontbrekende waarde zorgt ervoor dat de beleidsevaluatie alle naamruimten bevat, met uitzondering van de waarden die zijn gedefinieerd in excludedNamespaces.
  • excludedNamespaces (vereist)
  • labelSelector (vereist)
    • Een object dat de eigenschappen matchLabels (object) en matchExpression (matrix) bevat om op te geven welke Kubernetes-resources moeten worden gebruikt voor beleidsevaluatie die overeenkomen met de opgegeven labels en selectors.
    • Een lege of ontbrekende waarde zorgt ervoor dat de beleidsevaluatie alle labels en selectors bevat, met uitzondering van naamruimten die zijn gedefinieerd in excludedNamespaces.
  • apiGroups (vereist bij het gebruik van templateInfo)
    • Een matrix die de API-groepen bevat die moeten overeenkomen. Een lege matrix ( [""] ) is de kern-API-groep en komt ["*"] overeen met alle API-groepen.
  • soorten (vereist bij het gebruik van templateInfo)
    • Een matrix die het soort Kubernetes-object bevat om de evaluatie tot te beperken.
  • waarden (optioneel)
    • Definieert parameters en waarden die moeten worden door geven aan de Beperking. Elke waarde moet aanwezig zijn in de beperking sjabloon CRD.
  • constraintTemplate (afgeschaft)
    • Kan niet worden gebruikt met templateInfo .
    • Moet worden vervangen door templateInfo bij het maken of bijwerken van een beleidsdefinitie.
    • De beperkingssjabloon CustomResourceDefinition (CRD) die nieuwe beperkingen definieert. De sjabloon definieert de Rego-logica, het beperkingsschema en de beperkingsparameters die worden doorgegeven via waarden van Azure Policy. Het is raadzaam om de nieuwe te gebruiken om templateInfo te constraintTemplate vervangen.

Voorbeeld weigeren

Voorbeeld 1: Het weigeren-effect gebruiken voor Resource Manager modi.

"then": {
    "effect": "deny"
}

Voorbeeld 2: Het weigeren-effect gebruiken voor de modus Resourceprovider van Microsoft.Kubernetes.Data . De aanvullende informatie in details.templateInfo declareer het gebruik van PublicURL en stelt in op de locatie van de sjabloon Beperking die moet worden gebruikt in Kubernetes om de toegestane url containerafbeeldingen te beperken.

"then": {
    "effect": "deny",
    "details": {
        "templateInfo": {
            "sourceType": "PublicURL",
            "url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
        },
        "values": {
            "imageRegex": "[parameters('allowedContainerImagesRegex')]"
        },
        "apiGroups": [""],
        "kinds": ["Pod"]
    }
}

DeployIfNotExists

Net als bij AuditIfNotExists voert een DeployIfNotExists-beleidsdefinitie een sjabloonimplementatie uit wanneer aan de voorwaarde wordt voldaan.

Notitie

Geneste sjablonen worden ondersteund met deployIfNotExists, maar gekoppelde sjablonen worden momenteel niet ondersteund.

DeployIfNotExists-evaluatie

DeployIfNotExists wordt uitgevoerd na een configureerbare vertraging wanneer een resourceprovider een abonnements- of resourceaanvraag voor maken of bijwerken verwerkt en een statuscode voor succes heeft geretourneerd. Een sjabloonimplementatie vindt plaats als er geen gerelateerde resources zijn of als de resources die zijn gedefinieerd door ExistenceCondition niet worden geëvalueerd als waar. De duur van de implementatie is afhankelijk van de complexiteit van de resources die zijn opgenomen in de sjabloon.

Tijdens een evaluatiecyclus worden beleidsdefinities met een DeployIfNotExists-effect die overeenkomen met resources gemarkeerd als niet-compatibel, maar wordt er geen actie ondernomen op die resource. Bestaande niet-compatibele resources kunnen worden herstellen met een hersteltaak.

DeployIfNotExists-eigenschappen

De eigenschap details van het effect DeployIfNotExists bevat alle subproperties die de gerelateerde resources definiëren die moeten overeenkomen en de sjabloonimplementatie die moet worden uitgevoerd.

  • Type (vereist)

    • Hiermee geeft u het type van de gerelateerde resource overeen te komen.
    • Begint met het ophalen van een resource onder de if-voorwaarderesource en vervolgens query's binnen dezelfde resourcegroep als de if-voorwaarderesource.
  • Naam (optioneel)

    • Hiermee geeft u de exacte naam van de resource overeen en zorgt ervoor dat het beleid één specifieke resource op te halen in plaats van alle resources van het opgegeven type.
    • Wanneer de voorwaardewaarden voor if.field.type en then.details.type overeenkomen, wordt Naam vereist en moet dat zijn, of [field('name')] voor een [field('fullName')] onderliggende resource.
  • ResourceGroupName (optioneel)

    • Hiermee kan de overeenkomende resource afkomstig zijn uit een andere resourcegroep.
    • Is niet van toepassing als type een resource is die zich onder de resource if-voorwaarde zou houden.
    • De standaardwaarde is de resourcegroep if condition van de resource.
    • Als een sjabloonimplementatie wordt uitgevoerd, wordt deze geïmplementeerd in de resourcegroep van deze waarde.
  • ExistenceScope (optioneel)

    • Toegestane waarden zijn Subscription en ResourceGroup.
    • Hiermee stelt u het bereik in van waar de gerelateerde resource moet worden opgehaald om vandaan te komen.
    • Is niet van toepassing als type een resource is die zich onder de resource if-voorwaarde zou houden.
    • Voor ResourceGroup wordt beperkt tot de resourcegroep if condition of de resourcegroep die is opgegeven in ResourceGroupName.
    • Voor Abonnement wordt het hele abonnement voor de gerelateerde resource opgevraagd. Toewijzingsbereik moet worden ingesteld op abonnement of hoger voor een juiste evaluatie.
    • De standaardwaarde is ResourceGroup.
  • EvaluationDelay (optioneel)

    • Hiermee geeft u op wanneer het bestaan van de gerelateerde resources moet worden geëvalueerd. De vertraging wordt alleen gebruikt voor evaluaties die het resultaat zijn van een resourceaanvraag voor maken of bijwerken.
    • Toegestane waarden AfterProvisioning zijn , , of een ISO AfterProvisioningSuccess AfterProvisioningFailure 8601-duur tussen 0 en 360 minuten.
    • Met de waarden voor AfterProvisioning wordt het inrichtingsresultaat gecontroleerd van de resource die is geëvalueerd in de IF-voorwaarde van de beleidsregel. AfterProvisioning wordt uitgevoerd nadat het inrichten is voltooid, ongeacht het resultaat. Als het inrichten langer duurt dan 6 uur, wordt het beschouwd als een fout bij het bepalen van de evaluatievertraging na het inrichten.
    • De standaardwaarde is PT10M (10 minuten).
    • Het opgeven van een lange evaluatievertraging kan ertoe leiden dat de vastgelegde nalevingstoestand van de resource pas wordt bijgewerkt wanneer de volgende evaluatie wordt trigger.
  • ExistenceCondition (optioneel)

    • Als dit niet wordt opgegeven, voldoet een gerelateerde resource van het type aan het effect en wordt de implementatie niet getypt.
    • Gebruikt dezelfde taal als de beleidsregel voor de if-voorwaarde, maar wordt afzonderlijk geëvalueerd voor elke gerelateerde resource.
    • Als een overeenkomende gerelateerde resource wordt geëvalueerd als waar, wordt aan het effect voldaan en wordt de implementatie niet activeerd.
    • Kan [field()] gebruiken om de equivalentie met waarden in de if-voorwaarde te controleren.
    • Kan bijvoorbeeld worden gebruikt om te valideren dat de bovenliggende resource (in de if-voorwaarde) zich op dezelfde resourcelocatie bevindt als de overeenkomende gerelateerde resource.
  • roleDefinitionIds (vereist)

  • DeploymentScope (optioneel)

    • Toegestane waarden zijn Subscription en ResourceGroup.
    • Hiermee stelt u het type implementatie moet worden geactiveerd. Abonnement geeft een implementatie op abonnementsniveau aan, ResourceGroup geeft een implementatie naar een resourcegroep aan.
    • Een locatie-eigenschap moet worden opgegeven in de implementatie bij het gebruik van implementaties op abonnementsniveau.
    • De standaardwaarde is ResourceGroup.
  • Implementatie (vereist)

    • Deze eigenschap moet de volledige sjabloonimplementatie bevatten, aangezien deze wordt doorgegeven aan de Microsoft.Resources/deployments PUT-API. Zie implementaties voor meer informatie REST API.
    • Genest in de sjabloon moet unieke namen gebruiken om te voorkomen dat Microsoft.Resources/deployments er tussen meerdere beleidsevaluaties wordt geseed. De naam van de bovenliggende implementatie kan worden gebruikt als onderdeel van de geneste implementatienaam via [concat('NestedDeploymentName-', uniqueString(deployment().name))] .

    Notitie

    Alle functies in de eigenschap Implementatie worden geëvalueerd als onderdelen van de sjabloon, niet als het beleid. De uitzondering hierop is de eigenschap parameters die waarden van het beleid door geeft aan de sjabloon. De waarde in deze sectie onder de naam van een sjabloonparameter wordt gebruikt om deze waarde door te geven (zie fullDbName in het deployIfNotExists-voorbeeld).

Voorbeeld van DeployIfNotExists

Voorbeeld: evalueert SQL Server om te bepalen of transparentDataEncryption is ingeschakeld. Zo niet, dan wordt een implementatie uitgevoerd die moet worden ingeschakeld.

"if": {
    "field": "type",
    "equals": "Microsoft.Sql/servers/databases"
},
"then": {
    "effect": "DeployIfNotExists",
    "details": {
        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
        "name": "current",
        "evaluationDelay": "AfterProvisioning",
        "roleDefinitionIds": [
            "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
            "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
        ],
        "existenceCondition": {
            "field": "Microsoft.Sql/transparentDataEncryption.status",
            "equals": "Enabled"
        },
        "deployment": {
            "properties": {
                "mode": "incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {
                        "fullDbName": {
                            "type": "string"
                        }
                    },
                    "resources": [{
                        "name": "[concat(parameters('fullDbName'), '/current')]",
                        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
                        "apiVersion": "2014-04-01",
                        "properties": {
                            "status": "Enabled"
                        }
                    }]
                },
                "parameters": {
                    "fullDbName": {
                        "value": "[field('fullName')]"
                    }
                }
            }
        }
    }
}

Uitgeschakeld

Dit effect is handig voor het testen van situaties of wanneer de beleidsdefinitie het effect heeft geparameteriseerd. Deze flexibiliteit maakt het mogelijk om één toewijzing uit te schakelen in plaats van alle toewijzingen van dat beleid uit te schakelen.

Een alternatief voor het effect Uitgeschakeld is enforcementMode, dat is ingesteld op de beleidstoewijzing. Wanneer enforcementMode is uitgeschakeld, worden resources nog steeds geëvalueerd. Logboekregistratie, zoals activiteitenlogboeken, en het beleidseffect worden niet uitgevoerd. Zie Beleidstoewijzing - afdwingingsmodus voor meer informatie.

EnforceOPAConstraint

Dit effect wordt gebruikt met de beleidsdefinitiemodus Microsoft.Kubernetes.Data . Het wordt gebruikt om Gatekeeper v3-toegangsbeheerregels die zijn gedefinieerd met OPA Constraint Framework door te geven aan Open Policy Agent (OPA) aan Kubernetes-clusters in Azure.

Belangrijk

De beperkte preview-beleidsdefinities met het effect EnforceOPAConstraint en de gerelateerde categorie Kubernetes Service zijn afgeschaft. Gebruik in plaats daarvan de effectencontrole en weigeren met de resourceprovidermodus Microsoft.Kubernetes.Data .

EnforceOPAConstraint-evaluatie

De toegangscontroller Open Policy Agent evalueert elke nieuwe aanvraag op het cluster in realtime. Om de 15 minuten wordt een volledige scan van het cluster uitgevoerd en worden de resultaten gerapporteerd aan Azure Policy.

Eigenschappen van EnforceOPAConstraint

De eigenschap details van het effect EnforceOPAConstraint heeft de subproperties die de toegangsbeheerregel gatekeeper v3 beschrijven.

  • constraintTemplate (vereist)
    • De beperkingssjabloon CustomResourceDefinition (CRD) die nieuwe beperkingen definieert. De sjabloon definieert de Rego-logica, het beperkingsschema en de beperkingsparameters die worden doorgegeven via waarden van Azure Policy.
  • beperking (vereist)
    • De CRD-implementatie van de sjabloon Beperking. Gebruikt parameters die worden doorgegeven via waarden als {{ .Values.<valuename> }} . In het volgende voorbeeld zijn deze waarden {{ .Values.cpuLimit }} en {{ .Values.memoryLimit }} .
  • waarden (optioneel)
    • Definieert parameters en waarden die moeten worden door geven aan de Beperking. Elke waarde moet aanwezig zijn in de beperking sjabloon CRD.

Voorbeeld van EnforceOPAConstraint

Voorbeeld: Toegangsbeheerregel gatekeeper v3 om cpu- en geheugenresourcelimieten voor containers in Kubernetes in te stellen.

"if": {
    "allOf": [
        {
            "field": "type",
            "in": [
                "Microsoft.ContainerService/managedClusters",
                "AKS Engine"
            ]
        },
        {
            "field": "location",
            "equals": "westus2"
        }
    ]
},
"then": {
    "effect": "enforceOPAConstraint",
    "details": {
        "constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/template.yaml",
        "constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/constraint.yaml",
        "values": {
            "cpuLimit": "[parameters('cpuLimit')]",
            "memoryLimit": "[parameters('memoryLimit')]"
        }
    }
}

EnforceRegoPolicy

Dit effect wordt gebruikt met de beleidsdefinitiemodus Microsoft.ContainerService.Data . Deze wordt gebruikt om Gatekeeper v2-toegangsbeheerregels die zijn gedefinieerd met Rego door te geven aan Open Policy Agent (OPA) op Azure Kubernetes Service.

Belangrijk

De beperkte preview-beleidsdefinities met het effect EnforceRegoPolicy en de gerelateerde categorie Kubernetes Service zijn afgeschaft. Gebruik in plaats daarvan de effectencontrole en weigeren met de resourceprovidermodus Microsoft.Kubernetes.Data .

EnforceRegoPolicy-evaluatie

De toegangscontroller Open Policy Agent evalueert elke nieuwe aanvraag op het cluster in realtime. Om de 15 minuten wordt een volledige scan van het cluster uitgevoerd en worden de resultaten gerapporteerd aan Azure Policy.

EnforceRegoPolicy-eigenschappen

De eigenschap details van het effect EnforceRegoPolicy heeft de subeigenschapen die de toegangsbeheerregel Gatekeeper v2 beschrijven.

  • policyId (vereist)
    • Een unieke naam die als parameter wordt doorgegeven aan de Rego-regel voor toegangsbeheer.
  • beleid (vereist)
    • Hiermee geeft u de URI van de Rego-toegangsbeheerregel op.
  • policyParameters (optioneel)
    • Definieert parameters en waarden die moeten worden doorgeven aan het beleid voor opnieuw instellen.

Voorbeeld van EnforceRegoPolicy

Voorbeeld: Gatekeeper v2-toegangsbeheerregel om alleen de opgegeven containerafbeeldingen in AKS toe te staan.

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.ContainerService/managedClusters"
        },
        {
            "field": "location",
            "equals": "westus2"
        }
    ]
},
"then": {
    "effect": "EnforceRegoPolicy",
    "details": {
        "policyId": "ContainerAllowedImages",
        "policy": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/KubernetesService/container-allowed-images/limited-preview/gatekeeperpolicy.rego",
        "policyParameters": {
            "allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]"
        }
    }
}

Wijzigen

Wijzigen wordt gebruikt om eigenschappen of tags aan een abonnement of resource toe te voegen, bij te werken of te verwijderen tijdens het maken of bijwerken. Een veelvoorkomende voorbeeld is het bijwerken van tags voor resources zoals costCenter. Bestaande niet-compatibele resources kunnen worden herstellen met een hersteltaak. Eén regel wijzigen kan een groot aantal bewerkingen hebben.

De volgende bewerkingen worden ondersteund door Wijzigen:

  • Resourcetags toevoegen, vervangen of verwijderen. Voor tags moet het beleid Wijzigen zijn mode ingesteld op Geïndexeerd, tenzij de doelresource een resourcegroep is.
  • De waarde van het type beheerde identiteit () van virtuele machines en identity.type virtuele-machineschaalsets toevoegen of vervangen.
  • Voeg de waarden van bepaalde aliassen toe of vervang deze.
    • Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' } gebruiken in Azure PowerShell 4.6.0 of hoger om een lijst op te halen met aliassen die kunnen worden gebruikt met Modify.

Belangrijk

Als u tags beheert, is het raadzaam om Wijzigen te gebruiken in plaats van Toevoegen, omdat Wijzigen aanvullende bewerkingstypen en de mogelijkheid biedt om bestaande resources te herstellen. Toevoegen wordt echter aanbevolen als u geen beheerde identiteit kunt maken of als Modify de alias voor de resource-eigenschap nog niet ondersteunt.

Evaluatie wijzigen

Wijzigen evalueert voordat de aanvraag door een resourceprovider wordt verwerkt tijdens het maken of bijwerken van een resource. De bewerkingen Modify worden toegepast op de aanvraaginhoud wanneer aan de if-voorwaarde van de beleidsregel wordt voldaan. Elke modify-bewerking kan een voorwaarde opgeven die bepaalt wanneer deze wordt toegepast. Bewerkingen met voorwaarden die worden geëvalueerd als onwaar worden overgeslagen.

Wanneer een alias is opgegeven, worden de volgende extra controles uitgevoerd om ervoor te zorgen dat de bewerking Modify de inhoud van de aanvraag niet zo wijzigt dat de resourceprovider deze weigert:

  • De eigenschap die de alias toekent aan is gemarkeerd als 'Wijzigbaar' in de API-versie van de aanvraag.
  • Het tokentype in de bewerking Modify komt overeen met het verwachte tokentype voor de eigenschap in de API-versie van de aanvraag.

Als een van deze controles mislukt, valt de beleidsevaluatie terug op het opgegeven conflictEffect.

Belangrijk

Het is raadzaam om definities met aliassen te wijzigen met behulp van het effect controleconflict om te voorkomen dat aanvragen mislukken met behulp van API-versies waarbij de eigenschap 'Wijzigbaar' niet is. Als dezelfde alias zich anders gedraagt tussen API-versies, kunnen voorwaardelijke wijzigingsbewerkingen worden gebruikt om de wijzigingsbewerking te bepalen die wordt gebruikt voor elke API-versie.

Wanneer een beleidsdefinitie die het effect Wijzigen gebruikt, wordt uitgevoerd als onderdeel van een evaluatiecyclus, worden er geen wijzigingen aangebracht in resources die al bestaan. In plaats daarvan markeert elke resource die voldoet aan de if-voorwaarde als niet-compatibel.

Eigenschappen wijzigen

De eigenschap details van het effect Wijzigen heeft alle subproperties die de machtigingen definiëren die nodig zijn voor herstel en de bewerkingen die worden gebruikt om tagwaarden toe te voegen, bij te werken of te verwijderen.

  • roleDefinitionIds (vereist)
    • Deze eigenschap moet een matrix met tekenreeksen bevatten die overeenkomen met de rol-id van op rollen gebaseerd toegangsbeheer die toegankelijk zijn voor het abonnement. Zie Herstel - beleidsdefinitie configureren voor meer informatie.
    • De gedefinieerde rol moet alle bewerkingen bevatten die aan de rol Inzender worden verleend.
  • conflictEffect (optioneel)
    • Bepaalt welke beleidsdefinitie 'wint' als meer dan één beleidsdefinitie dezelfde eigenschap wijzigt of wanneer de bewerking Modify niet werkt op de opgegeven alias.
      • Voor nieuwe of bijgewerkte resources heeft de beleidsdefinitie met weigeren voorrang. Beleidsdefinities met audit slaan alle bewerkingen over. Als meer dan één beleidsdefinitie heeft geweigerd, wordt de aanvraag geweigerd als een conflict. Als alle beleidsdefinities controle hebben, worden geen van de bewerkingen van de conflicterende beleidsdefinities verwerkt.
      • Als voor bestaande resources meer dan één beleidsdefinitie weigert, is de nalevingsstatus Conflict. Als een of minder beleidsdefinities weigeren hebben, retourneert elke toewijzing de nalevingsstatus Niet-compatibel.
    • Beschikbare waarden: controleren, weigeren, uitgeschakeld.
    • De standaardwaarde is weigeren.
  • bewerkingen (vereist)
    • Een matrix van alle tagbewerkingen die moeten worden uitgevoerd op overeenkomende resources.
    • Eigenschappen:
      • bewerking (vereist)
        • Hiermee definieert u welke actie moet worden ondernomen voor een overeenkomende resource. Opties zijn: addOrReplace, Add, Remove. Toevoegen gedraagt zich vergelijkbaar met het effect Toevoegen.
      • veld (vereist)
        • De tag die moet worden toevoegen, vervangen of verwijderen. Tagnamen moeten voldoen aan dezelfde naamconventie voor andere velden.
      • waarde (optioneel)
        • De waarde waar de tag op moet worden ingesteld.
        • Deze eigenschap is vereist als de bewerking addOrReplace of Add is.
      • voorwaarde (optioneel)
        • Een tekenreeks met Azure Policy taalexpressie met beleidsfuncties die als waar of onwaar worden geëvalueerd.
        • Biedt geen ondersteuning voor de volgende beleidsfuncties: field() resourceGroup() , , subscription() .

Bewerkingen wijzigen

De matrix met eigenschappen van bewerkingen maakt het mogelijk om verschillende tags op verschillende manieren te wijzigen van één beleidsdefinitie. Elke bewerking bestaat uit de eigenschappen bewerking, veld en waarde. De bewerking bepaalt wat de hersteltaak met de tags doet, het veld bepaalt welke tag wordt gewijzigd en de waarde definieert de nieuwe instelling voor die tag. In het volgende voorbeeld worden de volgende tagwijzigingen aangebracht:

  • Hiermee stelt environment u de tag in op Testen, zelfs als deze al bestaat met een andere waarde.
  • Hiermee verwijdert u de tag TempResource .
  • Hiermee stelt Dept u de tag in op de beleidsparameter DeptName die is geconfigureerd voor de beleidstoewijzing.
"details": {
    ...
    "operations": [
        {
            "operation": "addOrReplace",
            "field": "tags['environment']",
            "value": "Test"
        },
        {
            "operation": "Remove",
            "field": "tags['TempResource']",
        },
        {
            "operation": "addOrReplace",
            "field": "tags['Dept']",
            "value": "[parameters('DeptName')]"
        }
    ]
}

De eigenschap bewerking heeft de volgende opties:

Bewerking Beschrijving
addOrReplace Voegt de gedefinieerde eigenschap of tag en waarde toe aan de resource, zelfs als de eigenschap of tag al met een andere waarde bestaat.
Toevoegen Voegt de gedefinieerde eigenschap of tag en waarde toe aan de resource.
Verwijderen Hiermee verwijdert u de gedefinieerde eigenschap of tag uit de resource.

Voorbeelden wijzigen

Voorbeeld 1: voeg de environment tag toe en vervang bestaande tags door environment 'Test':

"then": {
    "effect": "modify",
    "details": {
        "roleDefinitionIds": [
            "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
        ],
        "operations": [
            {
                "operation": "addOrReplace",
                "field": "tags['environment']",
                "value": "Test"
            }
        ]
    }
}

Voorbeeld 2: verwijder de env tag en voeg de tag toe of vervang bestaande tags door een environment environment geparameteriseerde waarde:

"then": {
    "effect": "modify",
    "details": {
        "roleDefinitionIds": [
            "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
        ],
        "conflictEffect": "deny",
        "operations": [
            {
                "operation": "Remove",
                "field": "tags['env']"
            },
            {
                "operation": "addOrReplace",
                "field": "tags['environment']",
                "value": "[parameters('tagValue')]"
            }
        ]
    }
}

Voorbeeld 3: Zorg ervoor dat een opslagaccount geen openbare blobtoegang toestaat. De bewerking Wijzigen wordt alleen toegepast bij het evalueren van aanvragen met API-versie hoger of gelijk aan '2019-04-01':

"then": {
    "effect": "modify",
    "details": {
        "roleDefinitionIds": [
            "/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
        ],
        "conflictEffect": "audit",
        "operations": [
            {
                "condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
                "operation": "addOrReplace",
                "field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
                "value": false
            }
        ]
    }
}

Beleidsdefinities voor lagen

Een resource kan worden beïnvloed door verschillende toewijzingen. Deze toewijzingen kunnen zich in hetzelfde bereik of op verschillende scopes. Voor elk van deze toewijzingen is waarschijnlijk ook een ander effect gedefinieerd. De voorwaarde en het effect voor elk beleid worden onafhankelijk geëvalueerd. Bijvoorbeeld:

  • Beleid 1
    • Beperkt de resourcelocatie tot 'westus'
    • Toegewezen aan abonnement A
    • Effect weigeren
  • Beleid 2
    • Beperkt resourcelocatie tot 'eastus'
    • Toegewezen aan resourcegroep B in abonnement A
    • Controle-effect

Deze installatie zou resulteren in het volgende resultaat:

  • Alle resources in resourcegroep B in 'eastus' voldoen aan beleid 2 en voldoen niet aan beleid 1
  • Een resource die zich al in resourcegroep B niet in 'eastus' heeft, voldoet niet aan beleid 2 en voldoet niet aan beleid 1 als dat niet het geval is in 'westus'
  • Nieuwe resources in abonnement A die niet in westus zijn, worden geweigerd door beleid 1
  • Elke nieuwe resource in abonnement A en resourcegroep B in 'westus' wordt gemaakt en voldoet niet aan beleid 2

Als zowel beleid 1 als beleid 2 het effect van weigeren had, verandert de situatie in:

  • Een resource die zich al in resourcegroep B niet in 'eastus' heeft, voldoet niet aan beleid 2
  • Alle resources in resourcegroep B die zich niet in 'westus' hebben, voldoen niet aan beleid 1
  • Nieuwe resources in abonnement A die niet in westus zijn, worden geweigerd door beleid 1
  • Nieuwe resources in resourcegroep B van abonnement A worden geweigerd

Elke toewijzing wordt afzonderlijk geëvalueerd. Daarom is er geen mogelijkheid voor een resource om een hiaat te dichten bij verschillen in bereik. Het nettoresultaat van beleidsdefinities voor lagen wordt beschouwd als cumulatief meest beperkende. Als beleid 1 en 2 bijvoorbeeld een weigereffect hebben, wordt een resource geblokkeerd door de overlappende en conflicterende beleidsdefinities. Als u de resource nog steeds moet maken in het doelbereik, controleert u de uitsluitingen voor elke toewijzing om te controleren of de juiste beleidstoewijzingen van invloed zijn op de juiste bereiken.

Volgende stappen