Trabajar en varios proyectos

Según tus necesidades, es posible que debas diseñar tu arquitectura para que funcione en varios proyectos cuando uses Cloud Asset Inventory. Las siguientes situaciones son las más comunes:

Cada una de estas situaciones requiere cierta configuración para garantizar que las operaciones se completen correctamente.

Proyectos de Orchestrator

Cuando usas un proyecto para activar operaciones de Cloud Asset Inventory en recursos de otro proyecto, en ciertas situaciones, debes especificar que se use la cuenta de servicio predeterminada de Cloud Asset Inventory en el otro proyecto para realizar la operación. Estos casos incluyen lo siguiente:

Para establecer qué cuenta de servicio usar, configura el proyecto de facturación con el ID del proyecto que contiene los recursos en los que estás trabajando. Si no se especifica el proyecto de facturación, Cloud Asset Inventory usa la cuenta de servicio predeterminada de Cloud Asset Inventory en el proyecto que realiza la llamada, que podría no tener los permisos necesarios para completar la operación.

Si bien no es obligatorio para todas las operaciones, puede ser una buena práctica especificar siempre un proyecto de facturación para minimizar la confusión.

gcloud

En el caso de gcloud CLI, agrega la marca --billing-project a tu comando para especificar el ID del proyecto que contiene la cuenta de servicio correcta:

--billing-project=BILLING_PROJECT_ID

Como alternativa, puedes configurar el proyecto de facturación antes de ejecutar comandos con gcloud CLI. Primero, verifica si el proyecto de facturación es diferente del proyecto principal:

gcloud config list

Luego, si es necesario, configura el proyecto de facturación:

gcloud config set billing/quota_project BILLING_PROJECT_ID

Ingresa los siguientes valores:

  • BILLING_PROJECT_ID: Es un ID del proyecto que tiene habilitada la API de Cloud Asset Inventory y una cuenta de servicio con permisos para administrar tu tema de Pub/Sub, bucket de Cloud Storage o tabla de BigQuery de destino.

REST

Para la API de REST, agrega el encabezado X-Goog-User-Project para especificar el ID del proyecto que contiene la cuenta de servicio correcta:

"X-Goog-User-Project: BILLING_PROJECT_ID"

Ingresa los siguientes valores:

  • BILLING_PROJECT_ID: Es un ID del proyecto que tiene habilitada la API de Cloud Asset Inventory y una cuenta de servicio con permisos para administrar tu tema de Pub/Sub, bucket de Cloud Storage o tabla de BigQuery de destino.

Exporta entre proyectos

Para exportar metadatos de recursos de un proyecto, PROJECT_A, a otro, PROJECT_B, debes otorgar a la cuenta de servicio predeterminada de Cloud Asset Inventory en PROJECT_A acceso a los recursos en PROJECT_B.

Esto permite dos cosas:

  • Puedes exportar metadatos de recursos desde PROJECT_A a un tema de Pub/Sub, un bucket de Cloud Storage o una tabla de BigQuery ubicados en PROJECT_B.

  • Puedes usar PROJECT_A para exportar metadatos de activos de PROJECT_B a un tema de Pub/Sub, un bucket de Cloud Storage o una tabla de BigQuery ubicados en PROJECT_B.

Para exportar metadatos de activos de un proyecto a otro, completa las siguientes instrucciones:

  1. Asegúrate de que la API de Cloud Asset Inventory esté habilitada en el proyecto desde el que deseas ejecutar tu solicitud, PROJECT_A.

  2. Realiza al menos una llamada a la API de Cloud Asset Inventory en PROJECT_A para crear la cuenta de servicio predeterminada de Cloud Asset Inventory. Como alternativa, puedes crearla de forma manual:

    gcloud beta services identity create \
        --service=cloudasset.googleapis.com \
        --project=PROJECT_A_ID
    gcloud projects add-iam-policy-binding PROJECT_A_ID \
        --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
        --role=roles/cloudasset.serviceAgent
    

    Cómo encontrar un número de proyecto Google Cloud

    Consola deGoogle Cloud

    Para encontrar el número de un proyecto Google Cloud , completa los siguientes pasos:

    1. Ve a la página Bienvenida en la consola de Google Cloud .

      Ir a Bienvenida

    2. Haz clic en el cuadro de lista del conmutador en la barra de menú.
    3. Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.

      Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.

    gcloud CLI

    Puedes recuperar un número de proyecto Google Cloud con el siguiente comando:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"

  3. Otorga los roles correctos a la cuenta de servicio en PROJECT_A.

    • Para publicar en un feed a través de Pub/Sub, otorga el rol de publicador de Pub/Sub (roles/pubsub.publisher) a la cuenta de servicio en el tema:

      gcloud pubsub topics add-iam-policy-binding projects/PROJECT_B_ID/topics/TOPIC_ID \
          --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
          --role=roles/pubsub.publisher
      
    • Para escribir en un bucket de Cloud Storage, otorga el rol de administrador de almacenamiento (roles/storage.admin) a la cuenta de servicio en el bucket:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
        --role=roles/storage.admin
      
    • Para escribir en una tabla de BigQuery, otorga los roles de editor de datos de BigQuery (roles/bigquery.dataEditor) y usuario de BigQuery (roles/bigquery.user) a la cuenta de servicio en el proyecto:

      gcloud projects add-iam-policy-binding PROJECT_B_ID \
          --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
          --role=roles/bigquery.dataEditor
      gcloud projects add-iam-policy-binding PROJECT_B_ID \
          --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
          --role=roles/bigquery.user
      

Si realizas una solicitud de Cloud Asset Inventory con gcloud CLI desde PROJECT_B o usas la API de REST, asegúrate de especificar PROJECT_A como el proyecto de facturación.