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 règle d'administration qui applique une contrainte personnalisée avant qu'elle ne soit appliquée dans 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 ce qui vous permet de reconfigurer ces ressources, de demander des exceptions modifier le champ d'application de votre règle d'administration, sans perturber développeurs ou faire perdre 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 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 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 stratégie

Vous pouvez tester une modification apportée à une contrainte personnalisée, une règle d'administration qui applique une contrainte personnalisée, ou les deux à la fois.

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 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 de l'organisation.

  4. Si vous souhaitez tester une nouvelle contrainte personnalisée, cliquez sur Contrainte personnalisée. Si vous voulez pour modifier une contrainte personnalisée existante, sélectionnez-la dans la liste sur 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 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 le champ Sélectionner le 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, 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 la contrainte personnalisée à tester.

    Par exemple, une contrainte personnalisée qui limite la création ressources de cluster où l'autorisation binaire n'est pas activée est semblable suivantes:

    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. comme 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 en fonction de l'existence d'une balise particulière, 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 Les ressources de cluster Google Kubernetes Engine pour lesquelles l'autorisation binaire n'est pas activée, à l'exception sur les 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 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.

  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 restreint la création Les ressources de cluster Google Kubernetes Engine pour lesquelles l'autorisation binaire n'est pas activée sont semblable à ce qui suit:

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

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

  4. Tester la suppression d'une règle d'administration qui applique une règle personnalisée créez un fichier JSON ou YAML définissant 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 simulerait 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). Simuler les changements dans plusieurs organisations n'est pas compatibles.

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

  • POLICY_PATH: chemin d'accès complet à l'organisation 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 quelques minutes, la commande affiche une liste de ressources enfreindre les modifications apportées à la contrainte personnalisée, à la règle d'administration ou les 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 règle d'administration. Cette simulation implique une contrainte personnalisée qui limite la création Ressources de cluster Google Kubernetes Engine pour lesquelles l'autorisation binaire n'est pas activée. Dans ce Si la modification proposée était appliquée, deux ressources de cluster ne respecte pas la règle orgpolicy-test-cluster dans 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

Résultats de Policy Simulator

Policy Simulator signale les résultats d'une modification d'une contrainte personnalisée ou une règle d'administration comme une liste de cas de non-respect de la règle simulée. La La console Google Cloud stocke les résultats des simulations que vous avez générées au cours des 14 dernières 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 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 voir 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 enfreint la nouvelle contrainte personnalisée ou règle d'administration est répertoriée avec un lien vers une entrée de ressource dans l'inventaire des éléments cloud. Les ressources "Projet", "Dossier" et "Organisation" avec la somme totale des ressources situées en dessous d'elles dans la hiérarchie ne respectent pas la nouvelle contrainte personnalisée ou la nouvelle règle d'administration.

Appliquer une modification de règle testée

Après avoir testé votre contrainte personnalisée, votre règle d'administration ou les deux, vous configurer la contrainte personnalisée et appliquer la règle d'administration. Vous pouvez voir tous les résultats de Policy Simulator dans la console Google Cloud, indépendamment de la façon dont elles ont été générées. 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'organisation, 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 ou l'organisation personnalisée 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 inclut les modifications apportées à plus d'une organisation vous pouvez l'appliquer en tant que règle de simulation de surveiller le comportement en production sans introduire de risque en sélectionnant Définir une règle de dry run La page Détails de la règle de la nouvelle 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 des règles

gcloud

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

    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 des 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 Policy Simulator les résultats 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 la gcloud CLI, vous pouvez enregistrer Résultats de Policy Simulator sous forme de fichiers JSON ou YAML.

Par défaut, les résultats des tests dans la Google Cloud CLI sont générés au format YAML. À enregistrez le résultat du test dans un fichier YAML, redirigez la sortie du 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