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:
Orchestrator-Projekte: Wenn Sie mit einem einzelnen Projekt Cloud Asset Inventory-Vorgänge in anderen Projekten auslösen möchten.
Projektübergreifend exportieren: Wenn Sie Ressourcenmetadaten aus einem Projekt in ein anderes exportieren möchten.
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 inPROJECT_B
exportieren.Mit
PROJECT_A
können Sie Asset-Metadaten ausPROJECT_B
in ein Pub/Sub-Thema, einen Cloud Storage-Bucket oder eine BigQuery-Tabelle inPROJECT_B
exportieren.
So exportierst du Asset-Metadaten aus einem Projekt in ein anderes:
Die Cloud Asset Inventory API muss in dem Projekt
PROJECT_A
aktiviert sein, aus dem Sie die Anfrage ausführen möchten.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:
-
Rufen Sie in der Google Cloud -Console die Seite Willkommen auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
-
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)"
-
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.