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 Ihr Konto die richtige Rolle zum Aufrufen der Cloud Asset Inventory API hat. Informationen zu den einzelnen Berechtigungen für die einzelnen Anruftypen finden Sie unter Berechtigungen.
Beschränkungen
In den Namen von Asset-Typen werden
.
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 sind oder mehr als 1.000 Zeilen enthalten, werden immer in Seiten unterteilt.
Die Verarbeitung von Anfragen darf nicht länger als 6 Stunden dauern.
Abfrageergebnisse können nur in ein BigQuery-Dataset in der
US
-Multiregion exportiert werden.
Abfragbare Tabellen
Sie können die folgenden Tabellen abfragen:
Bei
RESOURCE
-Inhaltstypen entsprechen die Tabellennamen im Dataset dem Namen des Asset-Typs, sofern dieser vorhanden ist. Die Tabellecompute_googleapis_com_Instance
enthält beispielsweise Metadaten zu Compute Engine-Instanzen.Bei anderen Inhaltstypen als
RESOURCE
entsprechen die Tabellennamen im Dataset den RPC-/REST-Inhaltstypnamen. Beispiel:ACCESS_POLICY
Wenn Sie Standard-Metadaten von Ressourcen über Ressourcentypen hinweg abfragen möchten, verwenden Sie den Tabellennamen
STANDARD_METADATA
. Das umfasst alle Felder mit Ausnahme vonresource.DATA
, das für jeden Ressourcentyp spezifisch ist.
Asset-Metadaten abfragen
Console
So fragen Sie die Asset-Metadaten für Ihr Projekt, Ihren Ordner oder Ihre Organisation ab:
-
Rufen Sie in der Google Cloud Console auf der Seite Asset Inventory den Tab Asset-Abfrage auf.
Wenn der Tab Asset-Abfrage nicht angezeigt wird, benötigen Sie Zugriff auf die Security Command Center Premium- oder Enterprise-Stufe oder Gemini Cloud Assist.
- Wechseln Sie zu dem Projekt, Ordner oder der Organisation, die Sie abfragen möchten.
- Klicken Sie auf den Tab Asset-Abfrage.
-
Wenn Sie Asset-Metadaten abfragen möchten, können Sie 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 dann 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. Wenn Sie eine eigene Abfrage schreiben möchten, können Sie auf eine Tabelle im Bereich Tabelle auswählen klicken, um sich eine Vorschau des Schemas und des Inhalts anzeigen zu lassen. Informationen zum Erstellen einer Abfrage finden Sie unter Abfragesyntax.
Die Asset-Metadaten, die mit der Abfrage übereinstimmen, werden auf dem Tab Abfrageergebnis angezeigt.
-
Optional: Wenn Sie die Abfrageergebnismengen im CSV-Format herunterladen möchten, klicken Sie auf Exportieren.
Die CSV-Datei darf höchstens 2 MB groß sein. 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 mit den Assets ist, die Sie abfragen möchten. -
folder=FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Assets ist, die Sie abfragen möchten.ID eines Google Cloud Ordners finden
Google Cloud console
So finden Sie die ID eines Google Cloud -Ordners:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag
--format
, um weitere Informationen zu den gefundenen Ordnern zu sehen.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 Assets enthält, die Sie abfragen möchten.ID einer Google Cloud Organisation finden
Google Cloud console
So finden Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 Zeit in Sekunden, die ein Client warten sollte, bis die Abfrage abgeschlossen ist, bevor er fortfährt. Verwenden Sie Zeitüberschreitungen, um Ihre Abfrage asynchron auszuführen und die Ergebnisse später mit Jobreferenzen abzurufen.
Alle 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 auf abgeschlossenen Job
Das folgende Beispiel zeigt eine Antwort auf die vorherige Beispielanfrage. Die Antwort enthält eine Jobreferenz und gibt an, ob der Job abgeschlossen ist (done: true
). Wenn der Job abgeschlossen ist, wird das Objekt queryResult
mit den entsprechenden Daten gefüllt und die Ergebnisse werden danach aufgeführt.
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 einen unvollendeten Auftrag
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 nicht ausgefülltes 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 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 mit den Assets ist, 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.Google 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)"
-
-
folders/FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Assets ist, die Sie abfragen möchten.ID eines Google Cloud Ordners finden
Google Cloud console
So finden Sie die ID eines Google Cloud -Ordners:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag
--format
, um weitere Informationen zu den gefundenen Ordnern zu sehen.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 Assets enthält, die Sie abfragen möchten.ID einer Google Cloud Organisation finden
Google Cloud console
So finden Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 Zeit in Sekunden, die ein Client warten sollte, bis die Abfrage abgeschlossen ist, bevor er fortfährt. Verwenden Sie Zeitüberschreitungen, um Ihre Abfrage asynchron auszuführen und die Ergebnisse später mit 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. Es wird einnextPageToken
zurückgegeben, um nachfolgende Ergebnisse abzurufen. -
PAGE_TOKEN
: Optional. Lange Antworten auf Anfragen werden auf mehrere Seiten aufgeteilt. WennpageToken
nicht angegeben ist, wird die erste Seite zurückgegeben. Nachfolgende Seiten können aufgerufen werden, indem SienextPageToken
aus der vorherigen Antwort alspageToken
-Wert verwenden.
Alle Optionen finden Sie in der REST-Referenz.
Beispiele für Befehle
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 auf abgeschlossenen Job
Das folgende Beispiel zeigt eine Antwort auf die vorherige Beispielanfrage. Die Antwort enthält eine Jobreferenz und gibt an, ob der Job abgeschlossen ist ("done": true
). Wenn der Job abgeschlossen ist, wird das queryResult
-Objekt mit den entsprechenden Daten gefü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, aufgeteilt. So wird die Duplizierung von Feldnamen und -typen in großen Antworten minimiert.
Ebenso werden f
und v
im Array rows
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 einen unvollendeten Auftrag
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 nicht ausgefülltes 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 und die Daten verfügbar sind.
Abfrageergebnisse später abrufen
Wenn Sie eine Anfrage, deren Bearbeitung Zeit in Anspruch genommen hat, später abrufen möchten, senden Sie eine der folgenden Anfragen.
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 mit den Assets ist, die Sie abfragen möchten. -
folder=FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Assets ist, die Sie abfragen möchten.ID eines Google Cloud Ordners finden
Google Cloud console
So finden Sie die ID eines Google Cloud -Ordners:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag
--format
, um weitere Informationen zu den gefundenen Ordnern zu sehen.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 Assets enthält, die Sie abfragen möchten.ID einer Google Cloud Organisation finden
Google Cloud console
So finden Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 Job-Referenzwert, 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 mit den Assets ist, die Sie abfragen möchten. -
projects/PROJECT_NUMBER
, wobeiPROJECT_NUMBER
die Nummer des Projekts mit den Assets ist, die Sie abfragen möchten.Google 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)"
-
-
folders/FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Assets ist, die Sie abfragen möchten.ID eines Google Cloud Ordners finden
Google Cloud console
So finden Sie die ID eines Google Cloud -Ordners:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag
--format
, um weitere Informationen zu den gefundenen Ordnern zu sehen.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 Assets enthält, die Sie abfragen möchten.ID einer Google Cloud Organisation finden
Google Cloud console
So finden Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 Job-Referenzwert, der in einer vorherigen Antwort zurückgegeben wurde. -
PAGE_TOKEN
: Optional. Lange Antworten auf Anfragen werden auf mehrere Seiten aufgeteilt. WennpageToken
nicht angegeben ist, wird die erste Seite zurückgegeben. Nachfolgende Seiten können aufgerufen werden, indem SienextPageToken
aus der vorherigen Antwort alspageToken
-Wert verwenden.
Beispiele für Befehle
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 Ihre eigene BigQuery-Tabelle exportieren möchten, geben Sie im Antrag ein BigQuery-Ziel an. Falls Sie noch keines haben, müssen Sie ein BigQuery-Dataset erstellen, bevor Sie diese Anfragen stellen.
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 Sie mit einer SQL-Abfrage exportieren möchten. -
folder=FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Asset-Metadaten ist, die Sie mit einer SQL-Abfrage exportieren möchten.ID eines Google Cloud Ordners finden
Google Cloud console
So finden Sie die ID eines Google Cloud -Ordners:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag
--format
, um weitere Informationen zu den gefundenen Ordnern zu sehen.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 finden
Google Cloud console
So finden Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 Daten exportieren möchten. -
DATASET_ID
: Die ID des BigQuery-Datasets. -
TABLE_NAME
: Die BigQuery-Tabelle, in die Sie Ihre Metadaten exportieren. Wenn sie nicht vorhanden ist, wird sie erstellt. -
WRITE_METHOD
: Gibt das Verhalten an, 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 Duplikatsfehler zurückgegeben. -
write-append
: Fügt Daten an die Tabelle oder die letzte Partition an. -
write-truncate
: Überschreibt die gesamte Tabelle oder alle Partitionen.
-
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 vollständig ü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 Sie mit einer SQL-Abfrage exportieren möchten. -
projects/PROJECT_NUMBER
, wobeiPROJECT_NUMBER
die Nummer des Projekts ist, das die Asset-Metadaten enthält, die Sie mit einer SQL-Abfrage exportieren möchten.Google 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)"
-
-
folders/FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den Asset-Metadaten ist, die Sie mit einer SQL-Abfrage exportieren möchten.ID eines Google Cloud Ordners finden
Google Cloud console
So finden Sie die ID eines Google Cloud -Ordners:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag
--format
, um weitere Informationen zu den gefundenen Ordnern zu sehen.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 finden
Google Cloud console
So finden Sie die ID einer Google Cloud -Organisation:
-
Rufen Sie die Google Cloud Console auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
- 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-Dienst-Agent 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 Daten exportieren möchten. -
DATASET_ID
: Die ID des BigQuery-Datasets. -
TABLE_NAME
: Die BigQuery-Tabelle, in die Sie Ihre Metadaten exportieren. Wenn sie nicht vorhanden ist, wird sie erstellt. -
WRITE_METHOD
: Gibt das Verhalten an, 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 Duplikatsfehler zurückgegeben. -
WRITE_APPEND
: Fügt Daten an die Tabelle oder die letzte Partition an. -
WRITE_TRUNCATE
: Überschreibt die gesamte Tabelle oder alle Partitionen.
-
-
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. Es wird einnextPageToken
zurückgegeben, um nachfolgende Ergebnisse abzurufen.
Beispiele für Befehle
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 die Ergebnisse in die BigQuery-Tabelle my-table
im Projekt my-project
zu exportieren. Wenn die Tabelle bereits vorhanden ist, wird sie vollständig ü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 Sie nach Assets suchen können. Sie können sie als Grundlage für Ihre eigenen Abfragen verwenden.
Compute Engine-VM-Instanzen in einer bestimmten Region
Geben Sie außerdem die name
und das Erstellungsdatum zurück.
SELECT
name,
resource.DATA.creationTimestamp
FROM
compute_googleapis_com_Instance
WHERE
resource.location LIKE '%asia%'
Details zu einer App, die in einem Kubernetes-Pod ausgeführt wird
Gibt den Namespace, die Version und den Zeitstempel der App ingress-nginx
zurück. Weitere Informationen zu JSON-Funktionen in BigQuery.
SELECT
name AS pod_name,
JSON_EXTRACT_SCALAR(resource.data.metadata, '$.namespace') AS namespace,
resource.data.metadata.creationTimestamp AS creation_time,
JSON_EXTRACT_SCALAR(resource.data.metadata.labels, "$['app.kubernetes.io/name']") AS app_label,
resource.data.metadata.labels['app.kubernetes.io/version'] AS version
FROM
k8s_io_Pod
WHERE
JSON_EXTRACT_SCALAR(resource.data.metadata, '$.namespace') = "default"
AND JSON_EXTRACT_SCALAR(resource.data.metadata.labels, "$['app.kubernetes.io/name']") = "ingress-nginx"
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
Gib 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%'