Selon vos besoins, vous devrez peut-être concevoir votre architecture pour qu'elle fonctionne dans plusieurs projets lorsque vous utilisez l'inventaire des éléments cloud. Voici les scénarios les plus courants :
Projets d'orchestrateur : lorsque vous souhaitez qu'un seul projet déclenche des opérations inventaire des éléments cloud dans d'autres projets.
Exporter entre projets : lorsque vous souhaitez exporter des métadonnées de ressources d'un projet vers un autre.
Chacun de ces scénarios nécessite une configuration pour garantir la réussite des opérations.
Projets d'orchestrateur
Lorsque vous utilisez un projet pour déclencher des opérations d'inventaire des éléments cloud sur des ressources d'un autre projet, vous devez parfois spécifier que le compte de service d'inventaire des éléments cloud par défaut de l'autre projet doit être utilisé pour effectuer l'opération. Voici quelques exemples :
Exporter les métadonnées des composants vers des buckets Cloud Storage
Surveiller les modifications apportées aux éléments avec Pub/Sub
Pour définir le compte de service à utiliser, définissez le projet de facturation sur l'ID du projet contenant les ressources sur lesquelles vous travaillez. Si le projet de facturation n'est pas spécifié, inventaire des éléments cloud utilise le compte de service inventaire des éléments cloud par défaut dans le projet qui effectue l'appel, lequel peut ne pas disposer des autorisations requises pour effectuer l'opération.
Bien que ce ne soit pas obligatoire pour toutes les opérations, il peut être judicieux de toujours spécifier un projet de facturation pour éviter toute confusion.
gcloud
Pour gcloud CLI, ajoutez l'option --billing-project à votre commande pour spécifier l'ID du projet contenant le compte de service approprié :
--billing-project=BILLING_PROJECT_ID
Vous pouvez également définir le projet de facturation avant d'exécuter des commandes avec la gcloud CLI. Tout d'abord, vérifiez si le projet de facturation est différent du projet principal :
gcloud config list
Ensuite, si nécessaire, définissez le projet de facturation :
gcloud config set billing/quota_project BILLING_PROJECT_ID
Indiquez les valeurs suivantes :
BILLING_PROJECT_ID: ID de projet pour lequel l'API Cloud Asset Inventory est activée, et compte de service disposant des autorisations nécessaires pour gérer votre sujet Pub/Sub, votre bucket Cloud Storage ou votre table BigQuery cibles.
REST
Pour l'API REST, ajoutez l'en-tête X-Goog-User-Project pour spécifier l'ID du projet contenant le compte de service approprié :
"X-Goog-User-Project: BILLING_PROJECT_ID"
Indiquez les valeurs suivantes :
BILLING_PROJECT_ID: ID de projet pour lequel l'API Cloud Asset Inventory est activée, et compte de service disposant des autorisations nécessaires pour gérer votre sujet Pub/Sub, votre bucket Cloud Storage ou votre table BigQuery cibles.
Exporter entre les projets
Pour exporter les métadonnées d'éléments d'un projet (PROJECT_A) vers un autre (PROJECT_B), vous devez accorder au compte de service inventaire des éléments cloud par défaut dans PROJECT_A l'accès aux ressources dans PROJECT_B.
Cela permet deux choses :
Vous pouvez exporter les métadonnées des éléments de
PROJECT_Avers un sujet Pub/Sub, un bucket Cloud Storage ou une table BigQuery situés dansPROJECT_B.Vous pouvez utiliser
PROJECT_Apour exporter les métadonnées des éléments dePROJECT_Bvers un sujet Pub/Sub, un bucket Cloud Storage ou une table BigQuery situés dansPROJECT_B.
Pour exporter des métadonnées d'éléments d'un projet vers un autre, suivez les instructions ci-dessous :
Assurez-vous que l'API Cloud Asset Inventory est activée dans le projet à partir duquel vous souhaitez exécuter votre requête,
PROJECT_A.Effectuez au moins un appel à l'API Cloud Asset Inventory dans
PROJECT_Apour créer le compte de service inventaire des éléments cloud par défaut. Vous pouvez également le créer manuellement :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.serviceAgentTrouver le numéro d'un projet Google Cloud
ConsoleGoogle Cloud
Pour trouver le numéro d'un projet Google Cloud , procédez comme suit :
-
Accédez à la page d'accueil de la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
-
Sélectionnez votre organisation dans la zone de liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.
Jusqu'à 4 000 ressources sont affichées. Si vous ne voyez pas le projet que vous recherchez, accédez à la page Gérer les ressources et filtrez la liste à l'aide du nom de ce projet.
gcloud CLI
Vous pouvez récupérer un numéro de projet Google Cloud avec la commande suivante :
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
Attribuez les rôles appropriés au compte de service dans
PROJECT_A.Pour publier dans un flux via Pub/Sub, attribuez le rôle Éditeur Pub/Sub (
roles/pubsub.publisher) au compte de service sur le sujet :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.publisherPour écrire dans un bucket Cloud Storage, attribuez le rôle Administrateur de l'espace de stockage (
roles/storage.admin) au compte de service sur le 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.adminPour écrire dans une table BigQuery, attribuez les rôles Éditeur de données BigQuery (
roles/bigquery.dataEditor) et Utilisateur BigQuery (roles/bigquery.user) au compte de service dans le projet :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 vous envoyez une requête inventaire des éléments cloud avec gcloud CLI depuis PROJECT_B ou si vous utilisez l'API REST, veillez à spécifier PROJECT_A comme projet de facturation.