Créer une règle d'administration en mode de simulation

Cette page explique comment utiliser une stratégie d'organisation en mode simulation pour surveiller l'impact d'une modification de stratégie sur vos workflows avant son application.

Une stratégie d'organisation en mode simulation est créée et appliquée de la même manière que les autres règles d'administration d'organisation. Les cas de non-respect de la stratégie sont consignés dans le journal d'audit, mais les actions non conformes ne sont pas refusées.

Avant de commencer

Pour utiliser une règle d'administration en mode simulation, vous devez activer la facturation pour votre projet Google Cloud. Pour savoir si la facturation est activée pour un projet, consultez Vérifier l'état de facturation de vos projets.

Pour en savoir plus sur les règles d'administration et leurs contraintes, ainsi que sur leur fonctionnement, consultez la section Présentation du service de règles d'administration.

Rôles requis

Pour obtenir les autorisations nécessaires pour gérer des règles d'administration, demandez à votre administrateur de vous accorder le rôle IAM Administrateur des règles d'administration (roles/orgpolicy.policyAdmin) 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 gérer les règles d'administration. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour gérer les règles d'administration :

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

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

Limites

Les seules contraintes liées aux règles d'administration disponibles pour les règles d'administration de dry run sont les suivantes:

Toute tentative de création d'une règle d'administration en mode simulation à l'aide d'une autre contrainte entraîne une erreur.

Créer une règle d'administration en mode de simulation

Contraintes de liste

Vous pouvez créer une règle d'administration en mode simulation pour une contrainte de liste à l'aide de la console Google Cloud ou de Google Cloud CLI. Les exemples suivants montrent comment créer une règle d'administration en mode simulation qui examine l'effet de la contrainte de liste gcp.restrictServiceUsage.

Console

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

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

  2. Dans le sélecteur de projets, sélectionnez la ressource pour laquelle vous souhaitez définir la règle d'administration.

  3. Sélectionnez la contrainte Restreindre l'utilisation des services de ressources dans la liste de la page Règles d'administration.

  4. Sélectionnez l'onglet Exercice.

  5. Cliquez sur Gérer la règle de dry run.

  6. Sur la page Modifier la règle de simulation, sélectionnez Remplacer la règle parente.

  7. Sous Application des règles, cliquez sur Remplacer.

  8. Cliquez sur Ajouter une règle.

  9. Dans Valeurs de règles, sélectionnez Personnalisé.

  10. Dans Type de règle, sélectionnez Refuser.

  11. Dans la zone Valeurs personnalisées, saisissez compute.googleapis.com, puis cliquez sur OK.

  12. S'il s'agit d'une contrainte personnalisée, vous pouvez cliquer sur Tester les modifications pour simuler l'effet de cette règle d'administration. Pour en savoir plus, consultez la section Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.

  13. Pour appliquer la règle d'administration de l'organisation en mode simulation, cliquez sur Définir la règle de simulation. Vous pouvez également définir les règles en direct en cliquant sur Définir les règles.

Vous pouvez vérifier l'état de votre règle d'administration en mode simulation en accédant à l'onglet Simulation d'une contrainte de règle d'administration.

Pour les projets auxquels une règle d'administration de l'organisation est appliquée en mode simulation, vous pouvez afficher les journaux d'audit en cliquant sur Afficher les journaux de refus. Pour cette règle d'administration, les journaux d'audit affichent les cas de non-respect comme si la contrainte Limiter l'utilisation des services de ressources était appliquée pour refuser compute.googleapis.com.

gcloud

Pour créer une règle d'administration en mode simulation, créez un fichier YAML qui définit la contrainte avec dryRunSpec. Exemple :

  name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage
  dryRunSpec:
    rules:
    - values:
        deniedValues:
        - compute.googleapis.com

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.

Cette règle d'administration n'applique pas la contrainte gcp.restrictServiceUsage, mais les journaux d'audit affichent les cas de non-respect comme si elle l'avait fait.

Vous pouvez définir une règle d'administration active et une règle d'administration de simulation dans le même fichier YAML, si vous définissez à la fois spec et dryRunSpec. Exemple :

name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage
spec:
  rules:
  - values:
      allowedValues:
      - container.googleapis.com

