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:
Proyectos del organizador: Cuando deseas que un solo proyecto Activar operaciones de Cloud Asset Inventory en otros proyectos
Exportar entre proyectos: Cuando quieras exportar recursos metadatos de un proyecto a otro.
Cada una de estas situaciones requiere una configuración para garantizar que las operaciones se completen correctamente.
Proyectos de orquestador
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. Estas situaciones incluyen las siguientes:
Para definir la cuenta de servicio que usarás, debes establecer el proyecto de facturación con el ID de el proyecto que contiene los recursos en los que operas. Si la configuración proyecto no se especifica, Cloud Asset Inventory usa el servicio predeterminado de Cloud Asset Inventory cuenta de servicio en el proyecto que realiza la llamada, que podría no tener los permisos necesarios para completar la operación.
Aunque no es necesario para todas las operaciones, puede ser una práctica recomendada especificar un proyecto de facturación para minimizar la confusión.
gcloud
Para gcloud CLI, agrega la marca --billing-project
a la
para especificar el ID del proyecto que contiene la cuenta de servicio correcta:
--billing-project=BILLING_PROJECT_ID
También puedes configurar el proyecto de facturación antes de ejecutar comandos con 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
: Se habilitó un ID de proyecto que tiene la API de Cloud Asset Inventory y una cuenta de servicio con permisos para administrar tu tema de Pub/Sub de destino, bucket de Cloud Storage o tabla de BigQuery.
REST
Para la API de REST, agrega el encabezado X-Goog-User-Project
para especificar el proyecto
ID que contiene la cuenta de servicio correcta:
"X-Goog-User-Project: BILLING_PROJECT_ID"
Ingresa los siguientes valores:
BILLING_PROJECT_ID
: Se habilitó un ID de proyecto que tiene la API de Cloud Asset Inventory y una cuenta de servicio con permisos para administrar tu tema de Pub/Sub de destino, bucket de Cloud Storage o tabla de BigQuery.
Exporta entre proyectos
Para exportar metadatos de recursos de un proyecto (PROJECT_A
) a otro (PROJECT_B
), sigue estos pasos:
debes otorgar acceso a la cuenta de servicio predeterminada de Cloud Asset Inventory en PROJECT_A
los recursos en PROJECT_B
.
Esto permite dos cosas:
Puedes exportar metadatos de recursos de
PROJECT_A
a un tema de Pub/Sub, un bucket de Cloud Storage o una tabla de BigQuery ubicada enPROJECT_B
.Puedes usar
PROJECT_A
para exportar metadatos de activos dePROJECT_B
a un Tema de Pub/Sub, bucket de Cloud Storage o BigQuery ubicada enPROJECT_B
.
Para exportar metadatos de activos de un proyecto a otro, completa las siguientes instrucciones:
Asegúrate de que la API de Cloud Asset Inventory esté habilitada en el proyecto desde el que deseas ejecutar la solicitud,
PROJECT_A
.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 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 un número de proyecto de Google Cloud
Consola de Google Cloud
Para encontrar un número de proyecto de Google Cloud, completa los siguientes pasos:
-
Ve a la página Te damos la bienvenida en la consola de Google Cloud.
- Haz clic en el cuadro de lista de selector en la barra de menú.
-
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 Welcome.
Se muestran hasta 4,000 recursos. Si no encuentras el proyecto que buscas, ve a en la página Administrar recursos filtrar la lista con el nombre de ese proyecto.
gcloud CLI
Puedes recuperar un número de proyecto de Google Cloud con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
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 permiso 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 del 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.objectCreator
Para escribir en una tabla de BigQuery, otorga el permiso Editor de datos de BigQuery (
roles/bigquery.dataEditor
) y Usuario de BigQuery (roles/bigquery.user
) a la cuenta de servicio del 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.user 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
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.