Déploiement sécurisé des affectations Azure Policy
À mesure que votre environnement se développe, la demande d’un pipeline de déploiement continu contrôlé (CD) avec contrôle progressif de l’exposition est de plus en plus importante. Par conséquent, Microsoft recommande aux équipes DevOps de suivre l’infrastructure des pratiques de déploiement sécurisé (SDP). Le déploiement sécurisé de définitions et d’affectations de Azure Policy permet de limiter l’impact des comportements inattendus des ressources de stratégie.
L’approche générale de l’implémentation de SDP avec Azure Policy consiste à déployer progressivement des affectations de stratégie par boucles pour détecter les modifications de stratégie qui affectent l’environnement dans les premières phases avant d’affecter l’infrastructure cloud critique.
Les boucles de déploiement peuvent être organisées de différentes manières. Dans ce tutoriel pratique, les anneaux sont divisés par différentes régions Azure, avec Ring 0 représentant des emplacements non critiques et à faible trafic et Ring 5 indiquant les emplacements de trafic les plus critiques et les plus élevés.
Étapes pour un déploiement sécurisé des affectations de Azure Policy avec des effets de refus ou d’ajout
Utilisez l’organigramme suivant comme référence lorsque nous travaillons à l’application de l’infrastructure SDP à Azure Policy affectations qui utilisent les effets de stratégie deny
ouappend
.
Notes
Pour en savoir plus sur les effets de stratégie Azure, consultez Comprendre le fonctionnement des effets.
Numéros d’étape de l’organigramme :
Après avoir sélectionnez votre définition de stratégie, affectez la stratégie à l’étendue la plus élevée, y compris toutes les boucles de déploiement. Appliquez des sélecteurs de ressources pour restreindre l’applicabilité à la boucle la moins critique à l’aide de la
"kind": "resource location"
propriété . Configurez leaudit
type d’effet à l’aide de remplacements d’affectation. Exemple de sélecteur avec l’emplacementeastUS
et l’effet en tant qu’audit
:"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "overrides":[{ "kind": "policyEffect", "value": "Audit" }]
Une fois l’affectation déployée et l’analyse de conformité initiale terminée, vérifiez que le résultat de conformité est conforme aux attentes.
Vous devez également configurer des tests automatisés qui exécutent des vérifications de conformité. Une case activée de conformité doit englober la logique suivante :
- Collecter les résultats de conformité
- Si les résultats de conformité sont comme prévu, le pipeline doit continuer
- Si les résultats de conformité ne sont pas comme prévu, le pipeline doit échouer et vous devez commencer le débogage
Par exemple, vous pouvez configurer la vérification de conformité à l’aide d’autres outils au sein de votre pipeline d’intégration continue/déploiement continu (CI/CD) particulier.
À chaque étape de déploiement, les vérifications d’intégrité de l’application doivent confirmer la stabilité du service et l’impact de la stratégie. Si les résultats ne sont pas comme prévu en raison de la configuration de l’application, refactorisez l’application comme il convient.
Répétez en développant les valeurs de propriété du sélecteur de ressources pour inclure les boucles suivantes. emplacements et validation des résultats de conformité attendus et de l’intégrité de l’application. Exemple de sélecteur avec une valeur d’emplacement ajoutée :
"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS", "westUS"] }] }]
Une fois que vous avez correctement attribué la stratégie à toutes les boucles à l’aide
audit
du mode , le pipeline doit déclencher une tâche qui modifie l’effetdeny
de stratégie et réinitialise les sélecteurs de ressources à l’emplacement associé à Ring 0. Exemple de sélecteur avec une région et un jeu d’effets à refuser :"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "overrides":[{ "kind": "policyEffect", "value": "Deny" }]
Une fois l’effet modifié, les tests automatisés doivent case activée si l’application a lieu comme prévu.
Répétez cette opération en incluant d’autres boucles dans la configuration de votre sélecteur de ressources.
Répétez ce processus pour toutes les boucles de production.
Étapes de déploiement sécurisé des affectations de Azure Policy avec des effets de modification ou de déploiementIfNotExists
Les étapes des stratégies utilisant les effets modify
ou deployIfNotExists
sont similaires aux étapes expliquées précédemment avec l’action supplémentaire consistant à utiliser le mode d’application, puis à déclencher une tâche de correction.
Passez en revue l’organigramme suivant avec les étapes modifiées 5 à 9 :
Numéros d’étape de l’organigramme :
Après avoir sélectionnez votre définition de stratégie, affectez la stratégie à l’étendue la plus élevée, y compris toutes les boucles de déploiement. Appliquez des sélecteurs de ressources pour restreindre l’applicabilité à la boucle la moins critique à l’aide de la
"kind": "resource location"
propriété . Configurez le mode d’application de l’affectation sur DoNotEnforce. Sélecteur échantillon avec l’emplacementeastUS
et enforcementMode défini sur DoNotEnforce:"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "enforcementMode": "DoNotEnforce"
Une fois l’affectation déployée et l’analyse de conformité initiale terminée, vérifiez que le résultat de conformité est conforme aux attentes.
Vous devez également configurer des tests automatisés qui exécutent des vérifications de conformité. Une case activée de conformité doit englober la logique suivante :
- Collecter les résultats de conformité
- Si les résultats de conformité sont comme prévu, le pipeline doit continuer
- Si les résultats de conformité ne sont pas comme prévu, le pipeline doit échouer et vous devez commencer le débogage
Vous pouvez configurer la vérification de conformité à l’aide d’autres outils au sein de votre pipeline d’intégration continue/de déploiement continu (CI/CD).
À chaque étape de déploiement, les vérifications d’intégrité de l’application doivent confirmer la stabilité du service et l’impact de la stratégie. Si les résultats ne sont pas comme prévu en raison de la configuration de l’application, refactorisez l’application comme il convient.
Vous pouvez également déclencher des tâches de correction pour corriger les ressources non conformes existantes. Vérifiez que les tâches de correction mettent les ressources en conformité comme prévu.
Répétez cette opération en développant les valeurs de propriété du sélecteur de ressources pour inclure les emplacements des boucles suivantes, puis en validant les résultats de conformité et l’intégrité de l’application attendus. Exemple de sélecteur avec une valeur d’emplacement ajoutée :
"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS", "westUS"] }] }]
Une fois que vous avez correctement attribué la stratégie à toutes les boucles à l’aide du mode DoNotEnforce, le pipeline doit déclencher une tâche qui redéfinit la stratégie
enforcementMode
sur l’activation Par défaut, puis réinitialise les sélecteurs de ressources à l’emplacement associé à la boucle 0. Exemple de sélecteur avec une région et un jeu d’effets à refuser :"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "enforcementMode": "Default",
Une fois l’effet modifié, les tests automatisés doivent case activée si l’application a lieu comme prévu.
Répétez cette opération en incluant d’autres boucles dans la configuration de votre sélecteur de ressources.
Répétez ce processus pour toutes les boucles de production.
Étapes de mise à jour sécurisée de la version de définition intégrée dans l’affectation Azure Policy
Dans l’affectation existante, appliquez des overrides afin de mettre à jour la version de la définition pour l’anneau le moins critique. Nous utilisons une combinaison d’overrides pour modifier définitionVersion et des selectors dans la condition doverrides pour limiter l’applicabilité par la propriété
"kind": "resource location"
. Toutes les ressources qui se trouvent en dehors des emplacements spécifiés continueront d’être évaluées par rapport à la version de la propriétédefinitionVersion
de niveau supérieur dans l’affectation. L’exemple suivant ignore la mise à jour de la version de la définition vers2.0.*
et l’applique uniquement aux ressources dansEastUs
."overrides":[{ "kind": "definitionVersion", "value": "2.0.*", "selectors": [{ "kind": "resourceLocation", "in": [ "eastus"] }] }]
Une fois l’affectation mise à jour et l’analyse de conformité initiale terminée, vérifiez que le résultat de conformité est conforme aux attentes.
Vous devez également configurer des tests automatisés qui exécutent des vérifications de conformité. Une case activée de conformité doit englober la logique suivante :
- Collecter les résultats de conformité
- Si les résultats de conformité sont comme prévu, le pipeline doit continuer
- Si les résultats de conformité ne sont pas comme prévu, le pipeline doit échouer et vous devez commencer le débogage
Par exemple, vous pouvez configurer la vérification de conformité à l’aide d’autres outils au sein de votre pipeline d’intégration continue/déploiement continu (CI/CD) particulier.
À chaque étape de déploiement, les vérifications d’intégrité de l’application doivent confirmer la stabilité du service et l’impact de la stratégie. Si les résultats ne sont pas comme prévu en raison de la configuration de l’application, refactorisez l’application comme il convient.
Répétez en développant les valeurs de propriété du sélecteur de ressources pour inclure les boucles suivantes. emplacements et validation des résultats de conformité attendus et de l’intégrité de l’application. Exemple avec une valeur d’emplacement ajoutée :
"overrides":[{ "kind": "definitionVersion", "value": "2.0", "selectors": [{ "kind": "resourceLocation", "in": [ "eastus", "westus"] }] }]
Une fois que vous avez correctement inclus tous les emplacements nécessaires dans les _selectors, vous pouvez supprimer la substitution et mettre à jour la propriété definitionVersion dans l’affectation :
"properties": {
"displayName": "Enforce resource naming rules",
"description": "Force resource names to begin with DeptA and end with -LC",
"definitionVersion": "2.0.*",
}
Étapes suivantes
- Apprenez comment créer des stratégies par programmation.
- Evaluez les workflows Azure Policy en tant que code.
- Étudiez les conseils de Microsoft concernant les pratiques de déploiement sécurisé.
- Veuillez consulter la rubrique Corriger les ressources non conformes avec Azure Policy.