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.
Stapnummers voor stroomdiagrammen:
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 hetaudit
effecttype met behulp van toewijzingsoverschrijvingen. Voorbeeldkiezer meteastUS
locatie en effect alsaudit
:"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "overrides":[{ "kind": "policyEffect", "value": "Audit" }]
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.
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"] }] }]
Zodra u het beleid hebt toegewezen aan alle ringen met behulp van
audit
de modus, moet de pijplijn een taak activeren waarmee het beleidseffectdeny
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" }]
Zodra het effect is gewijzigd, moeten geautomatiseerde tests controleren of handhaving plaatsvindt zoals verwacht.
Herhaal dit door meer ringen op te slaan in de configuratie van de resourceselector.
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:
Stapnummers voor stroomdiagrammen:
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 meteastUS
locatie en enforcementMode als DoNotEnforce:"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "enforcementMode": "DoNotEnforce"
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.
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"] }] }]
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",
Zodra het effect is gewijzigd, moeten geautomatiseerde tests controleren of handhaving plaatsvindt zoals verwacht.
Herhaal dit door meer ringen op te slaan in de configuratie van de resourceselector.
Herhaal dit proces voor alle productieringen.
Stappen voor het veilig bijwerken van de ingebouwde definitieversie binnen Azure Policy-toewijzing
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 hetdefinitionVersion
hoogste niveau in de toewijzing. Voorbeeld van het overschrijven van het bijwerken van de versie van de definitie2.0.*
op en pas deze alleen toe op resources inEastUs
."overrides":[{ "kind": "definitionVersion", "value": "2.0.*", "selectors": [{ "kind": "resourceLocation", "in": [ "eastus"] }] }]
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.
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"] }] }]
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
- Meer informatie over het programmatisch maken van beleid.
- Controleer Azure Policy als codewerkstromen.
- Onderzoek de richtlijnen van Microsoft met betrekking tot veilige implementatieprocedures.
- Controleer niet-compatibele resources herstellen met Azure Policy.