Tester les modifications apportées aux règles d'administration à l'aide de 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 règle d'administration qui applique une contrainte personnalisée ou gérée avant qu'elle ne soit appliquée dans votre environnement de production. Policy Simulator fournit une liste des ressources qui enfreignent la règle proposée avant qu'elle ne soit appliquée. Vous pouvez ainsi les reconfigurer, demander des exceptions ou modifier le champ d'application de votre règle d'administration, le tout sans perturber vos développeurs ni interrompre votre environnement.

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

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.

  • Enable the Policy Simulator and Resource Manager APIs.

    Enable the APIs

  • Facultatif: Découvrez la présentation du service de règles d'administration.

Rôles requis

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

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

Autorisations requises

Vous devez disposer des autorisations suivantes pour exécuter et accéder aux simulations:

  • 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 d'une contrainte personnalisée, d'une règle d'administration qui applique une contrainte personnalisée ou gérée, ou les deux à la fois.

Tester une modification apportée à une contrainte personnalisée

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 projets, sélectionnez la ressource de votre 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 non appliquée par une règle d'administration, vous devez définir la règle d'administration.

    1. Dans la zone Sélectionner le champ d'application, sélectionnez la ressource pour laquelle vous souhaitez tester la 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, avec une liste des simulations que vous avez effectuées au cours des 14 derniers jours. Pour en savoir plus, consultez la section Résultats de Policy Simulator sur cette page.

gcloud

  1. Pour tester une contrainte personnalisée, créez un fichier JSON ou YAML qui définit la contrainte personnalisée que vous souhaitez 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 est semblable à la suivante:

    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 l'ID de votre 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 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'organisation qui limite la création de ressources de cluster Google Kubernetes Engine lorsque l'autorisation binaire n'est pas activée est semblable à la suivante:

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

      Remplacez ORGANIZATION_ID par l'ID de votre organisation, par exemple 1234567890123.

    • Vous pouvez tester une règle d'administration qui applique une contrainte personnalisée de manière conditionnelle en fonction de l'existence d'un tag particulier en incluant une condition dans le fichier JSON ou YAML qui définit la règle d'administration.

      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, sauf pour les ressources auxquelles le tag env=dev est associé.

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

      Remplacez ORGANIZATION_ID par l'ID de votre organisation, par exemple 1234567890123.

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

    • Vous pouvez tester l'effet de la suppression d'une règle d'administration qui applique une contrainte personnalisée en créant un fichier JSON ou YAML qui définit la règle d'administration sans règles définies, sauf pour hériter de la règle de sa ressource parente.

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

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

    gcloud 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). La simulation de modifications sur plusieurs organisations n'est pas possible.

  • 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'indicateur --policies, vous n'avez pas besoin de définir l'indicateur --custom-constraints.

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

Après plusieurs 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.

Les résultats sont également visibles dans la console Google Cloud. Pour savoir comment lire les résultats, consultez la section Résultats de Policy Simulator sur cette page.

Voici un exemple de réponse pour une simulation de stratégie d'organisation. 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 ne respecteraient pas la stratégie: orgpolicy-test-cluster sous le projet simulator-test-project et autopilot-cluster-1 sous 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

Tester une modification apportée à une contrainte gérée

Console

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

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

  1. Dans le sélecteur de projets, sélectionnez le projet, le dossier ou l'organisation dont vous souhaitez modifier la règle d'administration.

  2. La page Règles d'administration affiche une liste filtrable des contraintes de règles d'administration disponibles pour cette ressource.

  3. Dans la liste, sélectionnez la contrainte gérée pour laquelle vous souhaitez mettre à jour la règle d'administration. Sur la page Détails de la règle, vous pouvez voir la source de cette règle d'administration, l'évaluation effective de la règle sur cette ressource et plus d'informations sur la contrainte gérée.

  4. Pour mettre à jour la règle d'administration pour cette ressource, cliquez sur Gérer la règle.

  5. Sur la page Modifier la règle, sélectionnez Remplacer la règle parente.

  6. Sélectionnez Ajouter une règle.

  7. Sous Application, indiquez si l'application de cette règle d'administration doit être activée ou désactivée.

  8. Pour rendre la règle d'administration conditionnelle sur un tag, cliquez sur Ajouter une condition. Si vous ajoutez une règle conditionnelle à une règle d'administration, vous devez ajouter au moins une règle inconditionnelle, sinon la règle ne pourra pas être enregistrée. Pour en savoir plus, consultez Définir une règle d'administration avec des tags.

  9. Cliquez sur Tester les modifications.

