Veilige implementatie van Azure Policy-toewijzingen

Naarmate uw omgeving zich uitbreidt, is de vraag naar een beheerde cd-pijplijn (continue implementatie) met progressief blootstellingsbeheer. Daarom raadt Microsoft DevOps-teams aan om het SDP-framework (Safe Deployment Practices) te volgen. De veilige implementatie van Azure Policy-definities en -toewijzingen helpt de impact van onbedoeld gedrag van beleidsbronnen te beperken.

De benadering op hoog niveau van het implementeren van SDP met Azure Policy is het implementeren van beleidstoewijzingen op basis van ringen om beleidswijzigingen te detecteren die in een vroeg stadium van invloed zijn op de omgeving voordat dit van invloed is op de kritieke cloudinfrastructuur.

Implementatieringen kunnen op verschillende manieren worden georganiseerd. In deze instructiezelfstudie worden ringen gedeeld door verschillende Azure-regio's met Ring 0 die niet-kritieke locaties met weinig verkeer vertegenwoordigen en Ring 5 die de meest kritieke, hoogste verkeerslocaties aandued.

Stappen voor een veilige implementatie van Azure Policy-toewijzingen met weigerings- of toevoegeffecten

Gebruik het volgende stroomdiagram als referentie voor het toepassen van het SDP-framework op Azure Policy-toewijzingen die gebruikmaken van de deny of append beleidseffecten.

Notitie

Zie Begrijpen hoe effecten werken voor meer informatie over Azure-beleidseffecten.

Flowchart with steps one through eight showing safe deployment practices deployment of a new Azure Policy definition.

Stapnummers voor stroomdiagrammen:

  1. Zodra u uw beleidsdefinitie hebt geselecteerd, wijst u het beleid toe op het hoogste bereik, inclusief alle implementatieringen. Pas resourceselectors toe om de toepasbaarheid te beperken tot de minst kritieke ring met behulp van de "kind": "resource location" eigenschap. Configureer het audit effecttype met behulp van toewijzingsoverschrijvingen. Voorbeeldkiezer met eastUS locatie en effect als audit:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "overrides":[{ 
      "kind": "policyEffect", 
      "value": "Audit" 
    }] 
    
  2. Zodra de toewijzing is geïmplementeerd en de initiële nalevingsscan is voltooid, controleert u of het nalevingsresultaat naar verwachting is.

    U moet ook geautomatiseerde tests configureren waarmee nalevingscontroles worden uitgevoerd. Een nalevingscontrole moet de volgende logica omvatten:

    • Nalevingsresultaten verzamelen
    • Als de nalevingsresultaten zijn zoals verwacht, moet de pijplijn doorgaan
    • Als de nalevingsresultaten niet zoals verwacht zijn, mislukt de pijplijn en moet u beginnen met foutopsporing

    U kunt bijvoorbeeld de nalevingscontrole configureren met behulp van andere hulpprogramma's in uw specifieke CI/CD-pijplijn (continuous integration/continuous deployment).

    In elke implementatiefase moeten de statuscontroles van de toepassing de stabiliteit van de service en de impact van het beleid bevestigen. Als de resultaten niet zoals verwacht zijn vanwege de toepassingsconfiguratie, herstructureer dan de toepassing indien nodig.

  3. Herhaal dit door de eigenschapswaarden van de resourceselector uit te vouwen om de volgende ringen op te nemen. locaties en validatie van de verwachte nalevingsresultaten en toepassingsstatus. Voorbeeldkiezer met een toegevoegde locatiewaarde:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS", "westUS"] 
      }]
    }]
    
  4. Zodra u het beleid hebt toegewezen aan alle ringen met behulp van audit de modus, moet de pijplijn een taak activeren waarmee het beleidseffect deny wordt gewijzigd en de resourceselectors opnieuw worden ingesteld op de locatie die is gekoppeld aan Ring 0. Voorbeeldkiezer met één regio en effect ingesteld op weigeren:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "overrides":[{ 
      "kind": "policyEffect", 
      "value": "Deny" 
    }] 
    
  5. Zodra het effect is gewijzigd, moeten geautomatiseerde tests controleren of handhaving plaatsvindt zoals verwacht.

  6. Herhaal dit door meer ringen op te slaan in de configuratie van de resourceselector.

  7. Herhaal dit proces voor alle productieringen.

