Share via


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 geleidelijk implementeren van beleidstoewijzingen door ringen om beleidswijzigingen te detecteren die van invloed zijn op de omgeving in vroege fasen 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.

Stroomdiagram met stap 1 tot en met acht met de implementatie van veilige implementatieprocedures van een nieuwe Azure Policy-definitie.

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:

Stroomdiagram met stap 5 tot en met 9 in de werkstroom veilige implementatieprocedures van Azure Policy.

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 enforcementMode wordt 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.

Stappen voor het veilig bijwerken van de ingebouwde definitieversie binnen Azure Policy-toewijzing

  1. Pas binnen de bestaande toewijzing onderdrukkingen toe om de versie van de definitie voor de minst kritieke ring bij te werken. We gebruiken een combinatie van onderdrukkingen om de definitionVersion en selectors binnen de overschrijvingsvoorwaarde te wijzigen om de toepasbaarheid "kind": "resource location" per eigenschap te beperken. Alle resources die zich buiten de opgegeven locaties bevinden, worden nog steeds beoordeeld op basis van de versie van de eigenschap op het definitionVersion hoogste niveau in de toewijzing. Voorbeeld van het overschrijven van het bijwerken van de versie van de definitie 2.0.* op en pas deze alleen toe op resources in EastUs.

    "overrides":[{ 
      "kind": "definitionVersion", 
      "value": "2.0.*",
      "selectors": [{
        "kind": "resourceLocation",
        "in": [ "eastus"]
      }]
    }] 
    
  2. Zodra de toewijzing is bijgewerkt en de eerste 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. Voorbeeld met een toegevoegde locatiewaarde:

     "overrides":[{ 
      "kind": "definitionVersion", 
      "value": "2.0",
      "selectors": [{
        "kind": "resourceLocation",
        "in": [ "eastus", "westus"]
      }]
    }] 
    
  4. Zodra u alle benodigde locaties in de _selectors hebt opgenomen, kunt u de onderdrukking verwijderen en de eigenschap definitionVersion bijwerken binnen de toewijzing:

"properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "definitionVersion": "2.0.*",
}

Volgende stappen