Azure Policy-definities deployIfNotExists-effect
auditIfNotExists
Net 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.
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 maken of bijwerken abonnement of resourceaanvraag verwerkt en een geslaagde statuscode heeft geretourneerd. Een sjabloonimplementatie vindt plaats als er geen gerelateerde resources zijn of als de resources die zijn gedefinieerd door existenceCondition
niet 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)- Hiermee geeft u het type van de gerelateerde resource die moet overeenkomen.
- Als
type
dit een resourcetype is onder deif
voorwaarderesource, voert het beleid query's uit voor resources hiervantype
binnen het bereik van de geëvalueerde resource. Anders worden beleidsquery's binnen dezelfde resourcegroep of hetzelfde abonnement als de geëvalueerde resource, afhankelijk van deexistenceScope
.
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
enthen.details.type
overeenkomst zijn, wordt ditname
vereist en moet[field('name')]
dit zijn, of[field('fullName')]
voor een onderliggende resource.
Notitie
type
en name
segmenten kunnen worden gecombineerd om geneste resources algemeen 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
dit een resource is die zich onder deif
voorwaarderesource bevindt. - De standaardwaarde is de resourcegroep van de
if
voorwaarderesource. - 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 het bereik in van waar de gerelateerde resource moet worden opgehaald waaruit moet worden gematcht.
- Dit geldt niet als
type
dit een resource is die zich onder deif
voorwaarderesource bevindt. - Voor ResourceGroup zou dit worden beperkt tot de resourcegroep waarin
resourceGroupName
deze is opgegeven. AlsresourceGroupName
dit niet is opgegeven, beperkt u zich tot de resourcegroep van deif
voorwaarderesource. Dit is het standaardgedrag. - Voor Abonnement voert u een query uit op het hele abonnement voor de gerelateerde resource. Het toewijzingsbereik moet worden ingesteld op abonnement of hoger voor de 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
,AfterProvisioningSuccess
ofAfterProvisioningFailure
een 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 het inrichten is voltooid, ongeacht het resultaat. Inrichting die langer dan zes uur duurt, wordt behandeld als een fout bij het bepalen van na het inrichten van evaluatievertragingen. - De standaardwaarde is
PT10M
(10 minuten). - Het opgeven van een lange evaluatievertraging kan ertoe leiden dat de vastgelegde nalevingsstatus van de resource pas wordt bijgewerkt als de volgende evaluatietrigger.
existenceCondition
(optioneel)- Als dit niet is opgegeven, voldoet een gerelateerde resource aan
type
het effect en wordt de implementatie niet geactiveerd. - 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, is het effect tevreden en wordt de implementatie niet 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.
- Als dit niet is opgegeven, voldoet een gerelateerde resource aan
roleDefinitionIds
(vereist)- Deze eigenschap moet een matrix met tekenreeksen bevatten die overeenkomen met de rol-id van op rollen gebaseerd toegangsbeheer die toegankelijk is voor 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
binnen de sjabloon moet unieke namen gebruiken om conflicten tussen meerdere beleidsevaluaties te voorkomen. 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
deployment
eigenschap worden geëvalueerd als onderdelen van de sjabloon, niet als het beleid. De uitzondering is deparameters
eigenschap die waarden van het beleid doorgeeft aan de sjabloon. Devalue
in deze sectie onder de naam van een sjabloonparameter wordt gebruikt om deze waarde door te geven (zie fullDbName in het voorbeeld DeployIfNotExists).- Deze eigenschap moet de volledige sjabloonimplementatie bevatten, omdat deze wordt doorgegeven aan de
Voorbeeld deployIfNotExists
Voorbeeld: Evalueert SQL Server-databases om te bepalen of transparentDataEncryption
deze is ingeschakeld. Zo niet, dan wordt er 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')]"
}
}
}
}
}
}
Volgende stappen
- Bekijk voorbeelden in Azure Policy-voorbeelden.
- Lees over de structuur van Azure Policy-definities.
- Meer informatie over het programmatisch maken van beleid.
- Meer informatie over het ophalen van nalevingsgegevens.
- Ontdek hoe u niet-compatibele resources kunt herstellen.
- Controleer Azure-beheergroepen.