dryRunSpec:
  rules:
  - values:
      allowedValues:
      - compute.googleapis.com
      - appengine.googleapis.com

Pour appliquer une règle d'administration en mode simulation, utilisez la commande org-policies set policy. Pour mettre à jour une règle d'administration existante en mode simulation avec de nouvelles contraintes, utilisez l'indicateur --update-mask. Exemple :

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=UPDATE_MASK

Remplacez les éléments suivants :

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

  • UPDATE_MASK avec spec pour ne mettre à jour que la stratégie en ligne, ou dryRunSpec pour ne mettre à jour que la règle d'administration de l'organisation en mode simulation. Vous pouvez également utiliser * pour mettre à jour les champs spec et dryRunSpec. Si ce champ n'est pas défini lors de la mise à jour d'une stratégie d'organisation existante, cette commande génère une erreur et la stratégie d'organisation n'est pas mise à jour.

Vous pouvez vérifier que la règle d'administration de l'organisation en mode simulation est définie à l'aide de la commande org-policies describe. Le champ dryRunSpec n'apparaît que s'il existe dans la règle d'administration de l'organisation.

Cette règle d'administration appliquerait la contrainte gcp.restrictServiceUsage de sorte que seul container.googleapis.com soit autorisé. Toutefois, les journaux d'audit affichent également des cas de non-respect de compute.googleapis.com et appengine.googleapis.com.

Contraintes booléennes

Vous pouvez créer une règle d'administration en mode "dryrun" pour une contrainte booléenne à l'aide de la console Google Cloud ou de Google Cloud CLI. Les exemples suivants montrent comment créer une règle d'organisation en mode simulation qui examine l'effet d'une règle d'administration personnalisée booléenne.

Console

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

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

  2. Dans le sélecteur de projets, sélectionnez la ressource pour laquelle vous souhaitez définir la règle d'administration.

  3. Sélectionnez la règle d'administration personnalisée que vous souhaitez appliquer dans la liste de la page Règles d'administration.

  4. Sélectionnez l'onglet Exercice.

  5. Cliquez sur Gérer la règle de dry run.

  6. Sur la page Modifier la règle de simulation, sélectionnez Remplacer la règle parente.

  7. Cliquez sur Ajouter une règle.

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

  9. Pour appliquer la règle d'administration de l'organisation en mode simulation, cliquez sur Définir la règle de simulation. Une fois que vous avez vérifié que la règle d'administration de l'organisation en mode simulation fonctionne comme prévu, vous pouvez définir la règle en cliquant sur Définir la règle.

Vous pouvez vérifier l'état de votre règle d'administration en mode simulation en accédant à l'onglet Simulation d'une contrainte de règle d'administration.

Pour les projets auxquels une règle d'administration de l'organisation est appliquée en mode simulation, vous pouvez afficher les journaux d'audit en cliquant sur Afficher les journaux de refus. Pour cette règle d'administration, les journaux d'audit affichent les cas de non-respect comme si la règle d'administration personnalisée était appliquée.

gcloud

Pour créer une règle d'administration en mode simulation, créez un fichier YAML qui définit la contrainte avec dryRunSpec. Exemple :

  name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME
  dryRunSpec:
    rules:
    - enforce: true

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 votre contrainte personnalisée. Exemple :custom.disableGkeAutoUpgrade

Cette règle d'administration n'applique pas la contrainte personnalisée, mais les journaux d'audit affichent les cas de non-respect comme si elle l'avait fait.

Vous pouvez définir une règle d'administration active et une règle d'administration en mode simulation dans le même fichier YAML, si vous définissez à la fois spec et dryRunSpec. Exemple :

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

dryRunSpec:
  rules:
  - enforce: true

Pour appliquer une règle d'administration en mode simulation, utilisez la commande org-policies set policy. Pour mettre à jour une règle d'administration existante en mode simulation avec de nouvelles contraintes, utilisez l'indicateur --update-mask. Exemple :

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=UPDATE_MASK

