Share via


Azure Policy definities deployIfNotExists-effect

auditIfNotExistsNet als bij een deployIfNotExists beleidsdefinitie wordt een sjabloonimplementatie uitgevoerd wanneer aan de voorwaarde wordt voldaan. Beleidstoewijzingen met effect ingesteld als DeployIfNotExists vereisen een beheerde identiteit om herstel uit te voeren.

Opmerking

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 maken of bijwerken abonnement of resourceaanvraag verwerkt en een geslaagde statuscode heeft geretourneerd. Een sjabloonimplementatie vindt plaats als er geen gerelateerde bronnen zijn of als de bronnen die door existenceCondition zijn gedefinieerd niet als waar worden geëvalueerd. De duur van de implementatie hangt af van de complexiteit van resources die in de sjabloon zijn opgenomen.

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

DeployIfNotExists-eigenschappen

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

  • type (vereist)
    • Specificeer het type van het gerelateerde hulpmiddel dat moet overeenkomen.
    • Als type een resourcetype is dat onder de voorwaarderesource if valt, voert het beleid opvragen uit voor resources van dit type type binnen de reikwijdte van de geëvalueerde resource. Anders worden query's over beleid binnen dezelfde resourcegroep of hetzelfde abonnement als de geëvalueerde resource afhankelijk van de existenceScope.
  • name (optioneel)
    • Hiermee geeft u de exacte naam van de resource die overeenkomt en zorgt ervoor dat het beleid één specifieke resource ophaalt in plaats van alle resources van het opgegeven type.
    • Wanneer de voorwaardewaarden voor if.field.type en then.details.type overeenkomen, wordt namevereist en moet het [field('name')] zijn, of [field('fullName')] voor een ondergeschikte resource.

Opmerking

type en name segmenten kunnen worden gecombineerd om algemeen geneste resources op te halen.

Als u een specifieke resource wilt ophalen, kunt u deze gebruiken "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" en "name": "parentResourceName/nestedResourceName".

Als u een verzameling geneste resources wilt ophalen, kunt u een jokerteken ? opgeven in plaats van het achternaamsegment. Bijvoorbeeld "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" en "name": "parentResourceName/?". Dit kan worden gecombineerd met veldfuncties voor toegang tot resources die zijn gerelateerd aan de geëvalueerde resource, zoals "name": "[concat(field('name'), '/?')]".".

  • resourceGroupName (optioneel)

    • Hiermee kan de overeenkomende resource afkomstig zijn van een andere resourcegroep.
    • Dit geldt niet als type een resource is die zich onder de if voorwaarde bevindt.
    • De standaardinstelling is de resourcegroep van de voorwaarderesource if.
    • Als een sjabloonimplementatie wordt uitgevoerd, wordt deze geïmplementeerd in de resourcegroep van deze waarde.
  • existenceScope (optioneel)

    • Toegestane waarden zijn Abonnement en ResourceGroup.
    • Hiermee stelt u de reikwijdte in voor het ophalen van de gerelateerde resource om te matchen.
    • Dit geldt niet als type een resource is die zich onder de if voorwaarde bevindt.
    • Voor ResourceGroup zou, indien gespecificeerd, beperkt worden tot de resourcegroep in resourceGroupName. Als resourceGroupName niet is opgegeven, wordt beperkt tot de resourcegroep van de voorwaarderesource van if, wat het standaardgedrag is.
    • Voor Abonnement wordt een query uitgevoerd op het hele abonnement voor de gerelateerde resource. Het taakbereik 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 gevolg zijn van een aanvraag voor het maken of bijwerken van resources.
    • Toegestane waarden zijn AfterProvisioning, AfterProvisioningSuccessof AfterProvisioningFailureeen ISO 8601-duur tussen 0 en 360 minuten.
    • De waarden na inrichting inspecteren het inrichtingsresultaat van de resource die is geëvalueerd in de voorwaarde van if de beleidsregel. AfterProvisioning wordt uitgevoerd nadat de provisioning is voltooid, ongeacht de uitkomst. Inrichting die meer dan zes uur in beslag neemt, wordt beschouwd als een mislukking bij het bepalen van AfterProvisioning evaluatievertragingen.
    • De standaardwaarde is PT10M (10 minuten).
    • Het specificeren van een lange evaluatievertraging kan ervoor zorgen dat de geregistreerde compliancestatus van de resource pas wordt geüpdatet bij de volgende evaluatietrigger.
  • existenceCondition (optioneel)

    • Als niet anders aangegeven, voldoet elke gerelateerde resource van type aan het effect en activeert de implementatie niet.
    • Gebruikt dezelfde taal als de beleidsregel voor de if voorwaarde, maar wordt afzonderlijk geëvalueerd op basis van elke gerelateerde resource.
    • Als een overeenkomende gerelateerde resource waar oplevert, wordt het effect vervuld en zorgt dat de implementatie niet wordt geactiveerd.
    • Kan [field()] gebruiken om de gelijkwaardigheid met waarden in de if voorwaarde te controleren.
    • Kan bijvoorbeeld worden gebruikt om te controleren of de bovenliggende resource (in de if voorwaarde) zich op dezelfde resourcelocatie bevindt als de overeenkomende gerelateerde resource.
  • roleDefinitionIds (vereist)

    • Deze eigenschap moet een array van tekenreeksen bevatten die overeenkomen met de rol-ID's van rolgebaseerde toegangscontrole die toegankelijk zijn via het abonnement. Zie herstel voor meer informatie : de beleidsdefinitie configureren.
  • deploymentScope (optioneel)

    • Toegestane waarden zijn Abonnement en ResourceGroup.
    • Hiermee stelt u het type implementatie in dat moet worden geactiveerd. Abonnement geeft een implementatie op abonnementsniveau aan en ResourceGroup geeft een implementatie aan voor een resourcegroep.
    • Er moet een locatie-eigenschap worden opgegeven in de implementatie wanneer u implementaties op abonnementsniveau gebruikt.
    • De standaardwaarde is ResourceGroup.
  • deployment (vereist)

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

    Opmerking

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

Voorbeeld deployIfNotExists

Voorbeeld: Evalueert SQL Server-databases om te bepalen of transparentDataEncryption deze is ingeschakeld. Als dat niet het geval is, wordt een implementatie uitgevoerd om in te schakelen.

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

Volgende stappen