Concevoir des workflows de type Policy as CodeDesign Policy as Code workflows

Au fil de votre progression dans la gouvernance cloud, vous allez chercher à passer de la gestion manuelle de chacune des définitions de stratégies sur le Portail Azure ou à l’aide des différents kits de développement logiciel (SDK) à un processus plus gérable et reproductible à l’échelle de l’entreprise.As you progress on your journey with Cloud Governance, you'll want to shift from manually managing each policy definition in the Azure portal or through the various SDKs to something more manageable and repeatable at enterprise scale. Voici deux des approches prédominantes de la gestion des systèmes à grande échelle dans le cloud :Two of the predominant approaches to managing systems at scale in the cloud are:

  • Infrastructure as Code : pratique consistant à traiter en tant que code source tout le contenu qui définit les environnements, des modèles Resource Manager aux définitions Azure Policy en passant par Azure Blueprints.Infrastructure as Code: The practice of treating the content that defines your environments, everything from Resource Manager templates to Azure Policy definitions to Azure Blueprints, as source code.
  • DevOps : rassemblement des personnes, des processus et des produits qui permettent une livraison continue de valeur ajoutée aux clients finaux.DevOps: The union of people, process, and products to enable continuous delivery of value to our end users.

Le Policy as Code (« stratégie sous forme de code ») est la combinaison de ces idées.Policy as Code is the combination of these ideas. Pour l’essentiel, vous conservez vos définitions de stratégies dans le contrôle de code source, et testez et validez chaque modification effectuée.Essentially, keep your policy definitions in source control and whenever a change is made, test and validate that change. Toutefois, l’implication des stratégies avec l’Infrastructure as Code ou le DevOps ne devrait pas s’arrêter là.However, that shouldn't be the extent of policies involvement with Infrastructure as Code or DevOps.

L’étape de validation devrait également être un composant d’autres workflows d’intégration continue ou de déploiement continu.The validation step should also be a component of other continuous integration or continuous deployment workflows. Citons notamment le déploiement d’un environnement d’application ou d’une infrastructure virtuelle.Examples include deploying an application environment or virtual infrastructure. En faisant de la validation Azure Policy l’un des premiers composants du processus de build et de déploiement, les équipes chargées des applications et des opérations détectent si leurs modifications ne sont pas conformes bien avant qu’il ne soit trop tard et qu’il faille les déployer en production.By making Azure Policy validation an early component of the build and deployment process the application and operations teams discover if their changes are non-complaint, long before it's too late and they're attempting to deploy in production.

Vue d’ensemble du workflowWorkflow overview

Le workflow Policy as Code général recommandé se présente comme ce diagramme :The recommended general workflow of Policy as Code looks like this diagram:

Vue d’ensemble du workflow de type Policy as Code

Créer et mettre à jour des définitions de stratégiesCreate and update policy definitions

Les définitions de stratégies sont créées avec des fichiers JSON et stockées dans le contrôle de code source.The policy definitions are created using JSON, and stored in source control. Chaque stratégie possède son propre ensemble de fichiers (paramètres, règles et paramètres d’environnement) qui doivent être stockés dans le même dossier.Each policy has it's own set of files, such as the parameters, rules, and environment parameters, that should be stored in the same folder. Nous vous recommandons la structure suivante pour conserver vos définitions de stratégies dans le contrôle de code source.The following structure is a recommended way of keeping your policy definitions in source control.

.
|
|- policies/  ________________________ # Root folder for policies
|  |- policy1/  ______________________ # Subfolder for a policy
|     |- policy.json _________________ # Policy definition
|     |- policy.parameters.json ______ # Policy definition of parameters
|     |- policy.rules.json ___________ # Policy rule
|     |- params.dev.json _____________ # Parameters for a Dev environment
|     |- params.prd.json _____________ # Parameters for a Prod environment
|     |- params.tst.json _____________ # Parameters for a Test environment
|
|  |- policy2/  ______________________ # Subfolder for a policy
|     |- policy.json _________________ # Policy definition
|     |- policy.parameters.json ______ # Policy definition of parameters
|     |- policy.rules.json ___________ # Policy rule
|     |- params.dev.json _____________ # Parameters for a Dev environment
|     |- params.prd.json _____________ # Parameters for a Prod environment
|     |- params.tst.json _____________ # Parameters for a Test environment
|

Lorsqu’une stratégie est mise à jour ou qu’une nouvelle est ajoutée, le workflow doit automatiquement mettre à jour la définition de stratégie dans Azure.When a new policy is added or an existing one updated, the workflow should automatically update the policy definition in Azure. Le test de la définition de stratégie ajoutée ou mise à jour sera effectué dans une étape ultérieure.Testing of the new or updated policy definition comes in a later step.

Créer et mettre à jour des définitions d’initiativesCreate and update initiative definitions