Remplacez les éléments suivants :

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

  • UPDATE_MASK avec spec pour ne mettre à jour que la stratégie en direct, ou dryRunSpec pour ne mettre à jour que la règle d'administration de l'organisation en mode simulation. Vous pouvez également utiliser * pour mettre à jour les champs spec et dryRunSpec. Si ce champ n'est pas défini lors de la mise à jour d'une stratégie d'organisation existante, cette commande génère une erreur et la stratégie d'organisation n'est pas mise à jour.

Vous pouvez vérifier qu'une règle d'administration en mode simulation est définie à l'aide de la commande org-policies describe. Le champ dryRunSpec n'apparaît que s'il existe dans la règle d'administration de l'organisation.

Cette règle d'administration n'applique pas la contrainte personnalisée. Toutefois, les journaux d'audit affichent des cas de non-respect de la contrainte personnalisée.

Créer une règle d'organisation en mode simulation à partir d'une règle en vigueur

Vous pouvez utiliser une règle d'administration existante comme point de départ pour une règle d'administration en mode simulation. Vous pouvez le faire pour voir l'impact d'une modification de votre règle existante sur votre environnement.

Vous pouvez créer une règle d'administration en mode "dryrun" basée sur une règle existante à l'aide de la console Google Cloud ou de Google Cloud CLI.

