Travailler sur plusieurs projets

Selon vos besoins, vous devrez peut-être concevoir votre architecture pour qu'elle fonctionne sur plusieurs projets lors de l'utilisation de l'inventaire des éléments cloud. Les scénarios suivants sont les plus courants :

  • Projets d'orchestration: lorsque vous souhaitez qu'un seul projet déclencher des opérations d'inventaire des éléments cloud dans d'autres projets.

  • Exporter entre projets: lorsque vous souhaitez exporter des ressources les métadonnées d'un projet à un autre.

Chacun de ces scénarios nécessite une certaine configuration pour garantir que les opérations se terminent avec succès.

Projets d'orchestrateur

Lorsque vous utilisez un projet pour déclencher des opérations d'inventaire des éléments cloud sur les ressources de dans un autre projet, dans certains cas, vous devez spécifier que compte de service inventaire des éléments cloud de l'autre projet pour effectuer la opération. Voici quelques exemples de scénarios :

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 les paramètres de facturation projet n'est pas spécifié, l'inventaire des éléments cloud utilise l'inventaire par défaut des éléments cloud compte de service dans le projet qui effectue l'appel, qui peut ne pas avoir autorisations requises pour terminer l'opération.

Bien que cela ne soit pas obligatoire pour toutes les opérations, il est recommandé de toujours spécifier un projet de facturation pour éviter toute confusion.

gcloud

Pour la gcloud CLI, ajoutez l'option --billing-project à votre commande pour spécifier l'ID de 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 de base:

gcloud config list

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 : un ID de projet avec l'API Cloud Asset Inventory activée et un 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 de projet contenant le compte de service approprié :

"X-Goog-User-Project: BILLING_PROJECT_ID"

Indiquez les valeurs suivantes :

  • BILLING_PROJECT_ID: un ID de projet associé au L'API Cloud Asset Inventory est activée, et un compte de service disposant des autorisations nécessaires gérer votre sujet Pub/Sub cible, votre bucket Cloud Storage ou table BigQuery.

Exporter entre projets

Pour exporter les métadonnées des é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 un accès les ressources dans PROJECT_B.

Cela permet deux choses:

  • Vous pouvez exporter les métadonnées des éléments depuis PROJECT_A vers un sujet Pub/Sub, un bucket Cloud Storage ou une table BigQuery situés dans PROJECT_B.

  • Vous pouvez utiliser PROJECT_A pour exporter les métadonnées d'un élément de PROJECT_B dans un Sujet Pub/Sub, bucket Cloud Storage ou BigQuery située dans PROJECT_B.

Pour exporter les métadonnées d'un élément d'un projet vers un autre, procédez comme suit :

  1. Assurez-vous que la propriété L'API Cloud Asset Inventory est activée dans le projet à partir duquel vous souhaitez exécuter votre requête, PROJECT_A.

  2. Effectuez au moins un appel à l'API Cloud Asset Inventory dans PROJECT_A pour créer la 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.serviceAgent
    

    Trouver un numéro de projet Google Cloud

    console Google Cloud

    Pour trouver un numéro de projet Google Cloud, procédez comme suit:

    1. Accédez à la page Bienvenue dans la console Google Cloud.

      <ph type="x-smartling-placeholder"></ph> Accéder à la page d'accueil

    2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
    3. Sélectionnez votre organisation dans la 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 peuvent s'afficher. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.

    CLI gcloud

    Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de la commande suivante :

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

  3. Attribuez les rôles appropriés au compte de service dans PROJECT_A.

    • Pour publier dans un flux via Pub/Sub, accordez le rôle Rôle d'éditeur Pub/Sub (roles/pubsub.publisher) au compte de service associé au 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.publisher
      
    • Pour écrire dans un bucket Cloud Storage, accordez le rôle Administrateur de l'espace de stockage (roles/storage.admin) au compte de service du 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
      
    • Pour écrire dans une table BigQuery, accordez le rôle Éditeur de données BigQuery (roles/bigquery.dataEditor) et Utilisateur BigQuery (roles/bigquery.user) au compte de service du 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.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 vous envoyez une requête d'inventaire des éléments cloud avec la gcloud CLI depuis PROJECT_B ou l'API REST, veillez à spécifiez PROJECT_A comme projet de facturation.