En función de tus necesidades, es posible que tengas que diseñar tu arquitectura para que funcione en varios proyectos al usar Cloud Asset Inventory. Estos son los casos más habituales:
Proyectos de orquestación: cuando quieras que un solo proyecto active operaciones de Cloud Asset Inventory en otros proyectos.
Exportación entre proyectos: cuando quieras exportar metadatos de recursos de un proyecto a otro.
Cada uno de estos casos requiere una configuración para que las operaciones se completen correctamente.
Proyectos de Orchestrator
Cuando usas un proyecto para activar operaciones de Inventario de recursos de Cloud en recursos de otro proyecto, en determinados casos debes especificar que se use la cuenta de servicio predeterminada de Inventario de recursos de Cloud del otro proyecto para realizar la operación. Estos casos incluyen los siguientes:
Para definir qué cuenta de servicio se debe usar, asigna el proyecto de facturación al ID del proyecto que contiene los recursos con 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 puede que no tenga los permisos necesarios para completar la operación.
Aunque no es obligatorio para todas las operaciones, es recomendable especificar siempre un proyecto de facturación para evitar confusiones.
gcloud
En la CLI de gcloud, añade la marca --billing-project
al comando para especificar el ID del proyecto que contiene la cuenta de servicio correcta:
--billing-project=BILLING_PROJECT_ID
También puedes definir el proyecto de facturación antes de ejecutar comandos con gcloud CLI. Primero, comprueba si el proyecto de facturación es diferente del proyecto principal:
gcloud config list
A continuación, si es necesario, define el proyecto de facturación:
gcloud config set billing/quota_project BILLING_PROJECT_ID
Proporciona los siguientes valores:
BILLING_PROJECT_ID
: un ID de proyecto que tenga habilitada la API Cloud Asset Inventory y una cuenta de servicio con permisos para gestionar el tema de Pub/Sub, el bucket de Cloud Storage o la tabla de BigQuery de destino.
REST
En la API REST, añade 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"
Proporciona los siguientes valores:
BILLING_PROJECT_ID
: un ID de proyecto que tenga habilitada la API Cloud Asset Inventory y una cuenta de servicio con permisos para gestionar el tema de Pub/Sub, el bucket de Cloud Storage o la tabla de BigQuery de destino.
Exportar entre proyectos
Para exportar metadatos de recursos de un proyecto (PROJECT_A
) a otro (PROJECT_B
), debes dar acceso a la cuenta de servicio predeterminada de Inventario de Recursos de Cloud en PROJECT_A
a los recursos de PROJECT_B
.
Esto permite dos cosas:
Puede exportar metadatos de recursos de
PROJECT_A
a un tema de Pub/Sub, un segmento de Cloud Storage o una tabla de BigQuery ubicados enPROJECT_B
.Puede usar
PROJECT_A
para exportar metadatos de recursos dePROJECT_B
a un tema de Pub/Sub, un segmento de Cloud Storage o una tabla de BigQuery ubicados enPROJECT_B
.
Para exportar los metadatos de los recursos de un proyecto a otro, sigue estas instrucciones:
Asegúrate de que la API Cloud Asset Inventory esté habilitada en el proyecto desde el que quieras ejecutar la solicitud,
PROJECT_A
.Haz al menos una llamada a la API Cloud Asset Inventory en
PROJECT_A
para crear la cuenta de servicio predeterminada de Cloud Asset Inventory. También puedes crearlo manualmente: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 el Google Cloud número de proyecto
Google Cloud consola
Para encontrar un número de proyecto de Google Cloud , sigue estos pasos:
-
Ve a la página Bienvenida de la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
-
Selecciona tu organización en el cuadro de lista y, a continuación, 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 4000 recursos. Si no ves el proyecto que buscas, ve a la página Gestionar recursos y filtra la lista por el nombre de ese proyecto.
CLI de gcloud
Puedes obtener un Google Cloud número de proyecto con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
Asigna 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 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 segmento de Cloud Storage, concede el rol Administrador de Storage (
roles/storage.admin
) a la cuenta de servicio en el segmento: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, asigna a la cuenta de servicio los roles Editor de datos de BigQuery (
roles/bigquery.dataEditor
) y Usuario de BigQuery (roles/bigquery.user
) 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 haces una solicitud de Cloud Asset Inventory con la CLI de gcloud desde PROJECT_B
o usas la API REST, asegúrate de especificar PROJECT_A
como proyecto de facturación.