De même, les initiatives ont leur propre fichier JSON et les fichiers associés qui doivent être stockés dans le même dossier.Likewise, initiatives have their own JSON file and related files that should be stored in the same folder. La définition de l’initiative exige que la définition de stratégie existe déjà. Vous ne pouvez donc pas la créer ni la mettre à jour tant que la source de la stratégie n’a pas été mise à jour dans le contrôle de code source, puis dans Azure.The initiative definition requires the policy definition to already exist, so can't be created or updated until the source for the policy has been updated in source control and then updated in Azure. Nous vous recommandons la structure suivante pour conserver vos définitions d’initiatives dans le contrôle de code source :The following structure is a recommended way of keeping your initiative definitions in source control:

.
|
|- initiatives/ ______________________ # Root folder for initiatives
|  |- init1/ _________________________ # Subfolder for an initiative
|     |- policyset.json ______________ # Initiative definition
|     |- policyset.definitions.json __ # Initiative list of policies
|     |- policyset.parameters.json ___ # Initiative definition of parameters
|     |- params.dev.json _____________ # Parameters for a Dev environment
|     |- params.prd.json _____________ # Parameters for a Prod environment
|     |- params.tst.json _____________ # Parameters for a Test environment
|
|  |- init2/ _________________________ # Subfolder for an initiative
|     |- policyset.json ______________ # Initiative definition
|     |- policyset.definitions.json __ # Initiative list of policies
|     |- policyset.parameters.json ___ # Initiative definition of parameters
|     |- params.dev.json _____________ # Parameters for a Dev environment
|     |- params.prd.json _____________ # Parameters for a Prod environment
|     |- params.tst.json _____________ # Parameters for a Test environment
|

Comme pour les définitions de stratégies, à l’ajout ou la mise à jour d’une initiative existante, le workflow doit automatiquement mettre à jour la définition d’initiative dans Azure.Like policy definitions, when adding or updating an existing initiative, the workflow should automatically update the initiative definition in Azure. Le test de la définition d’initiative ajoutée ou mise à jour sera effectué dans une étape ultérieure.Testing of the new or updated initiative definition comes in a later step.

Tester et valider la définition mise à jourTest and validate the updated definition

Maintenant que l’automatisation s’est occupée des définitions de stratégies ou d’initiatives créées ou mises à jour et a effectué la mise à jour sur l’objet dans Azure, il est temps de tester les modifications apportées.Once automation has taken your newly created or updated policy or initiative definitions and made the update to the object in Azure, it's time to test the changes that were made. La stratégie ou la (ou les) initiative(s) à laquelle (auxquelles) elle appartient doit ensuite être affectée aux ressources de l’environnement le plus éloigné de la production,Either the policy or the initiative(s) it's part of should then be assigned to resources in the environment farthest from production. généralement Dev.This environment is typically Dev.

L’affectation doit utiliser enforcementMode disabled afin que la création et la mise à jour des ressources ne soient pas bloquées, mais que la conformité des ressources existantes à la définition de stratégie mise à jour soit toujours auditée.The assignment should use enforcementMode of disabled so that resource creation and updates aren't blocked, but that existing resources are still audited for compliance to the updated policy definition. Même avec enforcementMode, il est recommandé que l’étendue d’affectation soit un groupe de ressources ou un abonnement servant spécialement à valider des stratégies.Even with enforcementMode, it's recommended that the assignment scope is either a resource group or a subscription that is specifically used for validating policies.

Notes

Si enforcementMode est utile, il ne remplace pas pour autant un test rigoureux d’une définition de stratégie dans différentes conditions.While enforcement mode is helpful, it's not a replacement for thoroughly testing a policy definition under various conditions. La définition de stratégie doit être testée avec des appels d’API REST PUT et PATCH, des ressources conformes et non conformes, ainsi que des cas limites comme une propriété manquantes dans la ressource.The policy definition should be tested with PUT and PATCH REST API calls, compliant and non-compliant resources, and edge cases like a property missing from the resource.

Une fois l’affectation déployée, utilisez le kit SDK Policy pour récupérer ses données de conformité.After the assignment is deployed, use the Policy SDK to get compliance data for the new assignment. L’environnement servant à tester les stratégies et les affectations doit comporter à la fois des ressources conformes et des ressources non conformes.The environment used to test the policies and assignments should have both compliant and non-compliant resources. À l’instar d’un bon test unitaire pour le code, il est important de vérifier que les ressources sont bien celles escomptées et qu’il n’y a pas de faux positifs ou de faux négatifs.Like a good unit test for code, you want to test that resources are as expected and that you also have no false-positives or false-negatives. Si vous vous contentez de tester et de valider ce que vous attendez, la stratégie risque d’avoir un impact imprévu et non identifié.If you test and validate only for what you expect, there may be unexpected and unidentified impact from the policy. Pour plus d’informations, voir Évaluer l’impact d’une nouvelle stratégie Azure.For more information, see Evaluate the impact of a new Azure policy.

Activer les tâches de correctionEnable remediation tasks

