Tester les modifications apportées aux règles d'administration avec Policy Simulator

Policy Simulator pour les règles d'administration vous permet de prévisualiser l'impact d'une nouvelle contrainte personnalisée ou d'une nouvelle règle d'administration qui applique une contrainte personnalisée avant qu'elle ne soit appliquée à votre environnement de production. Policy Simulator fournit une liste de ressources qui ne respectent pas la règle proposée avant qu'elle ne soit appliquée. Vous pouvez ainsi reconfigurer ces ressources, demander des exceptions ou modifier le champ d'application de votre règle d'administration, le tout sans perturber vos développeurs ni désactiver votre environnement.

Cette page explique comment tester une modification apportée à une règle d'administration à l'aide de Policy Simulator. Il explique également comment interpréter les résultats de la simulation et, si vous le souhaitez, appliquer la règle d'administration testée.

Avant de commencer

  • Si vous utilisez la Google Cloud CLI, définissez le projet que vous souhaitez utiliser pour effectuer des appels d'API:

    gcloud config set project PROJECT_ID

    Remplacez PROJECT_ID par le nom ou l'ID du projet.

  • Activer les API Policy Simulator and Resource Manager.

    Activer les API

  • Facultatif: Consultez une présentation du service de règles d'administration.

Rôles requis

Pour obtenir les autorisations nécessaires pour exécuter des simulations et accéder aux simulations, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur du simulateur OrgPolicy (roles/policysimulator.orgPolicyAdmin) au niveau de l'organisation. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient les autorisations nécessaires pour exécuter des simulations et y accéder. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour exécuter des simulations et y accéder:

  • orgpolicy.constraints.list
  • orgpolicy.customConstraints.get
  • orgpolicy.policies.list
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.listResource
  • cloudasset.assets.listOrgPolicy
  • policysimulator.orgPolicyViolationsPreviews.list
  • policysimulator.orgPolicyViolationsPreviews.get
  • policysimulator.orgPolicyViolationsPreviews.create
  • policysimulator.orgPolicyViolations.list

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Tester une modification de règle

Vous pouvez tester une modification apportée à une contrainte personnalisée, à une règle d'administration qui applique une contrainte personnalisée, ou aux deux en même temps.

Console

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page Règles d'administration

  2. Cliquez sur le sélecteur de projets en haut de la page.

  3. Dans le sélecteur de projet, choisissez la ressource pour laquelle vous souhaitez tester les modifications apportées à une règle d'administration. Pour tester les modifications apportées à une contrainte personnalisée, vous devez sélectionner une ressource d'organisation.

  4. Si vous souhaitez tester une nouvelle contrainte personnalisée, cliquez sur Contrainte personnalisée. Si vous souhaitez modifier une contrainte personnalisée existante, sélectionnez-la dans la liste de la page Règles d'administration, puis cliquez sur Modifier la contrainte.

  5. Créez ou mettez à jour la contrainte personnalisée que vous souhaitez tester.

    Par exemple, pour définir une contrainte personnalisée qui limite la création de ressources de cluster Google Kubernetes Engine lorsque l'autorisation binaire n'est pas activée, procédez comme suit:

    1. Dans la zone Type de ressource, sélectionnez container.googleapis.com/Cluster.

    2. Sous Méthode d'application, sélectionnez Appliquer lors de la création.

    3. Cliquez sur Modifier la condition.

    4. Dans le panneau Ajouter une condition, saisissez resource.binaryAuthorization.enabled == true.

    5. Cliquez sur Enregistrer.

    6. Sous Action, sélectionnez Autoriser.

    Pour en savoir plus, consultez la page Créer et gérer des contraintes personnalisées.

  6. Cliquez sur Tester la contrainte.

  7. S'il s'agit d'une nouvelle contrainte ou d'une contrainte qui n'est pas appliquée par une règle d'administration, vous devez définir la règle d'administration.

    1. Dans la zone Sélectionner un champ d'application, sélectionnez la ressource pour laquelle vous souhaitez tester cette contrainte personnalisée.

    2. Cliquez sur Personnaliser.

    3. Cliquez sur Ajouter une règle.

    4. Sous Application, sélectionnez Activé, puis cliquez sur OK.

    5. Cliquez sur Continuer.

La page Historique des simulations s'affiche. Elle contient la liste des simulations que vous avez effectuées au cours des 14 derniers jours. Pour en savoir plus, consultez les résultats du simulateur de stratégie sur cette page.

