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.

Organigramme avec les étapes numérotées de un à huit montrant les méthodes de déploiements sécurisés du déploiement d’une nouvelle définition de stratégie Azure.

Numéros d’étape de l’organigramme :

  1. 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 audit type d’effet à l’aide de remplacements d’affectation. Exemple de sélecteur avec l’emplacement eastUS et l’effet en tant qu’audit :

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "overrides":[{ 
      "kind": "policyEffect", 
      "value": "Audit" 
    }] 
    
  2. 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.

  3. 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"] 
      }]
    }]
    
  4. 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’effet deny 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" 
    }] 
    
  5. Une fois l’effet modifié, les tests automatisés doivent case activée si l’application a lieu comme prévu.

  6. Répétez cette opération en incluant d’autres boucles dans la configuration de votre sélecteur de ressources.

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

Organigramme montrant les étapes 5 à 9 du déroulement de la méthode sécurisée du déploiement de stratégie Azure.

Numéros d’étape de l’organigramme :

  1. 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’emplacement eastUS et enforcementMode défini sur DoNotEnforce:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "enforcementMode": "DoNotEnforce"
    
  2. 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.

  3. 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"] 
      }]
    }]
    
  4. 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 enforcementModesur 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",
    
  5. Une fois l’effet modifié, les tests automatisés doivent case activée si l’application a lieu comme prévu.

  6. Répétez cette opération en incluant d’autres boucles dans la configuration de votre sélecteur de ressources.

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

  1. 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 vers 2.0.* et l’applique uniquement aux ressources dans EastUs.

    "overrides":[{ 
      "kind": "definitionVersion", 
      "value": "2.0.*",
      "selectors": [{
        "kind": "resourceLocation",
        "in": [ "eastus"]
      }]
    }] 
    
  2. 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.

  3. 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"]
      }]
    }] 
    
  4. 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