Åtgärda icke-kompatibla resurser med Azure Policy

Resurser som inte är kompatibla med principer med deployIfNotExists eller modify effekter kan placeras i ett kompatibelt tillstånd via Reparation. Åtgärdandet utförs genom reparationsåtgärder som distribuerar mallen deployIfNotExists eller åtgärderna modify för den tilldelade principen på dina befintliga resurser och abonnemang, oavsett om denna tilldelning gäller en hanteringsgrupp, abonnemang, resursgrupp eller enskild resurs. Den här artikeln visar de steg som krävs för att förstå och utföra reparation med Azure Policy.

Så här fungerar åtkomstkontroll för reparation

När Azure Policy startar en malldistribution när du utvärderar deployIfNotExists principer eller ändrar en resurs vid utvärdering av modify principer, gör den det med hjälp av en hanterad identitet som är associerad med principtilldelningen. Observera att även om tilldelningens identitet används för resursdistribution eller ändring används den inte för utvärdering av principdefinitionen och dess existensvillkor. Principevalutation använder identiteten för anroparen som initierade API-begäran.

Principtilldelningar använder hanterade identiteter för Azure-resursauktorisering under reparationen. Du kan använda antingen en systemtilldelad hanterad identitet som skapats av principtjänsten eller en användartilldelad identitet som tillhandahålls av användaren. Den hanterade identiteten måste tilldelas den minsta rollbaserade åtkomstkontrollrollen för Azure (Azure RBAC) som krävs för att åtgärda resurser. Om den hanterade identiteten saknar roller visas ett fel i portalen under tilldelningen av policyn eller ett initiativ. När du använder portalen beviljar Azure Policy automatiskt den hanterade identiteten de listade rollerna när tilldelningen startar. När du använder ett Azure-programutvecklingspaket (SDK) måste rollerna beviljas manuellt till den hanterade identiteten. Platsen för den hanterade identiteten påverkar inte dess åtgärd med Azure Policy.

Kommentar

Om du ändrar en principdefinition uppdateras inte tilldelningen automatiskt eller den associerade hanterade identiteten.

Reparationssäkerhet kan konfigureras genom följande steg:

Konfigurera principdefinitionen

Som en förutsättning måste principdefinitionen definiera de roller som deployIfNotExists och modify behöver för att framgångsrikt distribuera innehållet i den medföljande mallen. Ingen åtgärd krävs för en inbyggd principdefinition eftersom dessa roller är ifyllda i förväg. För en anpassad principdefinition, under egenskapen details, lägg till en roleDefinitionIds egenskap. Den här egenskapen är en matris med strängar som matchar roller i din miljö. Ett fullständigt exempel finns i deployIfNotExists eller modify.

"details": {
    ...
    "roleDefinitionIds": [
    "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
    "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
  ]
}

Egenskapen roleDefinitionIds använder den fullständiga resursidentifieraren och accepterar inte den korta roleName för rollen. Om du vill hämta ID:t för deltagarrollen i din miljö använder du följande Azure CLI-kod:

az role definition list --name "Contributor"

Viktigt!

Behörigheter bör begränsas till den minsta möjliga uppsättningen när du definierar roleDefinitionIds i en principdefinition eller tilldelar behörigheter till en hanterad identitet manuellt. Mer metodtips finns i rekommendationer för bästa praxis för hanterade identiteter.

Konfigurera den hanterade identiteten

Varje Azure Policy-tilldelning kan bara associeras med en hanterad identitet. Den hanterade identiteten kan dock tilldelas flera roller. Konfigurationen sker i två steg: skapa först antingen en systemtilldelad eller användartilldelad hanterad identitet och ge den sedan nödvändiga roller.

Kommentar

När du skapar en hanterad identitet via portalen beviljas roller automatiskt till den hanterade identiteten. Om roleDefinitionIds senare redigeras i policyns definition måste de nya behörigheterna beviljas manuellt, även i portalen.

Skapa den hanterade identiteten

När du skapar en tilldelning med hjälp av portalen kan Azure Policy generera en systemtilldelad hanterad identitet och ge den de roller som definierats i principdefinitionens roleDefinitionIds. Du kan också ange en användartilldelad hanterad identitet som tar emot samma rolltilldelning.