Si la validation de l’affectation répond aux attentes, il s’agit ensuite de valider la correction.If validation of the assignment meets expectations, the next step is to validate remediation. Les stratégies qui utilisent deployIfNotExists ou modify peuvent être transformées en une tâche de correction des ressources non conformes.Policies that use either deployIfNotExists or modify may be turned into a remediation task and correct resources from a non-compliant state.

La première étape consiste à accorder à l’affectation de stratégie l’attribution de rôle définie dans la définition de stratégie.The first step to doing this is to grant the policy assignment the role assignment defined in the policy definition. Cette attribution de rôle accorde à l’identité managée de l’affectation de stratégie des droits suffisants pour apporter les modifications permettant de rendre la ressource conforme.This role assignment gives the policy assignment managed identity enough rights to make the needed changes to make the resource compliant.

Dès que l’affectation de stratégie dispose des autorisations nécessaires, utilisez le kit SDK Policy pour déclencher une tâche de correction sur un ensemble de ressources connues pour être non conformes.Once the policy assignment has appropriate rights, use the Policy SDK to trigger a remediation task against a set of resources that are known to be non-compliant. Avant de continuer, trois tests doivent être effectués sur ces tâches corrigées :Three tests should be completed against these remediated tasks before proceeding:

  • Vérifier que la tâche de correction a réussiValidate that the remediation task completed successfully
  • Exécuter l’évaluation de la stratégie pour voir si les résultats de conformité de la stratégie ont été mis à jour comme prévuRun policy evaluation to see that policy compliance results are updated as expected
  • Exécuter un test unitaire d’environnement directement sur les ressources pour vérifier que leurs propriétés ont changéRun an environment unit test against the resources directly to validate their properties have changed

Le fait de tester à la fois les résultats de l’évaluation de la stratégie mise à jour et l’environnement lui-même permet de confirmer que les tâches de correction ont changé ce qui était attendu et que la définition de stratégie a constaté la modification de conformité comme prévu.Testing both the updated policy evaluation results and the environment directly provide confirmation that the remediation tasks changed what was expected and that the policy definition saw the compliance change as expected.

Mettre à jour pour appliquer les affectationsUpdate to enforced assignments

Une fois toutes les épreuves de validation effectuées, mettez à jour l’affectation pour utiliser enforcementMode enabled.After all validation gates have completed, update the assignment to use enforcementMode of enabled. Cette modification doit de préférence être effectuée au départ dans le même environnement éloigné de la production.This change should initially be made in the same environment far from production. Après vérification que cet environnement fonctionne comme prévu, la modification doit être étendue de façon à inclure l’environnement suivant, et ainsi de suite jusqu’à ce que la stratégie soit déployée sur les ressources de production.Once that environment is validated as working as expected, the change should then be scoped to include the next environment and so on until the policy is deployed to production resources.

Traiter les évaluations intégréesProcess integrated evaluations

Le workflow Policy as Code général vise à développer et à déployer des stratégies et des initiatives dans un environnement à grande échelle.The general workflow for Policy as Code is for developing and deploying policies and initiatives to an environment at scale. Toutefois, l’évaluation de la stratégie doit faire partie du processus de déploiement de tous les workflows qui déploient ou créent des ressources dans Azure, par exemple le déploiement d’applications ou l’exécution de modèles Resource Manager dans le but de créer une infrastructure.However, policy evaluation should be part of the deployment process for any workflow that deploys or creates resources in Azure, such as deploying applications or running Resource Manager templates to create infrastructure.

Dans ce cas, une fois le déploiement de l’application ou de l’infrastructure effectué sur un abonnement ou un groupe de ressources de test, l’évaluation de la stratégie doit être effectuée pour cette validation de toutes les stratégies et initiatives existantes.In these cases, after the application or infrastructure deployment is done to a test subscription or resource group, policy evaluation should be done for that scope checking validation of all existing policies and initiatives. Bien qu’elles puissent être configurées comme enforcementMode disabled dans un environnement de ce type, il est utile de savoir très vite si le déploiement d’une application ou d’une infrastructure est contraire aux définitions de stratégies.While they may be configured as enforcementMode disabled in such an environment, it's useful to know early if an application or infrastructure deployment is in violation of policy definitions early. Cette évaluation de stratégie doit donc constituer une étape de ces workflows et faire échouer les déploiements qui créent des ressources non conformes.This policy evaluation should therefore be a step in those workflows, and fail deployments that create non-compliant resources.

RévisionReview

Cet article traite du workflow Policy as Code général et explique que l’évaluation de la stratégie doit faire partie d’autres workflows de déploiement.This article covers the general workflow for Policy as Code and also where policy evaluation should be part of other deployment workflows. Ce workflow peut être utilisé dans n’importe quel environnement prenant en charge les scripts et l’automatisation par déclencheurs.This workflow can be used in any environment that supports scripted steps and automation based on triggers.

Étapes suivantesNext steps