Effect van Azure Policy-definities wijzigen
Het modify
effect wordt gebruikt om tijdens het maken of bijwerken eigenschappen of tags aan een abonnement of resource toe te voegen, bij te werken of te verwijderen. Bestaande niet-compatibele resources kunnen ook worden hersteld met een hersteltaak. Beleidstoewijzingen met effect ingesteld als Wijzigen vereisen een beheerde identiteit om herstel uit te voeren. Een veelvoorkomend voorbeeld van het gebruik van modify
effect is het bijwerken van tags op resources zoals 'costCenter'.
Er zijn enkele nuances in wijzigingsgedrag voor resource-eigenschappen. Meer informatie over scenario's wanneer wijzigingen worden overgeslagen.
Eén modify
regel kan een willekeurig aantal bewerkingen hebben. Ondersteunde bewerkingen zijn:
- Resourcetags toevoegen, vervangen of verwijderen. Alleen tags kunnen worden verwijderd. Voor tags moet de modus Modify-beleid zijn ingesteld op
indexed
tenzij de doelresource een resourcegroep is. - Voeg de waarde van het beheerde identiteitstype (
identity.type
) van virtuele machines en virtuele-machineschaalsets toe of vervang deze. U kunt alleen deidentity.type
virtuele machines of virtuele-machineschaalsets wijzigen. - Voeg de waarden van bepaalde aliassen toe of vervang deze.
- Gebruik
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }
in Azure PowerShell 4.6.0 of hoger om een lijst met aliassen op te halen waarmee kan worden gebruiktmodify
.
- Gebruik
Belangrijk
Als u tags beheert, is het raadzaam om Modify te gebruiken in plaats van Toevoegen als Wijzigen meer bewerkingstypen en de mogelijkheid om bestaande resources te herstellen. Toevoegen wordt echter aanbevolen als u geen beheerde identiteit kunt maken of Wijzigen de alias voor de resource-eigenschap nog niet ondersteunt.
Evaluatie wijzigen
Wijzigingen worden geëvalueerd voordat de aanvraag wordt verwerkt door een resourceprovider tijdens het maken of bijwerken van een resource. De modify
bewerkingen 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.
Wanneer een alias is opgegeven, worden er meer controles uitgevoerd om ervoor te zorgen dat de modify
bewerking de aanvraaginhoud niet wijzigt op een manier die ervoor zorgt dat de resourceprovider deze weigert:
- De eigenschap waarnaar de alias wordt toegewezen, is gemarkeerd als Wijzigbaar in de API-versie van de aanvraag.
- Het tokentype in de
modify
bewerking 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 de opgegeven conflictEffect
.
Belangrijk
Het is raadzaam definities te wijzigen die aliassen bevatten, het conflicteffect van de controle gebruiken om mislukte aanvragen te voorkomen met behulp van API-versies waarbij de toegewezen eigenschap niet 'Wijzigbaar' is. Als dezelfde alias zich anders gedraagt tussen API-versies, kunnen bewerkingen voor voorwaardelijke wijzigingen worden gebruikt om de modify
bewerking te bepalen die wordt gebruikt voor elke API-versie.
Wijziging overgeslagen
Er zijn enkele gevallen waarin wijzigingsbewerkingen worden overgeslagen tijdens de evaluatie:
- Bestaande resources: wanneer een beleidsdefinitie die het
modify
effect gebruikt, wordt uitgevoerd als onderdeel van een evaluatiecyclus, worden er geen wijzigingen aangebracht in resources die al bestaan. In plaats daarvan worden alle resources gemarkeerd die voldoen aan deif
voorwaarde als niet-compatibel, zodat ze kunnen worden hersteld via een hersteltaak. - Niet van toepassing: wanneer de voorwaarde van een bewerking in de
operations
matrix wordt geëvalueerd op onwaar, wordt die bepaalde bewerking overgeslagen. - Eigenschap kan niet worden gewijzigd: als een alias die is opgegeven voor een bewerking niet kan worden gewijzigd in de API-versie van de aanvraag, gebruikt evaluatie het conflicteffect. Als het conflicteffect is ingesteld op weigeren, wordt de aanvraag geblokkeerd. Als het conflicteffect is ingesteld op controle, wordt de aanvraag toegestaan, maar wordt de
modify
bewerking overgeslagen. - Eigenschap niet aanwezig: Als een eigenschap niet aanwezig is in de nettolading van de resource van de aanvraag, kan de wijziging worden overgeslagen. In sommige gevallen zijn wijzigbare eigenschappen genest binnen andere eigenschappen en hebben ze een alias zoals
Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled
. Als de eigenschap 'bovenliggend' in dit gevaldeleteRetentionPolicy
niet aanwezig is in de aanvraag, wordt de wijziging overgeslagen omdat deze eigenschap opzettelijk wordt weggelaten. Ga voor een praktisch voorbeeld naar de sectie Voorbeeld van eigenschap die niet aanwezig is. - Niet-VM- of VMSS-identiteitsbewerking: wanneer een wijzigingsbewerking probeert het
identity.type
veld toe te voegen aan of te vervangen voor een andere resource dan een virtuele machine of virtuele-machineschaalset, wordt beleidsevaluatie helemaal overgeslagen, zodat de wijziging niet wordt uitgevoerd. In dit geval wordt de resource beschouwd als niet van toepassing op het beleid.
Voorbeeld van eigenschap niet aanwezig
Het wijzigen van resource-eigenschappen is afhankelijk van de API-aanvraag en de bijgewerkte nettolading van de resource. De nettolading kan afhankelijk zijn van de gebruikte client, zoals Azure Portal en andere factoren, zoals de resourceprovider.
Stel dat u een beleid toepast waarmee tags op een virtuele machine (VM) worden gewijzigd. Telkens wanneer de VIRTUELE machine wordt bijgewerkt, zoals tijdens het wijzigen van de grootte of schijfwijzigingen, worden de tags dienovereenkomstig bijgewerkt, ongeacht de inhoud van de nettolading van de VIRTUELE machine. Dit komt doordat tags onafhankelijk zijn van de VM-eigenschappen.
Als u echter een beleid toepast dat eigenschappen op een VIRTUELE machine wijzigt, is wijziging afhankelijk van de nettolading van de resource. Als u probeert eigenschappen te wijzigen die niet zijn opgenomen in de nettolading van de update, vindt de wijziging niet plaats. Dit kan bijvoorbeeld gebeuren bij het patchen van de assessmentMode
eigenschap van een VIRTUELE machine (alias Microsoft.Compute/virtualMachines/osProfile.windowsConfiguration.patchSettings.assessmentMode
). De eigenschap is 'genest', dus als de bovenliggende eigenschappen niet zijn opgenomen in de aanvraag, wordt ervan uitgegaan dat deze weglating opzettelijk is en de wijziging wordt overgeslagen. Om te kunnen worden gewijzigd, moet de nettolading van de resource deze context bevatten.
Eigenschappen wijzigen
De details
eigenschap van het modify
effect heeft alle subproperties die de machtigingen definiëren die nodig zijn voor herstel en de operations
gebruikte 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 is voor het abonnement. Zie herstel voor meer informatie: de beleidsdefinitie configureren.
- De gedefinieerde rol moet alle bewerkingen bevatten die zijn verleend aan de rol Inzender .
conflictEffect
(optioneel)- Bepaalt welke beleidsdefinitie 'wint' als meer dan één beleidsdefinitie dezelfde eigenschap wijzigt of wanneer de
modify
bewerking niet werkt op de opgegeven alias.- Voor nieuwe of bijgewerkte resources heeft de beleidsdefinitie met weigeren voorrang. Beleidsdefinities met audit slaan alles
operations
over. Als meerdere beleidsdefinities het effect weigeren hebben, wordt de aanvraag geweigerd als een conflict. Als alle beleidsdefinities controle hebben, worden geen van deoperations
conflicterende beleidsdefinities verwerkt. - Als voor bestaande resources meerdere beleidsdefinities het effect weigeren hebben, is de nalevingsstatus Conflict. Als een of minder beleidsdefinities het effect weigeren hebben, retourneert elke toewijzing een nalevingsstatus van Niet-compatibel.
- Voor nieuwe of bijgewerkte resources heeft de beleidsdefinitie met weigeren voorrang. Beleidsdefinities met audit slaan alles
- Beschikbare waarden: controleren, weigeren, uitgeschakeld.
- De standaardwaarde wordt geweigerd.
- Bepaalt welke beleidsdefinitie 'wint' als meer dan één beleidsdefinitie dezelfde eigenschap wijzigt of wanneer de
operations
(vereist)- Een matrix van alle tagbewerkingen die moeten worden voltooid voor overeenkomende resources.
- Eigenschappen:
operation
(vereist)- Definieert welke actie moet worden ondernomen voor een overeenkomende resource. Opties zijn:
addOrReplace
,Add
enRemove
. Add
gedraagt zich vergelijkbaar met het toevoegeffect .Remove
wordt alleen ondersteund voor resourcetags.
- Definieert welke actie moet worden ondernomen voor een overeenkomende resource. Opties zijn:
field
(vereist)- De tag die u wilt toevoegen, vervangen of verwijderen. Tagnamen moeten voldoen aan dezelfde naamconventie voor andere velden.
value
(optioneel)- De waarde voor het instellen van de tag.
- Deze eigenschap is vereist als
operation
addOrReplace of Add is.
condition
(optioneel)- Een tekenreeks met een Azure Policy-taalexpressie met beleidsfuncties die waar of onwaar evalueren.
- Biedt geen ondersteuning voor de volgende beleidsfuncties:
field()
,resourceGroup()
,subscription()
.
Bewerkingen wijzigen
Met de operations
eigenschapsmatrix kunt u verschillende tags op verschillende manieren wijzigen van één beleidsdefinitie. Elke bewerking bestaat uit operation
, field
en value
eigenschappen. De operation
bepaalt wat de hersteltaak doet met de tags, field
bepaalt welke tag wordt gewijzigd en value
definieert de nieuwe instelling voor die tag. In het volgende voorbeeld worden de volgende tagwijzigingen aangebracht:
- Hiermee stelt u de
environment
tag in op 'Testen', zelfs als deze al bestaat met een andere waarde. - Hiermee verwijdert u de tag
TempResource
. - Hiermee stelt u de
Dept
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 operation
eigenschap heeft de volgende opties:
Operation | Omschrijving |
---|---|
addOrReplace |
Voegt de gedefinieerde eigenschap of tag en waarde toe aan de resource, zelfs als de eigenschap of tag al bestaat met een andere waarde. |
add |
Voegt de gedefinieerde eigenschap of tag en waarde toe aan de resource. |
remove |
Hiermee verwijdert u de gedefinieerde tag uit de resource. Alleen ondersteund voor tags. |
Voorbeelden wijzigen
Voorbeeld 1: Voeg de environment
tag toe en vervang bestaande environment
tags door 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 environment
tag toe of vervang bestaande environment
tags door een 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 blob-toegang toestaat. De modify
bewerking wordt alleen toegepast wanneer aanvragen met API-versie groter of gelijk zijn 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
}
]
}
}
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.