Åtgärda icke-kompatibla resurser med Azure Policy

Resurser som inte är kompatibla med principer med deployIfNotExists eller ändringseffekter kan placeras i ett kompatibelt tillstånd via Reparation. Reparationen utförs genom reparationsåtgärder som distribuerar mallen deployIfNotExists eller ändringsåtgärderna för den tilldelade principen för dina befintliga resurser och prenumerationer, oavsett om tilldelningen finns i en hanteringsgrupp, prenumeration, 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 distribueraIfNotExists-principer eller ändrar en resurs när du utvärderar ändringsprinciper , gör den det med hjälp av en hanterad identitet som är associerad med principtilldelningen. Principtilldelningar använder hanterade identiteter för Azure-resursauktorisering. Du kan använda antingen en systemtilldelad hanterad identitet som skapas av principtjänsten eller en användartilldelad identitet som tillhandahålls av användaren. Den hanterade identiteten måste tilldelas de minsta RBAC-rollerna (rollbaserad åtkomstkontroll) som krävs för att reparera resurser. Om den hanterade identiteten saknar roller visas ett fel i portalen under tilldelningen av principen eller ett initiativ. När du använder portalen beviljar Azure Policy automatiskt den hanterade identiteten de angivna rollerna när tilldelningen startar. När du använder ett Azure Software Development Kit (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 distribuerarIfNotExists och ändra behovet av att distribuera innehållet i den inkluderade 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 lägger du till en roleDefinitionIds-egenskap under egenskapen details. Den här egenskapen är en matris med strängar som matchar roller i din miljö. Ett fullständigt exempel finns i exemplet deployIfNotExists eller ändra exemplen.

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

Egenskapen roleDefinitionIds använder den fullständiga resursidentifieraren och tar inte rollens korta roleName . Om du vill hämta ID:t för rollen Deltagare 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 minsta möjliga uppsättning 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 principdefinitionen 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.

Screenshot of a policy assignment creating a system-assigned managed identity in East US with Log Analytics Contributor permissions.

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 klientorganisation.

  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 beviljas manuellt åtkomst genom tillägg av roller, annars misslyckas reparationsdistributionen.

Exempelscenarier som kräver manuella behörigheter:

  • Om tilldelningen skapas via ett Azure-programutvecklingspaket (SDK)
  • Om en resurs som ändrats av deployIfNotExists eller ändrar 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 tilldelnings hanterade identitet de definierade rollerna med hjälp av 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-portalen 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. Leta upp tilldelningen som har en hanterad identitet och välj namnet.

  4. Leta upp egenskapen Tilldelnings-ID på redigeringssidan. Tilldelnings-ID:t kommer att se ut ungefär så här:

    /subscriptions/{subscriptionId}/resourceGroups/PolicyTarget/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 ett roleDefinitionId från principdefinitionen. Lämna Tilldela åtkomst för att ange standardvärdet "Azure AD-användare, grupp eller program". 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-portalen genom att välja Alla tjänster och sedan söka efter och välja Princip.

Screenshot of searching for Policy in All Services.

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.

    Screenshot of the Remediation node on the Policy page.

  2. Alla deployIfNotExists och ändra principtilldelningar visas på fliken Principer för att åtgärda . Välj en med resurser som inte är kompatibla för att öppna sidan Ny reparationsaktivitet .

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

Alternativ 2: Skapa en reparationsaktivitet från en principtilldelning som inte är kompatibel

  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 ändra 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 den princip- eller initiativdefinition som ska tilldelas har en deployIfNotExists- eller ändringseffekt, 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 principer 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. Reparationsaktiviteten 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 ändringsprincip kan åtgärdas via en enskild reparationsaktivitet 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.

    Screenshot of the Remediate node and the grid of resources to remediate.

  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 skapats av reparationsaktiviteten börjar direkt.

    Screenshot of the Remediation tasks tab and progress of existing remediation tasks.

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

  1. Gå till fliken Reparationsåtgärdersidan Reparation . Klicka på en reparationsaktivitet för att visa information om den filtrering 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.

    Screenshot of the context menu for a resource on the Remediate task tab.

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

Nästa steg