Stappen voor een veilige implementatie van Azure Policy-toewijzingen met wijzigingen of deployIfNotExists-effecten

De stappen voor beleidsregels die gebruikmaken van de modify of deployIfNotExists effecten zijn vergelijkbaar met de stappen die eerder zijn uitgelegd met de aanvullende actie van het gebruik van de afdwingingsmodus en het activeren van een hersteltaak. Bekijk het volgende stroomdiagram met gewijzigde stappen 5-9:

Flowchart showing steps 5 through 9 in the Azure Policy safe deployment practices workflow.

Stapnummers voor stroomdiagrammen:

  1. Zodra u uw beleidsdefinitie hebt geselecteerd, wijst u het beleid toe op het hoogste bereik, inclusief alle implementatieringen. Pas resourceselectors toe om de toepasbaarheid te beperken tot de minst kritieke ring met behulp van de "kind": "resource location" eigenschap. Configureer de afdwingingsmodus van de toewijzing aan DoNotEnforce. Voorbeeldkiezer met eastUS locatie en enforcementMode als DoNotEnforce:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "enforcementMode": "DoNotEnforce"
    
  2. Zodra de toewijzing is geïmplementeerd en de initiële nalevingsscan is voltooid, controleert u of het nalevingsresultaat naar verwachting is.

    U moet ook geautomatiseerde tests configureren waarmee nalevingscontroles worden uitgevoerd. Een nalevingscontrole moet de volgende logica omvatten:

    • Nalevingsresultaten verzamelen
    • Als de nalevingsresultaten zijn zoals verwacht, moet de pijplijn doorgaan
    • Als de nalevingsresultaten niet zoals verwacht zijn, mislukt de pijplijn en moet u beginnen met foutopsporing

    U kunt de nalevingscontrole configureren met behulp van andere hulpprogramma's binnen uw CI/CD-pijplijn (continue integratie/continue implementatie).

    In elke implementatiefase moeten de statuscontroles van de toepassing de stabiliteit van de service en de impact van het beleid bevestigen. Als de resultaten niet zoals verwacht zijn vanwege de toepassingsconfiguratie, herstructureer dan de toepassing indien nodig.

    U kunt ook hersteltaken activeren om bestaande niet-compatibele resources te herstellen. Zorg ervoor dat de hersteltaken resources naar behoren in overeenstemming brengen.

  3. Herhaal dit door de eigenschapswaarden van de resourceselector uit te vouwen om de locaties van de volgende ring op te nemen en de verwachte nalevingsresultaten en de toepassingsstatus te valideren. Voorbeeldkiezer met een toegevoegde locatiewaarde:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS", "westUS"] 
      }]
    }]
    
  4. Zodra u het beleid hebt toegewezen aan alle ringen met behulp van de DoNotEnforce-modus , moet de pijplijn een taak activeren waarmee het beleid enforcementModewordt gewijzigd in Standaard inschakelen en de resourceselectors opnieuw instellen op de locatie die is gekoppeld aan Ring 0. Voorbeeldkiezer met één regio en effect ingesteld op weigeren:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "enforcementMode": "Default",
    
  5. Zodra het effect is gewijzigd, moeten geautomatiseerde tests controleren of handhaving plaatsvindt zoals verwacht.

  6. Herhaal dit door meer ringen op te slaan in de configuratie van de resourceselector.

  7. Herhaal dit proces voor alle productieringen.

Volgende stappen