gcloud

  1. Pour tester une contrainte personnalisée, créez un fichier JSON ou YAML définissant la contrainte personnalisée à tester.

    Par exemple, une contrainte personnalisée qui limite la création de ressources de cluster Google Kubernetes Engine lorsque l'autorisation binaire n'est pas activée se présente comme suit:

    name: "organizations/ORGANIZATION_ID/customConstraints/custom.EnforceGKEBinaryAuthz"
    resource_types: "container.googleapis.com/Cluster"
    method_types: CREATE
    condition: "resource.binaryAuthorization.enabled == true"
    action_type: ALLOW
    

    Remplacez ORGANIZATION_ID par votre ID d'organisation, par exemple 1234567890123.

    Pour en savoir plus sur la création de contraintes personnalisées, consultez la page Créer et gérer des contraintes personnalisées.

  2. Pour tester une règle d'administration qui applique de manière conditionnelle une contrainte personnalisée basée sur l'existence d'un tag particulier, créez un fichier JSON ou YAML qui définit la règle d'administration que vous souhaitez tester.

    Par exemple, la règle d'administration suivante limite la création de ressources de cluster Google Kubernetes Engine lorsque l'autorisation binaire n'est pas activée, à l'exception des ressources associées au tag env=dev.

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
        rules:
       - condition:
           expression: resource.matchTag('env', 'dev')
         enforce: false
       - enforce: true
    

    Remplacez ORGANIZATION_ID par votre ID d'organisation, par exemple 1234567890123.

    Pour en savoir plus sur les règles d'administration conditionnelles, consultez la page Définir une règle d'administration avec des tags.

  3. Pour tester une règle d'administration qui applique une contrainte personnalisée, créez un fichier JSON ou YAML qui définit la règle d'administration que vous souhaitez tester.

    Par exemple, une règle d'administration qui limite la création de ressources de cluster Google Kubernetes Engine lorsque l'autorisation binaire n'est pas activée se présente comme suit:

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
        rules:
        - enforce: true
    

    Remplacez ORGANIZATION_ID par votre ID d'organisation, par exemple 1234567890123.

  4. Pour tester la suppression d'une règle d'administration qui applique une contrainte personnalisée, créez un fichier JSON ou YAML qui définit la règle d'administration, mais ne définit aucune règle, et hérite de la stratégie de sa ressource parente.

    Par exemple, la règle d'administration suivante simule la suppression d'une contrainte personnalisée custom.EnforceGKEBinaryAuthz existante.

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
          inheritFromParent: true
    
  5. Exécutez la commande suivante pour simuler la modification de la contrainte personnalisée, de la règle d'administration ou des deux:

    gcloud beta policy-intelligence simulate orgpolicy \
       --organization=ORGANIZATION_ID \
       --custom-constraints=CONSTRAINT_PATH \
       --policies=POLICY_PATH
    

Remplacez les éléments suivants :

  • ORGANIZATION_ID : ID de votre organisation (par exemple, 1234567890123). Il n'est pas possible de simuler des modifications dans plusieurs organisations.

  • CONSTRAINT_PATH: chemin d'accès complet à la contrainte personnalisée que vous avez créée ou mise à jour. Par exemple, tmp/constraint.yaml. Si vous définissez l'option --policies, vous n'avez pas besoin de définir l'option --custom-constraints.

  • POLICY_PATH: chemin d'accès complet à la règle d'administration que vous avez créée ou mise à jour. Par exemple, tmp/policy.yaml. Si vous définissez l'option --custom-constraints, vous n'avez pas besoin de définir l'option --policies.

Après quelques minutes, la commande affiche la liste des ressources qui ne respecteraient pas les modifications apportées à la contrainte personnalisée, à la règle d'administration ou aux deux.

Vous pouvez également consulter les résultats dans la console Google Cloud. Consultez la section Résultats du simulateur de stratégie sur cette page pour savoir comment lire les résultats.

Voici un exemple de réponse pour une simulation de règle d'administration. Cette simulation implique une contrainte personnalisée qui limite la création de ressources de cluster Google Kubernetes Engine lorsque l'autorisation binaire n'est pas activée. Dans ce cas, si la modification proposée était appliquée, deux ressources de cluster enfreindraient le règlement: orgpolicy-test-cluster pour le projet simulator-test-project et autopilot-cluster-1 pour le projet orgpolicy-test-0.

Waiting for operation [organizations/012345678901/locations/global/orgPolic
yViolationsPreviews/85be9a2d-8c49-470d-a65a-d0cb9ffa8f83/operations/1883a83
c-c448-42e5-a7c5-10a850928f06] to complete...done.
---
customConstraint:
  actionType: ALLOW
  condition: resource.binaryAuthorization.enabled == true
  methodTypes:
  - CREATE
  name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz
  resourceTypes:
  - container.googleapis.com/Cluster
name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/b9fd23a5-7163-46de-9fec-7b9aa6af1113
resource:
  ancestors:
  - organizations/012345678901
  - projects/456789012345
  assetType: container.googleapis.com/Cluster
  resource: //container.googleapis.com/projects/simulator-test-project/locations/us-central1/clusters/orgpolicy-test-cluster
---
customConstraint:
  actionType: ALLOW
  condition: resource.binaryAuthorization.enabled == true
  methodTypes:
  - CREATE
  name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz
  resourceTypes:
  - container.googleapis.com/Cluster
name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/e73896e6-7613-4a8d-8436-5df7a6455121
resource:
  ancestors:
  - organizations/012345678901
  - folders/789012345678
  - projects/456789012345
  assetType: container.googleapis.com/Cluster
  resource: //container.googleapis.com/projects/orgpolicy-test-0/locations/us-central1/clusters/autopilot-cluster-1

Résultats de Policy Simulator

