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. Een veelvoorkomend voorbeeld is het bijwerken van tags voor resources zoals costCenter. Bestaande niet-compatibele resources kunnen worden hersteld met een hersteltaak. Eén regel Wijzigen kan een willekeurig aantal bewerkingen hebben. Beleidstoewijzingen met effect ingesteld als Wijzigen vereisen een beheerde identiteit om herstel uit te voeren.

Het modify effect ondersteunt de volgende bewerkingen:

  • Resourcetags toevoegen, vervangen of verwijderen. 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 de identity.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 gebruikt modify.

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. Bewerkingen met evaluaties van valse voorwaarden worden overgeslagen.

Wanneer een alias is opgegeven, worden des te 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 controlegebruiken 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.

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 de if voorwaarde als niet-compatibel.

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 operationsover. Als meerdere beleidsdefinities het effect weigeren hebben, wordt de aanvraag geweigerd als een conflict. Als alle beleidsdefinities controle hebben, worden geen van de operations 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.
    • Beschikbare waarden: controleren, weigeren, uitgeschakeld.
    • De standaardwaarde wordt geweigerd.
  • 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, Toevoegen, Verwijderen. Toevoegen gedraagt zich vergelijkbaar met het toevoegeffect .
      • 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, fielden 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 eigenschap of tag uit de resource.

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