Skärmbild av en principtilldelning som skapar en systemtilldelad hanterad identitet i East US med behörighet som Log Analytics-deltagare.

Så här anger du en systemtilldelad hanterad identitet i portalen:

  1. På fliken Reparation i vyn Skapa/redigera tilldelning, under Typer av hanterad identitet, kontrollerar du att Systemtilldelad hanterad identitet är markerad.

  2. Ange den plats där den hanterade identiteten ska finnas.

  3. Tilldela inte något omfång för systemtilldelad hanterad identitet eftersom omfånget ärvs från tilldelningsomfånget.

Så här anger du en användartilldelad hanterad identitet i portalen:

  1. På fliken Reparation i vyn skapa/redigera tilldelning under Typer av hanterad identitet kontrollerar du att Användartilldelad hanterad identitet är markerad.

  2. Ange omfånget där den hanterade identiteten finns. Omfånget för den hanterade identiteten behöver inte motsvara tilldelningens omfång, men det måste finnas i samma tenant.

  3. Under Befintliga användartilldelade identiteter väljer du den hanterade identiteten.

Bevilja behörigheter till den hanterade identiteten via definierade roller

Viktigt!

Om den hanterade identiteten inte har de behörigheter som krävs för att köra den nödvändiga reparationsuppgiften beviljas den endast behörigheter automatiskt via portalen. Du kan hoppa över det här steget om du skapar en hanterad identitet via portalen.

För alla andra metoder måste tilldelningens hanterade identitet manuellt beviljas åtkomst genom att lägga till roller, annars misslyckas återställningsimplementeringen.

Exempelscenarier som kräver manuella behörigheter:

  • Om tilldelningen skapas via ett Azure-programutvecklingspaket (SDK)
  • Om en resurs har ändrats av deployIfNotExists eller modify ligger utanför omfånget för principtilldelningen
  • Om mallen har åtkomst till egenskaper för resurser utanför principtilldelningens omfång

Det finns två sätt att bevilja en tilldelningshanterad identitet de definierade rollerna genom portalen: genom att använda Åtkomstkontroll (IAM) eller genom att redigera princip- eller initiativtilldelningen och välja Spara.

Följ dessa steg om du vill lägga till en roll i tilldelningens hanterade identitet:

  1. Starta Azure Policy-tjänsten i Azure Portal genom att välja Alla tjänster och sedan söka efter och välja Princip.

  2. Välj Tilldelningar till vänster på sidan Azure Policy.

  3. Identifiera tilldelningen som har en hanterad identitet och välj namnet.

  4. Leta upp egenskapen Tilldelnings-ID på redigeringssidan. Tilldelnings-ID:t ser ut som i följande exempel:

    /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/2802056bfc094dfb95d4d7a5
    

    Namnet på den hanterade identiteten är den sista delen av tilldelningsresurs-ID:t, som finns 2802056bfc094dfb95d4d7a5 i det här exemplet. Kopiera den här delen av tilldelningsresurs-ID:t.

  5. Navigera till resursen eller den överordnade resurscontainern (resursgrupp, prenumeration, hanteringsgrupp) som behöver rolldefinitionen manuellt tillagd.

  6. Välj länken Åtkomstkontroll (IAM) på resurssidan och välj sedan + Lägg till rolltilldelning överst på åtkomstkontrollsidan.

  7. Välj lämplig roll som matchar en roleDefinitionIds från principdefinitionen. Låt Tilldela åtkomst till vara standardinställningen "användare, grupp eller applikation". I rutan Välj klistrar du in eller skriver in den del av tilldelningsresurs-ID:t som fanns tidigare. När sökningen är klar väljer du objektet med samma namn för att välja ID och väljer Spara.

Skapa en reparationsaktivitet

Starta Azure Policy-tjänsten i Azure Portal genom att välja Alla tjänster och sedan söka efter och välja Princip.

Skärmbild på sökning efter policy i Alla tjänster.

Steg 1: Initiera skapande av reparationsaktivitet

Det finns tre sätt att skapa en reparationsuppgift via portalen.

