Gestionar políticas para consumidores

La activación jerárquica de servicios te permite gestionar la habilitación de servicios que se hereda a través de la Google Cloud jerarquía de recursos. Para obtener más información, consulta el resumen.

El ConsumerPolicy es un recurso de la API Uso de Servicio que se encuentra en cada nivel de la jerarquía de recursosGoogle Cloud . Este recurso, que siempre se llama default, contiene los enableRules que definen qué servicios están habilitados. En lugar de habilitar o inhabilitar un servicio específico, puedes modificar el recurso ConsumerPolicy. Cuando el nombre de un servicio está en su lista, el servicio se habilita en ese nivel de jerarquía.

En este documento se explica cómo usar la CLI de Google Cloud para gestionar las políticas de consumidor de proyectos, carpetas y organizaciones.

Antes de empezar

  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 utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    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 vas a usar un proyecto que ya tengas para seguir esta guía, verifica que tienes los permisos necesarios para completarla. Si has creado un proyecto, ya tienes los permisos necesarios.

  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 utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  11. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    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 vas a usar un proyecto que ya tengas para seguir esta guía, verifica que tienes los permisos necesarios para completarla. Si has creado un proyecto, ya tienes los permisos necesarios.

  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 no indicas el Google Cloud recurso que quieres gestionar, los comandos de este documento se aplicarán de forma predeterminada al proyecto actual. Por ejemplo, gcloud beta services policies get --policy-name=default devuelve la política de consumidor del proyecto actual.

    Puedes obtener el ID del proyecto actual:

    gcloud config list --format='text(core.project)'
  17. Roles obligatorios

    Para obtener los permisos que necesitas para gestionar las políticas de consumidor, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Uso de Servicio (roles/serviceusage.serviceUsageAdmin) en el recurso de destino. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

    Este rol predefinido contiene los permisos necesarios para gestionar las políticas de consumidor. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

    Permisos obligatorios

    Para gestionar las políticas de consumidor, se necesitan los siguientes permisos:

    • Obtener una política de consumidor: serviceusage.consumerpolicy.get
    • Actualizar una política de consumidor:
      • serviceusage.consumerpolicy.analyze
      • serviceusage.consumerpolicy.update
    • Obtener una política en vigor: serviceusage.effectivepolicy.get
    • Comprobar si un servicio está habilitado: serviceusage.values.test

    También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

    Obtener una política de consumidor

    Puedes obtener el ConsumerPolicy de un proyecto, una carpeta o una organización mediante el comando gcloud beta services policies get.

    Este comando devuelve el conjunto enableRules definido en ese nivel de recurso exacto, y no las reglas heredadas. Para obtener una vista más completa que incluya las reglas heredadas, puedes consultar la política vigente. Solo se admite el nombre de la política default.

    Proyecto

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

    Haz los cambios siguientes:

    • PROJECT_ID: tu Google Cloud ID de proyecto. También puedes omitir la marca para usar el proyecto actual de forma predeterminada.
    • OUTPUT_FILE: (opcional) la ruta a un archivo de salida donde se puede guardar el contenido de la política de consumidor. Los formatos de archivo admitidos son JSON y YAML.

    Carpeta

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

    Haz los cambios siguientes:

    • FOLDER_ID: tu Google Cloud ID de carpeta.
    • OUTPUT_FILE: (opcional) la ruta a un archivo de salida donde se puede guardar el contenido de la política de consumidor. Los formatos de archivo admitidos son JSON y YAML.

    Organización

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

    Haz los cambios siguientes:

    • ORGANIZATION_ID: el Google Cloud ID de recurso de tu organización.
    • OUTPUT_FILE: (opcional) la ruta a un archivo de salida donde se puede guardar el contenido de la política de consumidor. Los formatos de archivo admitidos son JSON y YAML.

    Actualizar una política de consumidor

    Puedes actualizar un ConsumerPolicy con el comando gcloud beta services policies update. De esta forma, puedes sustituir la política actual y usar un archivo YAML para actualizar muchos servicios habilitados a la vez.

    Este comando no habilita automáticamente las dependencias de servicio. Debes enumerar explícitamente todas las dependencias de servicio en el archivo de entrada. Puedes usar la marca --validate-only para previsualizar los cambios antes de aplicarlos.

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

    Sustituye PATH_TO_CONSUMER_POLICY por la ruta del archivo YAML que contiene la política de consumidor. Por ejemplo:

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

    Marcas admitidas:

    • --bypass-api-usage-check para omitir las comprobaciones de uso. De lo contrario, el sistema devolverá un error si alguno de los servicios que quieres inhabilitar se ha usado en los últimos 30 días o se ha habilitado en los últimos 3 días.

    • --bypass-dependency-check para omitir la comprobación de dependencias. Cuando añadas un servicio, todas las dependencias de servicio deben estar presentes en la política. Cuando se elimina un servicio, ningún otro servicio de la política puede depender de él. De lo contrario, la actualización no se completará y se devolverá un error.

    • --validate-only para validar la actualización sin realizar la operación.

    Ten en cuenta lo siguiente:

    • Para obtener una plantilla YAML del archivo de política, primero recupera la política de consumidor y usa la marca --output-file para guardar la política en un archivo. A continuación, modifique este archivo y úselo como entrada para el comando de actualización. Plantilla de ejemplo:

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

      Haz los cambios siguientes:

      • PROJECT_ID: tu Google Cloud ID de proyecto. Otros nombres de recursos admitidos siguen un formato similar. Por ejemplo: folders/FOLDER_ID/consumerPolicies/default.

      • SERVICE: el nombre del servicio. Por ejemplo: bigquery.googleapis.com.

    Obtener una política eficaz

    Para obtener la política efectiva de un recurso, usa el comando gcloud beta services policies get-effective.

    La política efectiva combina el ConsumerPolicy del recurso con las políticas de todos sus ancestros. De esta forma, obtendrás una vista completa de todos los servicios habilitados, incluidos los que se han habilitado directamente en el recurso y los que ha heredado de sus antecesores.

    Proyecto

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

    Haz los cambios siguientes:

    • PROJECT_ID: tu Google Cloud ID de proyecto. También puedes omitir la marca para usar el proyecto actual de forma predeterminada.
    • VIEW: BASIC para obtener un conjunto limitado de metadatos o FULL para obtener el conjunto completo de metadatos, incluido el lugar en el que se habilitó cada servicio en la jerarquía. El valor predeterminado es BASIC.

    Carpeta

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

    Haz los cambios siguientes:

    • FOLDER_ID: tu Google Cloud ID de carpeta.
    • VIEW: BASIC para obtener un conjunto limitado de metadatos o FULL para obtener el conjunto completo de metadatos, incluido el lugar en el que se habilitó cada servicio en la jerarquía. El valor predeterminado es BASIC.

    Organización

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

    Haz los cambios siguientes:

    • ORGANIZATION_ID: el Google Cloud ID de recurso de tu organización.
    • VIEW: BASIC para obtener un conjunto limitado de metadatos o FULL para obtener el conjunto completo de metadatos, incluido el lugar en el que se habilitó cada servicio en la jerarquía. El valor predeterminado es BASIC.

    Comprobar si un servicio está habilitado

    Para comprobar si un servicio está habilitado en un recurso, usa el comando gcloud beta services policies test-enabled.

    Al comprobar el estado de un servicio, este comando tiene en cuenta la política efectiva y la jerarquía de recursos completa de Google Cloud .

    Proyecto

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

    Haz los cambios siguientes:

    • SERVICE: el nombre del servicio que quieras consultar.
    • PROJECT_ID: tu Google Cloud ID de proyecto. También puedes omitir la marca para usar el proyecto actual de forma predeterminada.

    Carpeta

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

    Haz los cambios siguientes:

    Organización

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

    Haz los cambios siguientes:

    Ejemplos

    Recuperar la política de consumidor

    • Obteniendo la política de consumidor del proyecto actual:
      gcloud beta services policies get

      Resultado:

      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=="

    Actualizar la política de consumidor

    • Política de consumidor actualizada correctamente:
      gcloud beta services policies update --consumer-policy-file=/tmp/test.yaml

      Resultado:

      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"
      }
    • No se ha podido actualizar la política de consumidor:
      gcloud beta services policies update --consumer-policy-file=/tmp/test.json

      Mensaje de error:

      ERROR: (gcloud.beta.services.policies.update) Invalid consumer_policy_file format. Please provide path to a yaml file.
    • Intentar actualizar la política de consumidor cuando el servicio se ha usado o habilitado recientemente:
      gcloud beta services policies update --consumer-policy-file=/tmp/test.yaml

      Resultado:

      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..."
    • Actualizar la política de consumidor cuando el servicio se haya usado o habilitado recientemente sin comprobar el uso:
      gcloud beta services policies update --consumer-policy-file=/tmp/test.yaml --bypass-api-usage-check

      Resultado:

      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"
      }

    Recuperar la política aplicable

    • Recuperando la vista BASIC de la política aplicable al proyecto actual:
      gcloud beta services policies get-effective

      Resultado:

      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
    • Se obtiene la vista FULL de la política aplicable al proyecto actual:
      gcloud beta services policies get-effective --view=FULL

      Resultado:

      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']
      ...

    Comprobar si un servicio está habilitado

    • Comprobando el estado del servicio de claves de API habilitadas del proyecto actual:
      gcloud beta services policies test-enabled apikeys.googleapis.com

      Resultado:

      Service apikeys.googleapis.com is ENABLED for resource projects/test-project Hierarchical Service Activation.
    • Para comprobar el estado del servicio App Hub inhabilitado en el proyecto actual, sigue estos pasos:
      gcloud beta services policies test-enabled apphub.googleapis.com

      Resultado:

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

    Siguientes pasos