Ändringseffekt för Azure Policy-definitioner

Effekten modify används för att lägga till, uppdatera eller ta bort egenskaper eller taggar för en prenumeration eller resurs när du skapar eller uppdaterar. Ett vanligt exempel är att uppdatera taggar för resurser som costCenter. Befintliga icke-kompatibla resurser kan åtgärdas med en reparationsaktivitet. En enskild ändringsregel kan ha valfritt antal åtgärder. Principtilldelningar med effektuppsättning som Ändra kräver en hanterad identitet för att utföra reparation.

Effekten modify stöder följande åtgärder:

  • Lägg till, ersätt eller ta bort resurstaggar. För taggar ska en ändringsprincip ha läget inställt på indexed såvida inte målresursen är en resursgrupp.
  • Lägg till eller ersätt värdet för den hanterade identitetstypen (identity.type) för virtuella datorer och vm-skalningsuppsättningar. Du kan bara ändra identity.type för virtuella datorer eller VM-skalningsuppsättningar.
  • Lägg till eller ersätt värdena för vissa alias.
    • Använd Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' } i Azure PowerShell 4.6.0 eller senare för att hämta en lista över alias som kan användas med modify.

Viktigt!

Om du hanterar taggar rekommenderar vi att du använder Ändra i stället för Lägg till eftersom Ändra ger fler åtgärdstyper och möjlighet att åtgärda befintliga resurser. Tillägg rekommenderas dock om du inte kan skapa en hanterad identitet eller om Ändra ännu inte stöder aliaset för resursegenskapen.

Ändra utvärdering

Ändra utvärderas innan begäran bearbetas av en resursprovider när en resurs skapas eller uppdateras. Åtgärderna modify tillämpas på begärandeinnehållet när villkoret if för principregeln uppfylls. Varje modify åtgärd kan ange ett villkor som avgör när den tillämpas. Åtgärder med falska villkorsutvärderingar hoppas över.

När ett alias anges utförs fler kontroller för att säkerställa att modify åtgärden inte ändrar innehållet i begäran på ett sätt som gör att resursprovidern avvisar det:

  • Egenskapen som aliaset mappar till markeras som Modifiable i begärans API-version.
  • Tokentypen i modify åtgärden matchar den förväntade tokentypen för egenskapen i begärans API-version.

Om någon av dessa kontroller misslyckas återgår principutvärderingen till den angivna conflictEffect.

Viktigt!

Vi rekommenderar att Ändra definitioner som innehåller alias använder granskningskonfliktseffekten för att undvika misslyckade begäranden med hjälp av API-versioner där den mappade egenskapen inte är "Ändringsbar". Om samma alias fungerar annorlunda mellan API-versioner kan villkorsstyrda ändringsåtgärder användas för att fastställa vilken modify åtgärd som används för varje API-version.

När en principdefinition som använder modify effekten körs som en del av en utvärderingscykel, gör den inte ändringar i resurser som redan finns. I stället markeras alla resurser som uppfyller villkoret if som icke-kompatibla.

Ändra egenskaper

Effektens detailsmodify egenskap har alla underegenskaper som definierar de behörigheter som krävs för reparation och de operations som används för att lägga till, uppdatera eller ta bort taggvärden.

  • roleDefinitionIds (krävs)
    • Den här egenskapen måste innehålla en matris med strängar som matchar roll-ID för roll-ID för roll för roll i roll som är tillgänglig för prenumerationen. Mer information finns i Reparation – konfigurera principdefinitionen.
    • Den definierade rollen måste innehålla alla åtgärder som beviljats rollen Deltagare .
  • conflictEffect (valfritt)
    • Avgör vilken principdefinition som "vinner" om fler än en principdefinition ändrar samma egenskap eller när modify åtgärden inte fungerar på det angivna aliaset.
      • För nya eller uppdaterade resurser har principdefinitionen med neka företräde. Principdefinitioner med granskning hoppar över alla operations. Om fler än en principdefinition har effektnekelse nekas begäran som en konflikt. Om alla principdefinitioner har granskning bearbetas ingen av de operations motstridiga principdefinitionerna.
      • Om fler än en principdefinition har effektnekande för befintliga resurser är efterlevnadsstatusen Konflikt. Om en eller färre principdefinitioner får effekten att neka, returnerar varje tilldelning kompatibilitetsstatusen Icke-kompatibel.
    • Tillgängliga värden: granskning, neka, inaktiverad.
    • Standardvärdet nekas.
  • operations (krävs)
    • En matris med alla taggåtgärder som ska slutföras för matchande resurser.
    • Egenskaper:
      • operation (krävs)
        • Definierar vilken åtgärd som ska vidtas för en matchande resurs. Alternativen är: addOrReplace, Add, Remove. Lägg till beter sig ungefär som tilläggseffekten.
      • field (krävs)
        • Taggen som du vill lägga till, ersätta eller ta bort. Taggnamn måste följa samma namngivningskonvention för andra fält.
      • value (valfritt)
        • Värdet som taggen ska anges till.
        • Den här egenskapen krävs om operation är addOrReplace eller Add.
      • condition (valfritt)
        • En sträng som innehåller ett Azure Policy-språkuttryck med principfunktioner som utvärderas till sant eller falskt.
        • Stöder inte följande principfunktioner: field(), resourceGroup(), subscription().

Ändra åtgärder

Egenskapsmatrisen operations gör det möjligt att ändra flera taggar på olika sätt från en enskild principdefinition. Varje åtgärd består av operationegenskaperna , fieldoch value . Avgör operation vad reparationsuppgiften gör med taggarna, field avgör vilken tagg som ändras och value definierar den nya inställningen för taggen. Följande exempel gör följande taggändringar:

  • Anger taggen environment till "Test" även om den redan finns med ett annat värde.
  • Tar bort taggen TempResource.
  • Anger taggen Dept till principparametern DeptName som konfigurerats för principtilldelningen.
"details": {
  ...
  "operations": [
    {
      "operation": "addOrReplace",
      "field": "tags['environment']",
      "value": "Test"
    },
    {
      "operation": "Remove",
      "field": "tags['TempResource']",
    },
    {
      "operation": "addOrReplace",
      "field": "tags['Dept']",
      "value": "[parameters('DeptName')]"
    }
  ]
}

Egenskapen operation har följande alternativ:

Operation beskrivning
addOrReplace Lägger till den definierade egenskapen eller taggen och värdet i resursen, även om egenskapen eller taggen redan finns med ett annat värde.
add Lägger till den definierade egenskapen eller taggen och värdet i resursen.
remove Tar bort den definierade egenskapen eller taggen från resursen.

Ändra exempel

Exempel 1: Lägg till taggen environment och ersätt befintliga environment taggar med "Test":

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

Exempel 2: Ta bort taggen env och lägg till taggen environment eller ersätt befintliga environment taggar med ett parameteriserat värde:

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

Exempel 3: Kontrollera att ett lagringskonto inte tillåter offentlig blobåtkomst. modify Åtgärden tillämpas endast när begäranden med API-versionen utvärderas 2019-04-01eller är lika med :

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

Nästa steg