Je nach Ihren Anforderungen müssen Sie Ihre Architektur möglicherweise so gestalten, dass sie bei der Verwendung von Cloud Asset Inventory in mehreren Projekten funktioniert. Die folgenden Szenarien kommen am häufigsten vor:
Orchestrator-Projekte: Wenn Sie möchten, dass ein einzelnes Projekt Cloud Asset Inventory-Vorgänge in anderen Projekten auslöst.
Projektübergreifend exportieren: Wenn Sie Ressourcenmetadaten aus einem Projekt in ein anderes exportieren möchten.
Für jedes dieser Szenarien ist eine Einrichtung erforderlich, damit die Vorgänge erfolgreich abgeschlossen werden.
Orchestrator-Projekte
Wenn Sie ein Projekt verwenden, um Cloud Asset Inventory-Vorgänge für Ressourcen in einem anderen Projekt auszulösen, müssen Sie in bestimmten Szenarien angeben, dass das Standard-Cloud Asset Inventory-Dienstkonto im anderen Projekt zum Ausführen 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 in dem Projekt, aus dem der Aufruf erfolgt. Dieses Konto hat möglicherweise nicht die Berechtigungen, die zum Ausführen des Vorgangs erforderlich sind.
Obwohl es nicht für alle Vorgänge erforderlich ist, kann es sinnvoll sein, immer ein Abrechnungsprojekt anzugeben, um Verwirrung zu vermeiden.
gcloud
Fügen Sie für die gcloud CLI Ihrem 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 bei Bedarf 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, 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 Pub/Sub-Zielthemas, 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 Standarddienstkonto für Cloud Asset Inventory in PROJECT_A Zugriff auf die Ressourcen in PROJECT_B gewähren.
Dadurch wird Folgendes ermöglicht:
Sie können Assetmetadaten aus
PROJECT_Ain ein Pub/Sub-Thema, einen Cloud Storage-Bucket oder eine BigQuery-Tabelle inPROJECT_Bexportieren.Mit
PROJECT_Akönnen Sie Assetmetadaten ausPROJECT_Bin ein Pub/Sub-Thema, einen Cloud Storage-Bucket oder eine BigQuery-Tabelle inPROJECT_Bexportieren.
So exportieren Sie Assetmetadaten aus einem Projekt in ein anderes:
Achten Sie darauf, dass die Cloud Asset Inventory API in dem Projekt aktiviert ist, aus dem Sie die Anfrage ausführen möchten,
PROJECT_A.Rufen Sie die Cloud Asset Inventory API in
PROJECT_Amindestens einmal auf, 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.serviceAgentGoogle Cloud Projektnummer finden
Google Cloud Console
So finden Sie die Projektnummer eines Google Cloud -Projekts:
-
Rufen Sie in der Google Cloud Console die Seite Willkommen auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
-
Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach Ihrem 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 sehen, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste nach dem Namen des Projekts.
gcloud-CLI
Sie können eine Google Cloud Projektnummer mit dem folgenden Befehl abrufen:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
Weisen Sie dem Dienstkonto in
PROJECT_Adie 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.publisherWenn 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.adminWenn Sie in eine BigQuery-Tabelle schreiben möchten, weisen Sie dem Dienstkonto im Projekt die Rollen BigQuery-Datenbearbeiter (
roles/bigquery.dataEditor) und BigQuery-Nutzer (roles/bigquery.user) zu: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.