In mehreren Projekten arbeiten

Je nach Ihren Anforderungen müssen Sie Ihre Architektur möglicherweise so gestalten, dass sie für mehrere Projekte funktioniert, wenn Sie Cloud Asset Inventory verwenden. Die folgenden Szenarien sind am häufigsten:

Für jedes dieser Szenarien ist eine gewisse Einrichtung erforderlich, damit die Vorgänge erfolgreich abgeschlossen werden.

Orchestrator-Projekte

Wenn Sie mit einem Projekt Cloud Asset Inventory-Vorgänge für Ressourcen in einem anderen Projekt auslösen, müssen Sie in bestimmten Fällen angeben, dass der Standard-Cloud Asset Inventory-Dienst in dem anderen Projekt für die Ausführung des Vorgangs verwendet werden soll. Dazu gehören:

Um festzulegen, welches Dienstkonto verwendet werden soll, legen Sie das Abrechnungsprojekt auf die ID des Projekts fest, das die Ressourcen enthält, mit denen Sie arbeiten. Wenn das Abrechnungsprojekt nicht angegeben ist, verwendet Cloud Asset Inventory das Standarddienstkonto von Cloud Asset Inventory im Projekt, das den Aufruf ausführt. Dieses Konto hat möglicherweise nicht die Berechtigungen, die für die Ausführung des Vorgangs erforderlich sind.

Es ist zwar nicht für alle Vorgänge erforderlich, aber es empfiehlt sich, immer ein Abrechnungsprojekt anzugeben, um Verwirrung zu vermeiden.

gcloud

Fügen Sie bei der gcloud CLI dem Befehl das Flag --billing-project hinzu, um die Projekt-ID anzugeben, die das richtige Dienstkonto enthält:

--billing-project=BILLING_PROJECT_ID

Alternativ können Sie das Abrechnungsprojekt festlegen, bevor Sie Befehle mit der gcloud CLI ausführen. Prüfen Sie zuerst, ob sich das Abrechnungsprojekt vom Kernprojekt unterscheidet:

gcloud config list

Legen Sie dann gegebenenfalls das Abrechnungsprojekt fest:

gcloud config set billing/quota_project BILLING_PROJECT_ID

Geben Sie folgende Werte an:

  • BILLING_PROJECT_ID: Eine Projekt-ID, für die die Cloud Asset Inventory API aktiviert ist, und ein Dienstkonto mit Berechtigungen zum Verwalten des Ziel-Pub/Sub-Themas, des Cloud Storage-Bucket oder der BigQuery-Tabelle.

REST

Fügen Sie für die REST API den Header X-Goog-User-Project hinzu, um die Projekt-ID anzugeben, die das richtige Dienstkonto enthält:

"X-Goog-User-Project: BILLING_PROJECT_ID"

Geben Sie folgende Werte an:

  • BILLING_PROJECT_ID: Eine Projekt-ID, für die die Cloud Asset Inventory API aktiviert ist, und ein Dienstkonto mit Berechtigungen zum Verwalten des Ziel-Pub/Sub-Themas, des Cloud Storage-Bucket oder der BigQuery-Tabelle.

Projektübergreifend exportieren

Wenn Sie Asset-Metadaten aus einem Projekt (PROJECT_A) in ein anderes (PROJECT_B) exportieren möchten, müssen Sie dem Standard-Cloud Asset Inventory-Dienstkonto in PROJECT_A Zugriff auf die Ressourcen in PROJECT_B gewähren.

Dadurch wird Folgendes ermöglicht:

  • Sie können Asset-Metadaten aus PROJECT_A in ein Pub/Sub-Thema, einen Cloud Storage-Bucket oder eine BigQuery-Tabelle in PROJECT_B exportieren.

  • Mit PROJECT_A können Sie Asset-Metadaten aus PROJECT_B in ein Pub/Sub-Thema, einen Cloud Storage-Bucket oder eine BigQuery-Tabelle in PROJECT_B exportieren.

So exportierst du Asset-Metadaten aus einem Projekt in ein anderes:

  1. Die Cloud Asset Inventory API muss in dem Projekt PROJECT_A aktiviert sein, aus dem Sie die Anfrage ausführen möchten.

  2. Führen Sie mindestens einen Aufruf der Cloud Asset Inventory API in PROJECT_A aus, um das Standarddienstkonto für Cloud Asset Inventory zu erstellen. Alternativ können Sie sie auch manuell erstellen:

    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
    

    Projektnummer für Google Cloud ermitteln

    Google Cloud Console

    So rufen Sie die Projektnummer eines Google Cloud -Projekts ab:

    1. Rufen Sie in der Google Cloud -Console die Seite Willkommen auf.

      Zur Begrüßungsseite

    2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
    3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.

      Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht finden, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste mit dem Namen des Projekts.

    gcloud-CLI

    Sie können die Projektnummer eines Google Cloud -Projekts mit dem folgenden Befehl abrufen:

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

  3. Weisen Sie dem Dienstkonto in PROJECT_A die richtigen Rollen zu.

    • Wenn Sie über Pub/Sub in einem Feed veröffentlichen möchten, weisen Sie dem Dienstkonto für das Thema die Rolle Pub/Sub-Publisher (roles/pubsub.publisher) zu:

      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
      
    • Wenn Sie in einen Cloud Storage-Bucket schreiben möchten, weisen Sie dem Dienstkonto für den Bucket die Rolle Storage-Administrator (roles/storage.admin) zu:

      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
      
    • Wenn Sie in eine BigQuery-Tabelle schreiben möchten, gewähren Sie dem Dienstkonto im Projekt die Rollen BigQuery-Datenbearbeiter (roles/bigquery.dataEditor) und BigQuery-Nutzer (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
      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
      

Wenn Sie eine Cloud Asset Inventory-Anfrage mit der gcloud CLI von PROJECT_B aus stellen oder die REST API verwenden, müssen Sie PROJECT_A als Abrechnungsprojekt angeben.