Policy Simulator rapporte les résultats d'une modification dans une contrainte personnalisée ou une règle d'administration sous la forme d'une liste de cas de non-respect de la règle simulée. La console Google Cloud stocke les résultats des simulations que vous avez générées au cours des 14 derniers jours.

Pour afficher les résultats des simulations, accédez à la page Historique des simulations.

Accéder à l'historique des simulations

Sélectionnez une simulation pour afficher les détails. Sur la page Rapport de simulation, vous pouvez afficher l'aperçu des cas de non-conformité. Il indique le nombre total de cas de non-respect causés par la nouvelle contrainte personnalisée ou la nouvelle règle d'administration, le nombre de ressources vérifiées dans le champ d'application de la simulation et l'heure à laquelle la simulation s'est terminée.

Si vous avez simulé une contrainte personnalisée, vous pouvez cliquer sur Détails de la contrainte pour afficher la configuration spécifique simulée. Si vous avez simulé une règle d'administration, l'onglet Détails de la règle affiche la configuration simulée.

Tous les cas de non-conformité sont répertoriés dans le tableau des ressources. Chaque ressource qui ne respecte pas la nouvelle contrainte personnalisée ou la nouvelle règle d'administration est répertoriée avec un lien vers l'entrée de ressource dans l'inventaire des éléments cloud. Les ressources de projet, de dossier et d'organisation sont affichées avec la somme totale des ressources en dessous d'elles dans la hiérarchie qui ne respectent pas la nouvelle contrainte personnalisée ou la nouvelle règle d'administration.

Appliquer une modification de stratégie testée

Après avoir testé votre contrainte personnalisée, votre règle d'administration ou les deux, vous pouvez configurer la contrainte personnalisée et appliquer la règle d'administration. Vous pouvez afficher tous les résultats Policy Simulator dans la console Google Cloud, quelle que soit la façon dont ils ont été générés. Si votre rapport de simulation n'inclut des modifications que dans une seule règle d'administration, vous pouvez appliquer la règle d'administration directement via les résultats de la simulation. Pour tester des modifications dans plusieurs règles d'administration, utilisez la Google Cloud CLI.

Console

  1. Pour appliquer les résultats d'une contrainte personnalisée Policy Simulator, accédez à la page Historique des simulations.

    Accéder à l'historique des simulations

  2. Sélectionnez le rapport de simulation correspondant à la contrainte personnalisée ou à la règle d'administration que vous souhaitez appliquer.

  3. Si ce rapport de simulation inclut une contrainte personnalisée, cliquez sur Enregistrer la contrainte.

  4. Si ce rapport de simulation n'inclut des modifications que dans une seule règle d'administration, vous pouvez appliquer cette règle d'administration en tant que règle de simulation pour surveiller le comportement en production sans introduire de risque en sélectionnant Définir une règle de dry run. La page Détails des règles de la nouvelle page de règle d'administration s'affiche.

    Vous pouvez appliquer la règle d'administration immédiatement en cliquant sur , puis en sélectionnant Définir la règle.

gcloud

  1. Pour appliquer une contrainte personnalisée, vous devez la configurer de sorte qu'elle soit disponible pour les règles d'administration'administration de votre organisation. Pour configurer une contrainte personnalisée, utilisez la commande gcloud org-policies set-custom-constraint:

    gcloud org-policies set-custom-constraint CONSTRAINT_PATH
    

    Remplacez CONSTRAINT_PATH par le chemin d'accès complet à votre fichier de contrainte personnalisée. Par exemple, /home/user/customconstraint.yaml.

    Une fois l'opération terminée, votre contrainte personnalisée est disponible dans votre liste de règles d'administration Google Cloud.

  2. Pour appliquer une règle d'administration contenant une contrainte personnalisée, utilisez la commande gcloud org-policies set-policy:

    gcloud org-policies set-policy POLICY_PATH
    

    Remplacez POLICY_PATH par le chemin d'accès complet au fichier YAML de votre règle d'administration.

    La prise en compte de la règle peut prendre jusqu'à 15 minutes.

Enregistrer les résultats de simulation

Console

Si vous utilisez la console Google Cloud, vous pouvez enregistrer les résultats de Policy Simulator au format CSV.

  1. Pour enregistrer les résultats de Policy Simulator, accédez à la page Historique des simulations.

    Accéder à l'historique des simulations

  2. Sélectionnez le rapport de simulation que vous souhaitez enregistrer.

  3. Cliquez sur Exporter les résultats complets.

gcloud

Si vous utilisez la gcloud CLI, vous pouvez enregistrer les résultats de Policy Simulator sous forme de fichiers JSON ou YAML.

Par défaut, les résultats des tests dans Google Cloud CLI sont générés au format YAML. Pour enregistrer un résultat de test sous forme de fichier YAML, redirigez le résultat de la commande simulate orgpolicy lors de l'exécution de la simulation:

> FILENAME

Remplacez FILENAME par le nom du fichier de sortie.

Pour enregistrer un résultat de test dans un fichier JSON, ajoutez l'indicateur suivant à la commande simulate orgpolicy lors de l'exécution de la simulation:

--format=json > FILENAME

Remplacez FILENAME par le nom du fichier de sortie.

Étapes suivantes