Console

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

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

  2. Dans le sélecteur de projets, sélectionnez une ressource pour laquelle la contrainte Restrict Resource Service Usage (Limiter l'utilisation des services de ressources) est déjà configurée.

  3. Sélectionnez la contrainte Restreindre l'utilisation des services de ressources dans la liste de la page Règles d'administration.

  4. Sélectionnez l'onglet Diffusions en direct.

  5. Cliquez sur Gérer la règle.

  6. Cliquez sur Ajouter une règle.

  7. Dans Valeurs de règles, sélectionnez Personnalisé.

  8. Dans Type de règle, sélectionnez Refuser.

  9. Dans la zone Valeurs personnalisées, saisissez appengine.googleapis.com.

  10. Cliquez sur OK, puis sur Définir la règle de simulation.

gcloud

Pour créer une règle d'organisation en mode simulation basée sur une règle d'organisation active existante, obtenez la règle actuelle pour la ressource à l'aide de la commande org-policies describe. Exemple :

gcloud org-policies describe gcp.restrictServiceUsage \
  --project=PROJECT_ID

Remplacez PROJECT_ID par l'ID ou le numéro du projet dans lequel cette stratégie d'organisation est configurée.

Le résultat doit ressembler à ce qui suit :

  name: projects/123456789012/policies/gcp.restrictServiceUsage
  spec:
    etag: CJy93KEGEKCJw/QB
    rules:
    - values:
        allowedValues:
        - compute.googleapis.com
  updateTime: '2023-04-12T21:11:56.512804Z'

Copiez le résultat de cette commande dans un fichier temporaire. Modifiez ce fichier pour supprimer les champs etag et updateTime, et remplacez le champ spec par dryRunSpec. Apportez les modifications que vous souhaitez tester dans la configuration de la contrainte de votre stratégie d'administration en mode "Dry run".

Le fichier YAML final devrait ressembler à ceci:

  name: projects/123456789012/policies/gcp.restrictServiceUsage
  dryRunSpec:
    rules:
    - values:
        allowedValues:
        - compute.googleapis.com
        - appengine.googleapis.com

Pour appliquer la règle d'administration en mode simulation, utilisez org-policies set policy avec l'indicateur --update-mask. Exemple :

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=dryRunSpec

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

Supprimer une règle d'administration en mode de simulation

Vous pouvez supprimer une règle d'administration en mode "dryrun" à l'aide de la console Google Cloud ou de la Google Cloud CLI.

Console

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

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

  2. Dans le sélecteur de projets, sélectionnez la ressource pour laquelle vous souhaitez définir la règle d'administration.

  3. Sélectionnez la contrainte Restreindre l'utilisation des services de ressources dans la liste de la page Règles d'administration.

  4. Sélectionnez l'onglet Exercice.

  5. Cliquez sur Supprimer la règle de dry run.

gcloud

Pour supprimer une règle d'administration en mode simulation, créez un fichier YAML qui définit la règle d'administration sans spécification de simulation. Exemple :

  name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage
  spec:
    rules:
    - values:
        allowedValues:
        - container.googleapis.com

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.

Exécutez ensuite la commande org-policies set policy avec l'option --update-mask définie sur dryRunSpec. Exemple :

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=dryRunSpec

La règle d'administration existante est ainsi mise à jour pour supprimer la spécification de simulation et ignorer la partie active de la spécification.

Pour supprimer simultanément les règles d'administration en cours d'exécution et les stratégies d'règles d'administration en mode simulation, utilisez la commande org-policies delete. Exemple :

gcloud org-policies delete CONSTRAINT_NAME \
  --RESOURCE_TYPE=RESOURCE_ID

Remplacez les éléments suivants :

  • CONSTRAINT_NAME par le nom de la contrainte que vous souhaitez supprimer. Exemple :gcp.restrictServiceUsage

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

Évaluation efficace des règles d'administration en mode de simulation

Les règles d'administration en mode simulation sont héritées de la même manière que les autres règles d'administration. Si une règle d'administration en mode simulation est définie sur une ressource d'organisation, elle est héritée par toutes les ressources descendantes, sauf si elle est remplacée à un niveau inférieur de la hiérarchie.

L'évaluation des règles en vigueur affiche le résultat des règles d'administration de l'organisation fusionnées sur cette ressource. Par conséquent, les ajustements apportés à la stratégie d'organisation en vigueur sont reflétés dans la stratégie d'organisation en vigueur en mode simulation, si la stratégie en mode simulation est héritée plutôt que définie localement.

Modifier la règle d'administration active d'un projet modifie également sa règle d'administration effective en mode simulation.

Par exemple, considérons une ressource d'organisation, Organization A, avec une règle d'administration active définie sur enforced: false et une règle d'administration en mode simulation définie sur enforced: true. Une ressource enfant, Folder B, définit également la règle d'administration de l'organisation en direct sur enforced: false et hérite de la règle d'administration de l'organisation en mode simulation. Sur Folder B, la stratégie en vigueur définie signifie que l'évaluation effective de la stratégie d'administration en mode de simulation est également enforce: false, ce qui remplace la stratégie d'administration en mode de simulation définie dans son organisation parente.

Une ressource enfant de Folder B, Project X, définit la stratégie en direct sur enforced: true. Comme pour le comportement sur Folder B, l'évaluation effective de la règle de l'organisation en mode simulation pour Project X est enforced: true, car la règle en vigueur est définie.

Une autre ressource enfant de Folder B, Project Y, définit la stratégie de l'organisation en mode simulation sur enforced: true. Il hérite de la règle d'administration de sa ressource parente. L'évaluation effective est donc enforced: false pour la règle en vigueur et enforced: true pour la règle d'administration de l'organisation en mode simulation.

Ressource Définir une règle d'administration en vigueur Règle d'administration en vigueur Définir une règle d'administration en mode de simulation Règle d'administration effective en mode de simulation
Organisation A enforced: false enforced: false enforced: true enforced: true
Dossier B enforced: false enforced: false Aucun enforced: false
Dossier C Aucun enforced: false Aucun enforced: true
Projet X enforced: true enforced: true Aucun enforced: true
Projet Y Aucun enforced: false enforced: true enforced: true

Analyser les effets d'une règle d'administration en mode simulation

Une règle d'administration en mode simulation ne bloque aucune opération lorsqu'elle est appliquée. Pour voir l'impact de votre règle d'administration, vous pouvez consulter les journaux d'audit des règles d'administration.

Les journaux d'audit des règles d'administration pour les règles d'administration en vigueur et les règles d'administration en mode simulation sont générés en fonction de l'autorisation ou du refus de l'opération par les règles appliquées à une ressource donnée. Le tableau suivant décrit les situations dans lesquelles un journal d'audit des règles d'administration est généré:

Règle d'administration en vigueur Règle d'administration en mode simulation Journal d'audit généré
Autoriser Autoriser Non
Autoriser Refuser Journal d'audit en mode simulation uniquement
Refuser Autoriser Journal d'audit en mode réel et en mode simulation
Refuser Refuser Journal d'audit en mode réel et simulation

Les cas de non-respect des règles de l'organisation en mode simulation apparaissent avec les cas de non-respect en mode réel dans les journaux d'audit. Exemple :

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 7,
      "message": "PERMISSION_DENIED"
    },
    "authenticationInfo": {},
    "requestMetadata": {
      "callerIp": "1.2.3.4",
      "requestAttributes": {},
      "destinationAttributes": {}
    },
    "serviceName": "appengine.googleapis.com",
    "methodName": "google.api.appengine.v1.appengine.apps.services.get",
    "resourceName": "projects/sur-project-test-3",
    "metadata": {
      "constraint": "constraints/gcp.restrictServiceUsage",
      "checkedValue": "appengine.googleapis.com",
      "liveResult": "ALLOWED",
      "@type": "type.googleapis.com/google.cloud.audit.OrgPolicyDryRunAuditMetadata",
      "dryRunResult": "DENIED"
    }
  },
  "insertId": "1f2bvoxcmg1",
  "resource": {
    "type": "audited_resource",
    "labels": {
      "project_id": "sur-project-test-3",
      "service": "appengine.googleapis.com",
      "method": "google.api.appengine.v1.appengine.apps.services.get"
    }
  },
  "timestamp": "2022-06-16T19:42:58.244990928Z",
  "severity": "WARNING",
  "logName": "projects/sur-project-test-3/logs/cloudaudit.googleapis.com%2Fpolicy",
  "receiveTimestamp": "2022-06-16T19:42:59.572025716Z"
}