Alternativ 1: Skapa en reparationsaktivitet från sidan Reparation

  1. Välj Reparation till vänster på sidan Azure Policy.

    Skärmbild av noden Korrigering på sidan Policy.

  2. Alla deployIfNotExists och modify policys visas på fliken Policys för åtgärd. Välj en med resurser som inte uppfyller kraven för att öppna sidan Ny åtgärdsuppgift.

  3. Följ stegen för att ange information om reparationsaktiviteten.

Alternativ 2: Skapa en åtgärdsuppgift från en icke-kompatibel policytilldelning

  1. Välj Efterlevnad till vänster på sidan Azure Policy.

  2. Välj en icke-kompatibel princip eller initiativtilldelning som innehåller deployIfNotExists eller modify effekter.

  3. Välj knappen Skapa reparationsaktivitet överst på sidan för att öppna sidan Ny reparationsaktivitet.

  4. Följ stegen för att ange information om reparationsaktiviteten.

Alternativ 3: Skapa en reparationsaktivitet under principtilldelningen

Om definitionsprincipen eller initiativet som ska tilldelas har en deployIfNotExists eller modify effekt, erbjuder fliken Reparation i guiden alternativet Skapa en reparationsaktivitet, vilket skapar en reparationsaktivitet samtidigt som principtilldelningen.

Kommentar

Det här är den mest effektiva metoden för att skapa en reparationsuppgift och stöds för policys som tilldelats för en prenumeration. För principer som tilldelats en hanteringsgrupp bör reparationsuppgifter skapas med alternativ 1 eller alternativ 2 när utvärderingen har fastställt resursefterlevnad.

  1. I tilldelningsguiden i portalen går du till fliken Reparation . Markera kryssrutan för Skapa en reparationsaktivitet.

  2. Om reparationsaktiviteten initieras från en initiativtilldelning väljer du den princip som ska åtgärdas i listrutan.

  3. Konfigurera den hanterade identiteten och fyll i resten av guiden. Åtgärdsuppgiften skapas när tilldelningen skapas.

Steg 2: Ange information om reparationsaktivitet

Det här steget gäller endast när du använder alternativ 1 eller alternativ 2 för att initiera skapande av reparationsaktivitet.

  1. Om reparationsaktiviteten initieras från en initiativtilldelning väljer du den princip som ska åtgärdas i listrutan. En deployIfNotExists eller modify princip kan korrigeras via en enskild korrigeringsuppgift i taget.

  2. Du kan också ändra reparationsinställningarna på sidan. Information om vad varje inställning styr finns i Åtgärdsaktivitetsstruktur.

  3. På samma sida filtrerar du de resurser som ska åtgärdas med hjälp av omfångsellipserna för att välja underordnade resurser där principen har tilldelats (inklusive ned till de enskilda resursobjekten). Använd listrutan Platser för att filtrera resurserna ytterligare.

    Skärmbild av noden Remediate och rutnätet för resurser som ska åtgärdas.

  4. Påbörja reparationsaktiviteten när resurserna har filtrerats genom att välja Åtgärda. Sidan principefterlevnad öppnas på fliken Reparationsåtgärder för att visa status för aktiviteternas förlopp. Distributioner som har skapats av åtgärdsuppgiften startar omedelbart.

    Skärmbild av fliken Reparationsuppgifter och förloppet för befintliga reparationsuppgifter.

Steg 3: Spåra åtgärdsaktivitetens förlopp

  1. Gå till fliken Reparationsåtgärdersidan Reparation . Välj en reparationsaktivitet för att visa information om filtreringen som används, aktuell status och en lista över resurser som åtgärdas.

  2. På sidan Reparationsaktivitetsinformation högerklickar du på en resurs för att visa antingen reparationsaktivitetens distribution eller resursen. I slutet av raden väljer du Relaterade händelser för att se information, till exempel ett felmeddelande.

    Skärmbild av snabbmenyn för en resurs på fliken Åtgärda uppgift.

Resurser som distribueras via en reparationsaktivitet läggs till på fliken Distribuerade resurser på sidan information om principtilldelning.

Nästa steg