Gérer les règles relatives aux consommateurs

L'activation hiérarchique des services vous permet de gérer l'activation des services héritée de la hiérarchie des ressources Google Cloud . Pour en savoir plus, consultez la présentation.

ConsumerPolicy est une ressource de l'API Service Usage qui se trouve à chaque niveau de la hiérarchie des ressourcesGoogle Cloud . Cette ressource, toujours nommée default, contient les enableRules qui définissent les services activés. Au lieu d'activer ou de désactiver un service spécifique, vous pouvez modifier la ressource ConsumerPolicy. Lorsqu'un nom de service figure dans sa liste, le service est activé à ce niveau de hiérarchie.

Ce document explique comment utiliser la Google Cloud CLI pour gérer les règles de consommateur pour les projets, les dossiers et les organisations.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.

  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the Service Usage API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable serviceusage.googleapis.com
  9. Install the Google Cloud CLI.

  10. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  11. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  12. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  13. Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.

  14. Verify that billing is enabled for your Google Cloud project.

  15. Enable the Service Usage API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable serviceusage.googleapis.com
  16. Si vous n'indiquez pas la ressource Google Cloud que vous souhaitez gérer, les commandes de ce document sont définies par défaut sur le projet actuel. Par exemple, gcloud beta services policies get --policy-name=default renvoie la stratégie du consommateur pour le projet actuel.

    Vous pouvez récupérer l'ID du projet actuel :

    gcloud config list --format='text(core.project)'
  17. Rôles requis

    Pour obtenir les autorisations nécessaires pour gérer les règles des consommateurs, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin) sur votre ressource cible. Pour en savoir plus sur l'attribution de rôles, consultez 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 des consommateurs. 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 destinées aux consommateurs :

    • Obtenir une règle de consommateur : serviceusage.consumerpolicy.get
    • Mettre à jour une règle destinée aux consommateurs :
      • serviceusage.consumerpolicy.analyze
      • serviceusage.consumerpolicy.update
    • Obtenir une règle appliquée : serviceusage.effectivepolicy.get
    • Vérifiez si un service est activé : serviceusage.values.test

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

    Obtenir une règle pour un consommateur

    Vous pouvez récupérer le ConsumerPolicy d'un projet, d'un dossier ou d'une organisation à l'aide de la commande gcloud beta services policies get.

    Cette commande renvoie le enableRules défini au niveau exact de la ressource, et non les règles héritées. Pour obtenir une vue plus complète incluant les règles héritées, vous pouvez récupérer la stratégie en vigueur. Seul le nom de règle default est accepté.

    Projet

    gcloud beta services policies get --policy-name=default \
        --project=PROJECT_ID \
        --output-file=OUTPUT_FILE
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projetGoogle Cloud . Vous pouvez également omettre l'indicateur pour utiliser le projet actuel par défaut.
    • OUTPUT_FILE : (facultatif) chemin d'accès à un fichier de sortie dans lequel le contenu de la règle relative aux consommateurs peut être enregistré. Les formats de fichiers acceptés sont JSON et YAML.

    Dossier

    gcloud beta services policies get --policy-name=default \
        --folder=FOLDER_ID \
        --output-file=OUTPUT_FILE
    

    Remplacez les éléments suivants :

    • FOLDER_ID : l'Google Cloud ID de votre dossier.
    • OUTPUT_FILE : (facultatif) chemin d'accès à un fichier de sortie dans lequel le contenu de la règle relative aux consommateurs peut être enregistré. Les formats de fichiers acceptés sont JSON et YAML.

    Organisation

    gcloud beta services policies get --policy-name=default \
        --organization=ORGANIZATION_ID \
        --output-file=OUTPUT_FILE
    

    Remplacez les éléments suivants :

    • ORGANIZATION_ID : Google Cloud ID de ressource de votre organisation.
    • OUTPUT_FILE : (facultatif) chemin d'accès à un fichier de sortie dans lequel le contenu de la règle relative aux consommateurs peut être enregistré. Les formats de fichiers acceptés sont JSON et YAML.

    Mettre à jour une règle de consommateur

    Vous pouvez mettre à jour un ConsumerPolicy à l'aide de la commande gcloud beta services policies update. Cela vous permet de remplacer la règle actuelle et d'utiliser un fichier YAML pour mettre à jour plusieurs services activés à la fois.

    Cette commande n'active pas automatiquement les dépendances de service. Vous devez lister explicitement toutes les dépendances de service dans le fichier d'entrée. Vous pouvez utiliser l'indicateur --validate-only pour prévisualiser les modifications avant de les appliquer.

    gcloud beta services policies update --consumer-policy-file=PATH_TO_CONSUMER_POLICY
    

    Remplacez PATH_TO_CONSUMER_POLICY par le chemin d'accès au fichier YAML contenant la règle du consommateur, par exemple :

    gcloud beta services policies update --consumer-policy-file=/path/to/the/file.yaml

    Indicateurs compatibles :

    • --bypass-api-usage-check pour contourner les vérifications d'utilisation. Sinon, le système renvoie une erreur si l'un des services que vous souhaitez désactiver a été utilisé au cours des 30 derniers jours ou activé au cours des trois derniers jours.

    • --bypass-dependency-check pour contourner la vérification des dépendances. Lorsque vous ajoutez un service, toutes les dépendances de service doivent figurer dans la règle. Lorsque vous supprimez un service, aucun autre service de la règle ne peut en dépendre. Sinon, la mise à jour échoue et une erreur est renvoyée.

    • --validate-only pour valider la mise à jour sans effectuer l'opération.

    Veuillez noter les points suivants :

    • Pour obtenir un modèle YAML pour le fichier de stratégie, commencez par récupérer la stratégie du consommateur et utilisez l'indicateur --output-file pour enregistrer la stratégie dans un fichier. Modifiez ensuite ce fichier et utilisez-le comme entrée pour la commande de mise à jour. Exemple de modèle :

      name: projects/PROJECT_ID/consumerPolicies/default
      enableRules:
        services:
          - services/SERVICE
          - ...
          - ...
      

      Remplacez les éléments suivants :

      • PROJECT_ID : ID de votre projetGoogle Cloud . Les autres noms de ressources compatibles suivent un format semblable, par exemple : folders/FOLDER_ID/consumerPolicies/default.

      • SERVICE : nom du service, par exemple bigquery.googleapis.com.

    Obtenir une règle appliquée

    Vous pouvez récupérer la stratégie effective d'une ressource à l'aide de la commande gcloud beta services policies get-effective.

    La stratégie applicable combine le ConsumerPolicy de la ressource avec les stratégies de tous ses ancêtres. Vous obtenez ainsi une vue complète de tous les services activés, y compris ceux activés directement sur la ressource et ceux hérités de ses ancêtres.

    Projet

    gcloud beta services policies get-effective --project=PROJECT_ID \
        --view=VIEW
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projetGoogle Cloud . Vous pouvez également omettre l'indicateur pour utiliser le projet actuel par défaut.
    • VIEW : BASIC pour récupérer un ensemble limité de métadonnées ou FULL pour récupérer l'ensemble complet des métadonnées, y compris l'emplacement où chaque service a été activé dans la hiérarchie. La valeur par défaut est BASIC.

    Dossier

    gcloud beta services policies get-effective --folder=FOLDER_ID \
        --view=VIEW
    

    Remplacez les éléments suivants :

    • FOLDER_ID : l'Google Cloud ID de votre dossier.
    • VIEW : BASIC pour récupérer un ensemble limité de métadonnées ou FULL pour récupérer l'ensemble complet des métadonnées, y compris l'emplacement où chaque service a été activé dans la hiérarchie. La valeur par défaut est BASIC.

    Organisation

    gcloud beta services policies get-effective --organization=ORGANIZATION_ID \
        --view=VIEW
    

    Remplacez les éléments suivants :

    • ORGANIZATION_ID : Google Cloud ID de ressource de votre organisation.
    • VIEW : BASIC pour récupérer un ensemble limité de métadonnées ou FULL pour récupérer l'ensemble complet des métadonnées, y compris l'emplacement où chaque service a été activé dans la hiérarchie. La valeur par défaut est BASIC.

    Vérifier si un service est activé

    Vous pouvez vérifier si un service est activé sur une ressource à l'aide de la commande gcloud beta services policies test-enabled.

    Lorsque vous vérifiez l'état d'un service, cette commande tient compte du règlement effectif et de l'intégralité de la hiérarchie des ressources Google Cloud .

    Projet

    gcloud beta services policies test-enabled SERVICE \
        --project=PROJECT_ID
    

    Remplacez les éléments suivants :

    • SERVICE : nom du service que vous souhaitez vérifier.
    • PROJECT_ID : ID de votre projetGoogle Cloud . Vous pouvez également omettre l'indicateur pour utiliser le projet actuel par défaut.

    Dossier

    gcloud beta services policies test-enabled SERVICE \
        --folder=FOLDER_ID
    

    Remplacez les éléments suivants :

    Organisation

    gcloud beta services policies test-enabled SERVICE \
        --organization=ORGANIZATION_ID
    

    Remplacez les éléments suivants :

    Exemples

    Récupérer une règle pour les consommateurs

    • Récupérer la stratégie client pour le projet actuel :
      gcloud beta services policies get

      Résultat :

      name: projects/PROJECT_ID/consumerPolicies/default
      enableRules:
       services:
        - services/apikeys.googleapis.com
        - services/compute.googleapis.com
        - services/oslogin.googleapis.com
        - services/serviceusage.googleapis.com
      updateTime: 2025-09-11T23:05:22.758394Z
      createTime: 2025-01-31T20:17:37.272343Z
      etag: W/"W9nsVJK0V1m7ee7tM7pFDg=="

    Mettre à jour la politique relative aux consommateurs

    • Mise à jour réussie de la règle destinée aux consommateurs :
      gcloud beta services policies update --consumer-policy-file=/tmp/test.yaml

      Résultat :

      Operation [operations/ucpat.p39-581601899707-86fe7e37-c7f9-4624-90c4-d54754d57eed] complete. Result: {
          "@type":"type.googleapis.com/google.api.serviceusage.v2beta.ConsumerPolicy",
          "createTime":"1970-01-01T00:00:00Z",
          "enableRules":[
              {
                  "services":[
                      "services/apikeys.googleapis.com"
                  ]
              }
          ],
          "name":"projects/PROJECT_ID/consumerPolicies/default",
          "updateTime":"1970-01-01T00:00:00Z"
      }
    • Échec de la mise à jour de la règle pour les consommateurs :
      gcloud beta services policies update --consumer-policy-file=/tmp/test.json

      Message d'erreur :

      ERROR: (gcloud.beta.services.policies.update) Invalid consumer_policy_file format. Please provide path to a yaml file.
    • Tentative de mise à jour de la règle relative aux consommateurs lorsque le service a été utilisé ou activé récemment :
      gcloud beta services policies update --consumer-policy-file=/tmp/test.yaml

      Résultat :

      The operation "operations/ucpat.p39-581601899707-4884bdb0-d899-49ac-9c83-38457950ef33" resulted in a failure "The services apikeys.googleapis.com have usage in the last 30 days or were enabled in the past 3 days. Please specify force if you want to proceed with the destructive policy change. Help Token: AVSZLmtCfGwMm4oHmOyExdDEFRQ0pFiBrl879nbZlY2JkfVzeU63u66ApXYr6MIEAoig..."
    • Mise à jour de la règle pour les consommateurs lorsque le service a été utilisé ou activé récemment en ignorant la vérification de l'utilisation :
      gcloud beta services policies update --consumer-policy-file=/tmp/test.yaml --bypass-api-usage-check

      Résultat :

      Operation [operations/ucpat.p39-581601899707-8ffda670-ed04-4776-8d43-d2f8e1817e00] complete. Result: {
          "@type":"type.googleapis.com/google.api.serviceusage.v2beta.ConsumerPolicy",
          "createTime":"1970-01-01T00:00:00Z",
          "enableRules":[
              {
                  "services":[
                      "services/serviceusage.googleapis.com"
                  ]
              }
          ],
          "name":"projects/PROJECT_ID/consumerPolicies/default",
          "updateTime":"1970-01-01T00:00:00Z"
      }

    Récupérer la règle en vigueur

    • Récupération de la vue BASIC de la règle en vigueur pour le projet actuel :
      gcloud beta services policies get-effective

      Résultat :

      EnabledRules:
       Services:
        -   services/apikeys.googleapis.com
        -   services/compute.googleapis.com
        -   services/computescanning.googleapis.com
        -   services/containeranalysis.googleapis.com
        -   services/containerscanning.googleapis.com
        -   services/gkebackup.googleapis.com
        -   services/osconfig.googleapis.com
        -   services/oslogin.googleapis.com
        -   services/serviceusage.googleapis.com
    • Récupération de la vue FULL de la règle en vigueur pour le projet actuel :
      gcloud beta services policies get-effective --view=FULL

      Résultat :

      EnabledRules:
       Services:
        -   services/apikeys.googleapis.com
        -   services/compute.googleapis.com
        -   services/computescanning.googleapis.com
        -   services/containeranalysis.googleapis.com
        -   services/containerscanning.googleapis.com
        -   services/gkebackup.googleapis.com
        -   services/osconfig.googleapis.com
        -   services/oslogin.googleapis.com
        -   services/serviceusage.googleapis.com
      
      Metadata of effective policy:
      EnabledService: services/apikeys.googleapis.com
      EnabledPolicies: ['projects/PROJECT_ID/consumerPolicies/default']
      
      EnabledService: services/bcidcloudenforcer-pa.googleapis.com
      EnabledPolicies: ['folders/FOLDER_ID/consumerPolicies/default']
      
      EnabledService: services/compute.googleapis.com
      EnabledPolicies: ['projects/PROJECT_ID/consumerPolicies/default']
      ...

    Vérifier si un service est activé

    • Vérification de l'état du service de clés API activé pour le projet en cours :
      gcloud beta services policies test-enabled apikeys.googleapis.com

      Résultat :

      Service apikeys.googleapis.com is ENABLED for resource projects/test-project Hierarchical Service Activation.
    • Vérifier l'état du service App Hub désactivé pour le projet actuel :
      gcloud beta services policies test-enabled apphub.googleapis.com

      Résultat :

      Service apphub.googleapis.com is NOT ENABLED for resource projects/test-project Hierarchical Service Activation.

    Étapes suivantes