Vous pouvez utiliser l'explorateur de journaux pour interroger uniquement les cas de non-respect des règles de l'organisation en mode simulation.

Console

Vous pouvez utiliser l'explorateur de journaux de la console Google Cloud pour récupérer les entrées du journal d'audit de votre projet, dossier ou organisation Google Cloud :

  1. Dans la console Google Cloud, accédez à la page Journalisation > Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Sélectionnez un projet, une organisation ou un dossier Google Cloud existant.

  3. Dans le volet Générateur de requêtes, procédez comme suit :

    • Dans Type de ressource, sélectionnez la ressource Google Cloud dont vous souhaitez afficher les journaux d'audit.

    • Dans Nom du journal, sélectionnez le type de journal d'audit policy.

    • Dans le volet Requête, saisissez ce qui suit : protoPayload.metadata.dryRunResult = "DENIED" AND \ protoPayload.metadata.liveResult = "ALLOWED"

    Si vous rencontrez des problèmes lors de la tentative d'affichage de journaux dans l'explorateur de journaux, consultez les informations de dépannage.

    Pour en savoir plus sur l'utilisation de l'explorateur de journaux pour effectuer des requêtes, consultez la page Créer des requêtes dans l'explorateur de journaux.

gcloud

Google Cloud CLI fournit une interface de ligne de commande à l'API Logging. Fournissez un identifiant de ressource valide dans chacun des noms de journaux. Par exemple, si votre requête inclut un ID de projet, l'identifiant de projet que vous fournissez doit faire référence au nom du projet actuellement sélectionné.

Pour lire les entrées de journal d'audit des cas de non-respect des règles d'administration en mode simulation, exécutez la commande suivante:

gcloud logging read protoPayload.metadata.dryRunResult = "DENIED" AND \
      protoPayload.metadata.liveResult = "ALLOWED" \
    --RESOURCE_TYPE=RESOURCE_ID \

Remplacez les éléments suivants :

  • RESOURCE_TYPE avec organization, folder ou project.

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

Ajoutez l'option --freshness à votre commande pour lire les journaux datant de plus d'une journée.

Pour en savoir plus sur l'utilisation de gcloud CLI, consultez la page gcloud logging read.

Si votre organisation comporte de nombreux projets, vous pouvez utiliser des récepteurs agrégés pour agréger et acheminer les entrées de journaux d'audit de tous les projets de votre organisation vers une table BigQuery. Pour en savoir plus sur la création de récepteurs agrégables, consultez la section Générer et acheminer des journaux au niveau de l'organisation vers des destinations compatibles.

Étape suivante

Pour en savoir plus sur la création et la gestion des contraintes de règles d'administration, consultez la section Utiliser des contraintes.