Sie können Assets in Ihrem Projekt, Ordner oder Ihrer Organisation mit einem BigQuery-SQL-kompatiblen Dialekt abfragen.
Hinweise
Aktivieren Sie die Cloud Asset Inventory API in dem Projekt, in dem Sie Cloud Asset Inventory-Befehle ausführen.
Prüfen Sie, ob Ihrem Konto die richtige Rolle zum Aufrufen der Cloud Asset Inventory API zugewiesen ist. Informationen zu den einzelnen Berechtigungen für jeden Anruftyp finden Sie unter Berechtigungen.
Beschränkungen
In den Namen von Asset-Typen wurden
.
und/
durch_
ersetzt. Auscompute.googleapis.com/Instance
wird beispielsweisecompute_googleapis_com_Instance
.Die Anfrage muss eine
SELECT
-Abfrage sein.Legacy BigQuery SQL wird nicht unterstützt.
Abfrageergebnisse, die größer als 10 GB sind, werden nicht unterstützt.
Abfrageergebnisse, die größer als 10 MB oder 1.000 Zeilen sind, werden immer auf mehrere Seiten aufgeteilt.
Die Verarbeitung von Abfragen darf nicht länger als 6 Stunden dauern.
Abfrageergebnisse können nur in ein BigQuery-Dataset in der
US
multiregionalen Region exportiert werden.
Abfragbare Tabellen
Sie können die folgenden Tabellen abfragen:
Bei
RESOURCE
-Inhaltstypen entsprechen die Tabellennamen im Dataset dem Namen des Asset-Typs, vorausgesetzt, der Asset-Typ ist vorhanden. Die Tabellecompute_googleapis_com_Instance
enthält beispielsweise Compute Engine-Instanzmetadaten.Bei anderen Inhaltstypen als
RESOURCE
entsprechen die Tabellennamen im Dataset den RPC-/REST-Inhaltstypnamen. Beispiel:ACCESS_POLICY
Wenn Sie Standard-Metadaten für Ressourcen über alle Ressourcentypen hinweg abfragen möchten, verwenden Sie den Tabellennamen
STANDARD_METADATA
. Dazu gehören alle Felder mit Ausnahme vonresource.DATA
, das für jeden Ressourcentyp spezifisch ist.
Asset-Metadaten abfragen
Console
So kannst du die Asset-Metadaten für dein Projekt, deinen Ordner oder deine Organisation abfragen:
-
Rufen Sie in der Google Cloud -Console auf der Seite Asset Inventory den Tab Asset query auf.
Wenn der Tab Asset-Abfrage nicht angezeigt wird, benötigen Sie Zugriff auf die Premium- oder Enterprise-Stufe von Security Command Center oder auf Gemini Cloud Assist.
- Wechseln Sie zu dem Projekt, dem Ordner oder der Organisation, die Sie abfragen möchten.
- Klicken Sie auf den Tab Asset-Abfrage.
-
Du kannst entweder eine Beispielabfrage verwenden oder eine eigene erstellen:
- Wenn Sie ein Beispiel verwenden möchten, klicken Sie auf dem Tab Abfragebibliothek auf einen Eintrag, um eine Vorschau der Abfrage aufzurufen. Klicken Sie auf „Übernehmen“, um das Beispiel in das Feld Abfrage bearbeiten zu kopieren. Bearbeiten Sie die Abfrage oder klicken Sie auf Ausführen, um sie auszuführen.
- Wenn Sie eine eigene Abfrage erstellen möchten, geben Sie den Abfragetext direkt in das Feld Abfrage bearbeiten ein und klicken Sie dann auf Ausführen, um sie auszuführen. Wenn Sie eine eigene Abfrage erstellen möchten, können Sie im Bereich Tabelle auswählen auf eine Tabelle klicken, um eine Vorschau des Schemas und des Inhalts zu erhalten. Informationen zum Erstellen einer Abfrage finden Sie unter Abfragesyntax.
Die mit der Abfrage übereinstimmenden Asset-Metadaten werden auf dem Tab Abfrageergebnis angezeigt.
-
Optional: Wenn Sie die Abfrageergebnismengen im CSV-Format herunterladen möchten, klicken Sie auf Exportieren.
Die maximale Größe der CSV-Datei beträgt 2 MB. Wenn die Downloadanfrage fehlschlägt, weil die Dateigröße dieses Limit überschreitet, wird eine Meldung mit einer Anleitung zum Exportieren der vollständigen Ergebnisse angezeigt.
gcloud
gcloud asset query \ --SCOPE \ --statement="SQL_SELECT_QUERY" \ --timeout="TIMEOUTs"
Geben Sie folgende Werte an:
-
SCOPE
: Verwenden Sie einen der folgenden Werte:-
project=PROJECT_ID
, wobeiPROJECT_ID
die ID des Projekts ist, das die Assets enthält, die Sie abfragen möchten. -
folder=FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Assets ist, die du abfragen möchtest.ID eines Ordners in Google Cloud ermitteln
Google Cloud Console
So rufen Sie die ID eines Ordners in Google Cloud ab:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, wobeiORGANIZATION_ID
die ID der Organisation ist, zu der die Assets gehören, die Sie abfragen möchten.ID einer Google Cloud -Organisation ermitteln
Google Cloud Console
So ermitteln Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: Eine SQL-SELECT
Abfrage. -
TIMEOUT
: Optional. Die maximale Wartezeit in Sekunden, die ein Client auf die Ausführung der Abfrage warten sollte, bevor er fortfährt. Verwenden Sie Zeitüberschreitungen, um die Abfrage asynchron auszuführen und die Ergebnisse später mithilfe von Jobreferenzen abzurufen.
Eine vollständige Liste der Optionen finden Sie in der Referenz zur gcloud CLI.
Beispiel
Führen Sie den folgenden Befehl aus, um die Namen und Asset-Typen der ersten beiden Compute Engine-Instanzen im Projekt my-project
abzurufen.
gcloud asset query \ --project=my-project \ --statement=" SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2"
Antwort für abgeschlossenen Job
Das folgende Beispiel zeigt eine Antwort auf die vorherige Beispielabfrage. Die Antwort enthält eine Jobreferenz und gibt an, ob der Job abgeschlossen ist (done: true
). Wenn der Job abgeschlossen ist, werden die entsprechenden Daten in das queryResult
-Objekt eingefügt und die Ergebnisse werden danach aufgelistet.
done: true jobReference: 0000000000000000000000000000000000000000000000000000000000000000 queryResult: nextPageToken: '' totalRows: '2' name: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1 assetType: compute.googleapis.com/Instance name: //compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/instance-2 assetType: compute.googleapis.com/Instance
Antwort auf nicht abgeschlossenen Job
Wenn Sie in Ihrer Anfrage ein Zeitlimit festlegen, wird die Abfrage asynchron ausgeführt und Sie erhalten eine Antwort, die angibt, dass der Job noch nicht abgeschlossen ist (done: false
). Diese Art von Antworten enthält eine Jobreferenz und ein leeres queryResult
-Objekt:
done: false jobReference: 0000000000000000000000000000000000000000000000000000000000000000 queryResult: nextPageToken: '' totalRows: '0'
Mit dem Wert jobReference
können Sie die Abfrageergebnisse später abrufen, nachdem der Job abgeschlossen ist und die Daten verfügbar sind.
REST
HTTP-Methode und URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
JSON-Text anfordern:
{ "statement": "SQL_SELECT_QUERY", "timeout": "TIMEOUTs", "pageSize": "PAGE_SIZE", "pageToken": "PAGE_TOKEN" }
Geben Sie folgende Werte an:
-
SCOPE_PATH
: Verwenden Sie einen der folgenden Werte:Zulässige Werte:
-
projects/PROJECT_ID
, wobeiPROJECT_ID
die ID des Projekts ist, das die Assets enthält, die Sie abfragen möchten. -
projects/PROJECT_NUMBER
, wobeiPROJECT_NUMBER
die Nummer des Projekts ist, das die Assets enthält, die Sie abfragen möchten.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 Namen Ihres Projekts. 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)"
-
-
folders/FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Assets ist, die du abfragen möchtest.ID eines Ordners in Google Cloud ermitteln
Google Cloud Console
So rufen Sie die ID eines Ordners in Google Cloud ab:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, wobeiORGANIZATION_ID
die ID der Organisation ist, zu der die Assets gehören, die Sie abfragen möchten.ID einer Google Cloud -Organisation ermitteln
Google Cloud Console
So ermitteln Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: Eine SQL-SELECT
Abfrage. -
TIMEOUT
: Optional. Die maximale Wartezeit in Sekunden, die ein Client auf die Ausführung der Abfrage warten sollte, bevor er fortfährt. Verwenden Sie Zeitüberschreitungen, um die Abfrage asynchron auszuführen und die Ergebnisse später mithilfe von Jobreferenzen abzurufen. -
PAGE_SIZE
: Optional. Die Anzahl der Ergebnisse, die pro Seite zurückgegeben werden sollen. Der Maximalwert beträgt 500. Wenn der Wert auf0
oder einen negativen Wert festgelegt ist, wird ein geeigneter Standardwert ausgewählt. EinnextPageToken
wird zurückgegeben, um nachfolgende Ergebnisse abzurufen. -
PAGE_TOKEN
: Optional. Lange Antwortantworten werden auf mehrere Seiten verteilt. WennpageToken
nicht angegeben ist, wird die erste Seite zurückgegeben. Nachfolgende Seiten können aufgerufen werden, indem der WertnextPageToken
der vorherigen Antwort als Wert fürpageToken
verwendet wird.
Weitere Informationen zu allen Optionen finden Sie in der REST-Referenz.
Befehlsbeispiele
Führen Sie einen der folgenden Befehle aus, um die Namen und Asset-Typen der ersten beiden Compute Engine-Instanzen im Projekt my-project
abzurufen.
curl (Linux, macOS oder Cloud Shell)
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } $body = @" { "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Antwort für abgeschlossenen Job
Das folgende Beispiel zeigt eine Antwort auf die vorherige Beispielabfrage. Die Antwort enthält eine Jobreferenz und gibt an, ob der Job abgeschlossen ist ("done": true
). Ist dies der Fall, wird das queryResult
-Objekt mit den entsprechenden Daten ausgefüllt.
Die Abfrageergebnisse werden in rows
, ein Array mit Asset-Metadaten, und schema
, ein Objekt, das das Schema für jedes Asset im rows
-Array beschreibt, unterteilt. So soll die Duplizierung von Feldnamen und ‑typen in großen Antworten minimiert werden.
Ebenso werden f
und v
im rows
-Array anstelle von fields
und value
verwendet, um die Antworten so klein wie möglich zu halten.
{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000", "done": true, "queryResult": { "rows": [ { "f": [ { "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1" }, { "v": "compute.googleapis.com/Instance" } ] }, { "f": [ { "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-2" }, { "v": "compute.googleapis.com/Instance" } ] } ], "schema": { "fields": [ { "field": "name", "type": "STRING", "mode": "NULLABLE", "fields": [] }, { "field": "assetType", "type": "STRING", "mode": "NULLABLE", "fields": [] } ] }, "nextPageToken": "", "totalRows": "1" } }
Antwort auf nicht abgeschlossenen Job
Wenn Sie in Ihrer Anfrage ein Zeitlimit festlegen, wird die Abfrage asynchron ausgeführt und Sie erhalten eine Antwort, die angibt, dass der Job noch nicht abgeschlossen ist ("done": false
). Diese Art von Antworten enthält eine Jobreferenz und ein leeres queryResult
-Objekt:
{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000", "done": false, "queryResult": { "rows": [], "schema": { "fields": [] }, "nextPageToken": "", "totalRows": "0" } }
Mit dem Wert jobReference
können Sie die Abfrageergebnisse später abrufen, nachdem der Job abgeschlossen ist und die Daten verfügbar sind.
Abfrageergebnisse später abrufen
Wenn Sie eine Anfrage, die lange gedauert hat, später abrufen möchten, können Sie eine der folgenden Anfragen senden.
gcloud
gcloud asset query \ --SCOPE \ --job-reference="JOB_REFERENCE"
Geben Sie folgende Werte an:
-
SCOPE
: Verwenden Sie einen der folgenden Werte:-
project=PROJECT_ID
, wobeiPROJECT_ID
die ID des Projekts ist, das die Assets enthält, die Sie abfragen möchten. -
folder=FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Assets ist, die du abfragen möchtest.ID eines Ordners in Google Cloud ermitteln
Google Cloud Console
So rufen Sie die ID eines Ordners in Google Cloud ab:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, wobeiORGANIZATION_ID
die ID der Organisation ist, zu der die Assets gehören, die Sie abfragen möchten.ID einer Google Cloud -Organisation ermitteln
Google Cloud Console
So ermitteln Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: Der Wert der Jobreferenz, der in einer vorherigen Antwort zurückgegeben wurde.
Beispiel
Führen Sie den folgenden Befehl aus, um die Ergebnisse einer zuvor ausgeführten Abfrage im Projekt my-project
abzurufen.
gcloud asset query \ --project=my-project \ --job-reference="0000000000000000000000000000000000000000000000000000000000000000"
REST
HTTP-Methode und URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
JSON-Text anfordern:
{ "jobReference": "JOB_REFERENCE", "pageToken": "PAGE_TOKEN" }
Geben Sie folgende Werte an:
-
SCOPE_PATH
: Verwenden Sie einen der folgenden Werte:Zulässige Werte:
-
projects/PROJECT_ID
, wobeiPROJECT_ID
die ID des Projekts ist, das die Assets enthält, die Sie abfragen möchten. -
projects/PROJECT_NUMBER
, wobeiPROJECT_NUMBER
die Nummer des Projekts ist, das die Assets enthält, die Sie abfragen möchten.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 Namen Ihres Projekts. 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)"
-
-
folders/FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Assets ist, die du abfragen möchtest.ID eines Ordners in Google Cloud ermitteln
Google Cloud Console
So rufen Sie die ID eines Ordners in Google Cloud ab:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, wobeiORGANIZATION_ID
die ID der Organisation ist, zu der die Assets gehören, die Sie abfragen möchten.ID einer Google Cloud -Organisation ermitteln
Google Cloud Console
So ermitteln Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: Der Wert der Jobreferenz, der in einer vorherigen Antwort zurückgegeben wurde. -
PAGE_TOKEN
: Optional. Lange Antwortantworten werden auf mehrere Seiten verteilt. WennpageToken
nicht angegeben ist, wird die erste Seite zurückgegeben. Nachfolgende Seiten können aufgerufen werden, indem der WertnextPageToken
der vorherigen Antwort als Wert fürpageToken
verwendet wird.
Befehlsbeispiele
Führen Sie einen der folgenden Befehle aus, um die Ergebnisse einer zuvor ausgeführten Abfrage abzurufen.
curl (Linux, macOS oder Cloud Shell)
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } $body = @" { "jobReference": "0000000000000000000000000000000000000000000000000000000000000000" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Abfrageergebnisse nach BigQuery exportieren
Abfrageergebnisse werden als Query Assets API-Antworten zurückgegeben. Wenn Sie die Ergebnisse in eine eigene BigQuery-Tabelle exportieren möchten, geben Sie in der Anfrage ein BigQuery-Ziel an. Falls noch nicht geschehen, müssen Sie ein BigQuery-Dataset erstellen, bevor Sie diese Anfragen stellen können.
gcloud
gcloud asset query \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --statement="SQL_SELECT_QUERY" \ --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \ --write-disposition="WRITE_METHOD"
Geben Sie folgende Werte an:
-
SCOPE
: Verwenden Sie einen der folgenden Werte:-
project=PROJECT_ID
, wobeiPROJECT_ID
die ID des Projekts ist, das die Asset-Metadaten enthält, die du mit einer SQL-Abfrage exportieren möchtest. -
folder=FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Asset-Metadaten ist, die du mit einer SQL-Abfrage exportieren möchtest.ID eines Ordners in Google Cloud ermitteln
Google Cloud Console
So rufen Sie die ID eines Ordners in Google Cloud ab:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, wobeiORGANIZATION_ID
die ID der Organisation ist, die die Asset-Metadaten enthält, die Sie mit einer SQL-Abfrage exportieren möchten.ID einer Google Cloud -Organisation ermitteln
Google Cloud Console
So ermitteln Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: Eine SQL-SELECT
Abfrage. -
BIGQUERY_PROJECT_ID
: Die ID des Projekts, in dem sich die BigQuery-Tabelle befindet, in die Sie exportieren möchten. -
DATASET_ID
: Die ID des BigQuery-Datasets. -
TABLE_NAME
: Die BigQuery-Tabelle, in die Sie Ihre Metadaten exportieren. Wenn das nicht der Fall ist, wird es erstellt. -
WRITE_METHOD
: Gibt an, was passiert, wenn die BigQuery-Zieltabelle oder ‑Partition bereits vorhanden ist. Folgende Werte werden unterstützt:-
write-empty
: Standard. Wenn die vorhandene Tabelle Daten enthält, wird im Jobergebnis ein Fehler wegen Duplikaten zurückgegeben. -
write-append
: Daten werden an die Tabelle oder die neueste Partition angehängt. -
write-truncate
: Überschreibt die gesamte Tabelle oder alle Partitionsdaten.
-
Beispiel
Führen Sie den folgenden Befehl aus, um die Namen und Asset-Typen der ersten beiden Compute Engine-Instanzen im Projekt my-project
abzurufen und die Ergebnisse in die BigQuery-Tabelle my-table
im Projekt my-project
zu exportieren. Wenn die Tabelle bereits vorhanden ist, wird sie überschrieben.
gcloud asset query \ --project=my-project \ --statement=" SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" \ --bigquery-table=projects/my-project/datasets/my-dataset/tables/my-table \ --write-disposition="write-truncate"
REST
HTTP-Methode und URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Header:
X-Goog-User-Project: BILLING_PROJECT_ID
JSON-Text anfordern:
{ "statement": "SQL_SELECT_QUERY", "outputConfig": { "bigqueryDestination": { "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID", "table": "TABLE_NAME", "writeDisposition": "WRITE_METHOD" } }, "pageSize": "PAGE_SIZE" }
Geben Sie folgende Werte an:
-
SCOPE_PATH
: Verwenden Sie einen der folgenden Werte:Zulässige Werte:
-
projects/PROJECT_ID
, wobeiPROJECT_ID
die ID des Projekts ist, das die Asset-Metadaten enthält, die du mit einer SQL-Abfrage exportieren möchtest. -
projects/PROJECT_NUMBER
, wobeiPROJECT_NUMBER
die Nummer des Projekts mit den Asset-Metadaten ist, die du mit einer SQL-Abfrage exportieren möchtest.Projektnummer für Google Cloud ermitteln
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 Schalter.
-
Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Namen Ihres Projekts. 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)"
-
-
folders/FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Asset-Metadaten ist, die du mit einer SQL-Abfrage exportieren möchtest.ID eines Ordners in Google Cloud ermitteln
Google Cloud Console
So rufen Sie die ID eines Ordners in Google Cloud ab:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, wobeiORGANIZATION_ID
die ID der Organisation ist, die die Asset-Metadaten enthält, die Sie mit einer SQL-Abfrage exportieren möchten.ID einer Google Cloud -Organisation ermitteln
Google Cloud Console
So ermitteln Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud -Konsole auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: Die Projekt-ID, in der sich der standardmäßige Cloud Asset Inventory-Dienstagent befindet, der Berechtigungen zum Verwalten Ihrer BigQuery-Datasets und ‑Tabellen hat. Weitere Informationen zum Festlegen des Abrechnungsprojekts -
SQL_SELECT_QUERY
: Eine SQL-SELECT
Abfrage. -
BIGQUERY_PROJECT_ID
: Die ID des Projekts, in dem sich die BigQuery-Tabelle befindet, in die Sie exportieren möchten. -
DATASET_ID
: Die ID des BigQuery-Datasets. -
TABLE_NAME
: Die BigQuery-Tabelle, in die Sie Ihre Metadaten exportieren. Wenn das nicht der Fall ist, wird es erstellt. -
WRITE_METHOD
: Gibt an, was passiert, wenn die BigQuery-Zieltabelle oder ‑Partition bereits vorhanden ist. Folgende Werte werden unterstützt:-
WRITE_EMPTY
: Standard. Wenn die vorhandene Tabelle Daten enthält, wird im Jobergebnis ein Fehler wegen Duplikaten zurückgegeben. -
WRITE_APPEND
: Daten werden an die Tabelle oder die neueste Partition angehängt. -
WRITE_TRUNCATE
: Überschreibt die gesamte Tabelle oder alle Partitionsdaten.
-
-
PAGE_SIZE
: Optional. Die Anzahl der Ergebnisse, die pro Seite zurückgegeben werden sollen. Der Maximalwert beträgt 500. Wenn der Wert auf0
oder einen negativen Wert festgelegt ist, wird ein geeigneter Standardwert ausgewählt. EinnextPageToken
wird zurückgegeben, um nachfolgende Ergebnisse abzurufen.
Befehlsbeispiele
Führen Sie einen der folgenden Befehle aus, um die Namen und Asset-Typen der ersten beiden Compute Engine-Instanzen im Projekt my-project
abzurufen, und exportieren Sie die Ergebnisse in die BigQuery-Tabelle my-table
im Projekt my-project
. Wenn die Tabelle bereits vorhanden ist, wird sie überschrieben.
curl (Linux, macOS oder Cloud Shell)
curl -X POST \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "writeDisposition": "WRITE_TRUNCATE" } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "writeDisposition": "WRITE_TRUNCATE" } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Weitere Beispiele für SQL-Abfrage
Die folgenden Codebeispiele zeigen bestimmte SQL-Abfragen, mit denen du nach Assets suchen kannst. Sie können dir dabei helfen, eigene Abfragen zu erstellen.
Compute Engine-VM-Instanzen in einer bestimmten Region
Gib außerdem die name
und das Erstellungsdatum zurück.
SELECT
name,
resource.DATA.creationTimestamp
FROM
compute_googleapis_com_Instance
WHERE
resource.location LIKE '%asia%'
Anzahl der BigQuery-Datasets in jedem Projekt
SELECT
ancestor AS project,
COUNT(*)
FROM
bigquery_googleapis_com_Dataset
CROSS JOIN
UNNEST (ancestors) AS ancestor
WHERE
ancestor LIKE '%project%'
GROUP BY
ancestor
ORDER BY
2 DESC
Anzahl der Compute Engine-VM-Instanzen in jeder Region
SELECT
resource.location,
COUNT(*)
FROM
compute_googleapis_com_Instance
GROUP BY
resource.location
Name und assetType aller Ressourcen in einer Region
SELECT
name,
assetType
FROM
STANDARD_METADATA
WHERE
resource.location LIKE '%asia%'
Öffentlich verfügbare Cloud Storage-Buckets
Senden Sie außerdem das name
zurück.
SELECT
name
FROM
IAM_POLICY
CROSS JOIN
UNNEST(iamPolicy.bindings) AS binding
WHERE
('allUsers' IN UNNEST(binding.members)
OR 'allAuthenticatedUsers' IN UNNEST(binding.members))
AND assetType = 'storage.googleapis.com/Bucket'
Subnetzwerke ohne angehängte VM-Instanzen
SELECT
subnetwork_table.name
FROM
compute_googleapis_com_Subnetwork AS subnetwork_table
LEFT JOIN (
SELECT
interface.subnetwork AS subnetwork
FROM
compute_googleapis_com_Instance
CROSS JOIN
UNNEST(resource.DATA.networkInterfaces) AS interface) AS instance_table
ON
SUBSTR(subnetwork_table.name, 25) = SUBSTR(instance_table.subnetwork,38)
WHERE
instance_table.subnetwork IS NULL
AND NOT subnetwork_table.name LIKE '%default%'