Assets mit SQL abfragen

Sie können Assets in Ihrem Projekt, Ordner oder Ihrer Organisation mit einem BigQuery-SQL-kompatiblen Dialekt abfragen.

Hinweise

  1. Aktivieren Sie die Cloud Asset Inventory API in dem Projekt, in dem Sie Cloud Asset Inventory-Befehle ausführen.

    Cloud Asset Inventory API aktivieren

  2. 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

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 Tabelle compute_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 von resource.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:

  1. Rufen Sie in der Google Cloud -Console auf der Seite Asset Inventory den Tab Asset query auf.

    Asset-Abfrage aufrufen

    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.

  2. Wechseln Sie zu dem Projekt, dem Ordner oder der Organisation, die Sie abfragen möchten.
  3. Klicken Sie auf den Tab Asset-Abfrage.
  4. 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.

  5. 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, wobei PROJECT_ID die ID des Projekts ist, das die Assets enthält, die Sie abfragen möchten.
    • folder=FOLDER_ID, wobei FOLDER_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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, wobei ORGANIZATION_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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, wobei PROJECT_ID die ID des Projekts ist, das die Assets enthält, die Sie abfragen möchten.
    • projects/PROJECT_NUMBER, wobei PROJECT_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:

      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 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, wobei FOLDER_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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, wobei ORGANIZATION_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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 auf 0 oder einen negativen Wert festgelegt ist, wird ein geeigneter Standardwert ausgewählt. Ein nextPageToken wird zurückgegeben, um nachfolgende Ergebnisse abzurufen.

  • PAGE_TOKEN: Optional. Lange Antwortantworten werden auf mehrere Seiten verteilt. Wenn pageToken nicht angegeben ist, wird die erste Seite zurückgegeben. Nachfolgende Seiten können aufgerufen werden, indem der Wert nextPageToken der vorherigen Antwort als Wert für pageToken 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, wobei PROJECT_ID die ID des Projekts ist, das die Assets enthält, die Sie abfragen möchten.
    • folder=FOLDER_ID, wobei FOLDER_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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, wobei ORGANIZATION_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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, wobei PROJECT_ID die ID des Projekts ist, das die Assets enthält, die Sie abfragen möchten.
    • projects/PROJECT_NUMBER, wobei PROJECT_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:

      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 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, wobei FOLDER_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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, wobei ORGANIZATION_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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. Wenn pageToken nicht angegeben ist, wird die erste Seite zurückgegeben. Nachfolgende Seiten können aufgerufen werden, indem der Wert nextPageToken der vorherigen Antwort als Wert für pageToken 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, wobei PROJECT_ID die ID des Projekts ist, das die Asset-Metadaten enthält, die du mit einer SQL-Abfrage exportieren möchtest.
    • folder=FOLDER_ID, wobei FOLDER_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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, wobei ORGANIZATION_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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, wobei PROJECT_ID die ID des Projekts ist, das die Asset-Metadaten enthält, die du mit einer SQL-Abfrage exportieren möchtest.
    • projects/PROJECT_NUMBER, wobei PROJECT_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:

      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 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, wobei FOLDER_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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, wobei ORGANIZATION_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:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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 auf 0 oder einen negativen Wert festgelegt ist, wird ein geeigneter Standardwert ausgewählt. Ein nextPageToken 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%'