La page Historique des simulations s'affiche, avec une liste des simulations que vous avez effectuées au cours des 14 derniers jours. Pour en savoir plus, consultez la section Résultats de Policy Simulator sur cette page.

gcloud

  1. Pour tester une modification apportée à une contrainte gérée, créez un fichier JSON ou YAML qui définit la contrainte gérée que vous souhaitez tester.

    name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - enforce: ENFORCEMENT_STATE
    

    Remplacez les éléments suivants :

    • RESOURCE_TYPE avec organizations, folders ou projects.

    • RESOURCE_ID avec l'ID de l'organisation, l'ID du dossier, l'ID du projet ou le numéro du projet, en fonction du type de ressource spécifié dans RESOURCE_TYPE.

    • CONSTRAINT_NAME par le nom de la contrainte gérée que vous souhaitez tester. Exemple : iam.managed.disableServiceAccountKeyCreation.

    • ENFORCEMENT_STATE avec true pour appliquer cette règle d'administration lorsqu'elle est définie, ou false pour la désactiver lorsqu'elle est définie.

    Pour rendre la règle d'administration conditionnelle sur un tag, vous pouvez ajouter un bloc condition à rules. Si vous ajoutez une règle conditionnelle à une règle d'administration, vous devez ajouter au moins une règle inconditionnelle, sinon la règle ne pourra pas être enregistrée. Pour en savoir plus, consultez Définir une règle d'administration avec des tags.

    Pour tester la suppression d'une règle d'administration qui applique une contrainte gérée, aucune règle ne doit être définie dans le fichier JSON ou YAML qui définit la règle d'administration, sauf pour hériter de la règle de sa ressource parente.

    Par exemple, la règle d'administration suivante simulerait la suppression d'une contrainte gérée iam.managed.disableServiceAccountKeyCreation existante.

    name: organizations/ORGANIZATION_ID/policies/iam.managed.disableServiceAccountKeyCreation
    spec:
      inheritFromParent: true
    
  2. Exécutez la commande policy-intelligence simulate orgpolicy :

    gcloud policy-intelligence simulate orgpolicy \
      --organization=ORGANIZATION_ID \
      --policies=POLICY_PATH
    

    Remplacez les éléments suivants :

    • ORGANIZATION_ID par l'ID de votre organisation, par exemple 1234567890123. La simulation de modifications sur plusieurs organisations n'est pas possible.

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

    Après plusieurs 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.

    Les résultats sont également visibles dans la console Google Cloud. Pour savoir comment lire les résultats, consultez la section Résultats de Policy Simulator sur cette page.

Résultats de Policy Simulator

Policy Simulator signale les résultats d'une modification d'une contrainte personnalisée ou d'une règle d'administration sous la forme d'une liste d'infractions à 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 de simulation, accédez à la page Historique des simulations.

Accéder à l'historique des simulations

Sélectionnez une simulation pour en afficher les détails. Sur la page Rapport de simulation, vous pouvez consulter l'aperçu des cas de non-respect, qui 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 qui a été simulée. Si vous avez simulé une règle d'administration, l'onglet Policy details (Détails de la règle) affiche la configuration simulée.

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

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 consulter tous les résultats de Policy Simulator dans la console Google Cloud, quel que soit le mode de génération. Si votre rapport de simulation n'inclut pas plus d'une modification de règle d'administration, vous pouvez appliquer la règle d'administration directement via les résultats de la simulation. Pour appliquer les modifications de test à plusieurs règles d'administration, utilisez Google Cloud CLI.

Console

  1. Pour appliquer une contrainte personnalisée aux 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 pour 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 ne comprend pas plus d'une modification de 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 simulation. La page Détails de la règle de la nouvelle règle d'administration s'affiche.

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

gcloud

  1. Pour appliquer une contrainte personnalisée, vous devez la configurer pour la rendre 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. 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 définir la règle d'administration, exécutez 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 sous forme de fichier 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 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 affichés au format YAML. Pour enregistrer un résultat de test sous forme de fichier YAML, redirigez la sortie 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 sous forme de fichier JSON, ajoutez l'option suivante à la commande simulate orgpolicy lors de l'exécution de la simulation:

--format=json > FILENAME

Remplacez FILENAME par le nom du fichier de sortie.

Étape suivante