Membuat kueri aset dengan SQL

Anda dapat membuat kueri aset di project, folder, atau organisasi menggunakan dialek yang kompatibel dengan BigQuery SQL.

Sebelum memulai

  1. Aktifkan Cloud Asset Inventory API di project tempat Anda menjalankan perintah Cloud Asset Inventory.

    Mengaktifkan Cloud Asset Inventory API

  2. Pastikan akun Anda memiliki peran yang benar untuk memanggil Cloud Asset Inventory API. Untuk izin individual bagi setiap jenis panggilan, lihat Izin.

Batasan

Tabel yang dapat Anda buat kuerinya

Anda dapat membuat kueri tabel berikut:

  • Untuk jenis konten RESOURCE, nama tabel dalam set data sesuai dengan nama jenis aset, dengan asumsi bahwa jenis aset tersebut ada. Misalnya, tabel compute_googleapis_com_Instance berisi metadata instance Compute Engine.

  • Untuk jenis konten non-RESOURCE, nama tabel dalam set data sesuai dengan nama jenis konten RPC/REST. Misalnya, ACCESS_POLICY.

  • Untuk membuat kueri metadata standar resource di seluruh jenis resource, gunakan nama tabel STANDARD_METADATA. Hal ini mencakup semua kolom kecuali resource.DATA, yang khusus untuk setiap jenis resource.

Membuat kueri metadata aset

Konsol

Untuk membuat kueri metadata aset untuk project, folder, atau organisasi Anda, selesaikan langkah-langkah berikut:

  1. Buka halaman Aset di Security Command Center di konsol Google Cloud.

    Buka Aset

  2. Ubah ke project, folder, atau organisasi yang ingin Anda buat kueri.
  3. Klik tab Kueri aset.
  4. Untuk mengkueri metadata aset, gunakan kueri contoh atau buat kueri Anda sendiri:

    • Untuk menggunakan contoh, klik entri di tab Library kueri untuk melihat pratinjau kueri. Klik **Terapkan** untuk menyalin contoh tersebut ke dalam kotak Edit kueri, lalu edit kueri, atau klik Jalankan untuk menjalankannya.
    • Untuk membuat kueri Anda sendiri, masukkan teks kueri langsung ke dalam kotak Edit query, lalu klik Run untuk menjalankannya. Untuk membantu menulis kueri Anda sendiri, Anda dapat mengklik tabel di panel Pilih tabel untuk melihat pratinjau skema dan kontennya. Lihat Sintaksis kueri untuk mempelajari cara membuat kueri.

    Metadata aset yang cocok dengan kueri ditampilkan di tab Query result.

  5. Opsional: Untuk mendownload kumpulan hasil kueri dalam format CSV, klik Ekspor.

    Ukuran maksimum file CSV adalah 2 MB. Jika permintaan download gagal karena ukuran file melebihi batas ini, pesan akan muncul dengan petunjuk untuk mengekspor hasil lengkap.

gcloud

gcloud asset query \
    --SCOPE \
    --statement="SQL_SELECT_QUERY" \
    --timeout="TIMEOUTs"

Berikan nilai berikut:

  • SCOPE: Gunakan salah satu nilai berikut:

    • project=PROJECT_ID, dengan PROJECT_ID adalah ID project yang memiliki aset yang ingin Anda buat kuerinya.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang berada di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus tanda --format untuk melihat informasi selengkapnya tentang folder yang ditemukan.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • SQL_SELECT_QUERY: Kueri SELECT SQL.
  • TIMEOUT: Opsional. Waktu maksimum, dalam detik, yang harus ditunggu klien hingga kueri selesai sebelum melanjutkan. Gunakan waktu tunggu untuk menjalankan kueri secara asinkron, dan ambil hasilnya nanti dengan referensi tugas.

Lihat referensi gcloud CLI untuk semua opsi.

Contoh

Jalankan perintah berikut untuk mendapatkan nama dan jenis aset dari dua instance Compute Engine pertama di project my-project.

gcloud asset query \
    --project=my-project \
    --statement="
      SELECT
        name, assetType
      FROM
        compute_googleapis_com_Instance
      LIMIT 2"

Respons tugas selesai

Contoh berikut menunjukkan respons terhadap contoh kueri sebelumnya. Respons berisi referensi tugas dan memberi tahu Anda apakah tugas telah selesai (done: true). Jika tugas telah selesai, objek queryResult akan diisi dengan data yang sesuai, dan hasilnya akan dicantumkan setelahnya.

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

Respons tugas yang belum selesai

Jika Anda menetapkan waktu tunggu dalam permintaan, kueri akan dilakukan secara asinkron dan Anda akan menerima respons yang menunjukkan bahwa tugas belum selesai (done: false). Jenis respons ini berisi referensi tugas dan objek queryResult yang tidak diisi:

done: false
jobReference: 0000000000000000000000000000000000000000000000000000000000000000
queryResult:
  nextPageToken: ''
  totalRows: '0'

Anda dapat menggunakan nilai jobReference untuk mengambil hasil kueri nanti, setelah tugas selesai dan data tersedia.

REST

Metode HTTP dan URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets

Meminta isi JSON:

{
  "statement": "SQL_SELECT_QUERY",
  "timeout": "TIMEOUTs",
  "pageSize": "PAGE_SIZE",
  "pageToken": "PAGE_TOKEN"
}

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project yang memiliki aset yang ingin Anda buat kuerinya.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah nomor project yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan nomor project Google Cloud

      Konsol Google Cloud

      Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka halaman Selamat Datang di konsol Google Cloud.

        Buka Selamat Datang

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar, lalu telusuri nama project Anda. Nama project, nomor project, dan project ID ditampilkan di dekat judul Selamat Datang.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang dicari, buka halaman Kelola resource dan filter daftar menggunakan nama project tersebut.

      gcloud CLI

      Anda dapat mengambil nomor project Google Cloud dengan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dengan FOLDER_ID adalah ID folder yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang berada di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus tanda --format untuk melihat informasi selengkapnya tentang folder yang ditemukan.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • SQL_SELECT_QUERY: Kueri SELECT SQL.
  • TIMEOUT: Opsional. Waktu maksimum, dalam detik, yang harus ditunggu klien hingga kueri selesai sebelum melanjutkan. Gunakan waktu tunggu untuk menjalankan kueri secara asinkron, dan ambil hasilnya nanti dengan referensi tugas.
  • PAGE_SIZE: Opsional. Jumlah hasil yang akan ditampilkan per halaman. Maksimumnya 500. Jika nilai ditetapkan ke 0 atau nilai negatif, default yang sesuai akan dipilih. nextPageToken ditampilkan untuk mengambil hasil berikutnya.

  • PAGE_TOKEN: Opsional. Respons permintaan yang panjang dipisahkan di beberapa halaman. Jika pageToken tidak ditentukan, halaman pertama akan ditampilkan. Halaman berikutnya dapat dipanggil menggunakan nextPageToken respons sebelumnya sebagai nilai pageToken.

Lihat referensi REST untuk semua opsi.

Contoh perintah

Jalankan salah satu perintah berikut untuk mendapatkan nama dan jenis aset dari dua instance Compute Engine pertama di project my-project.

curl (Linux, macOS, atau 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

Respons tugas selesai

Contoh berikut menunjukkan respons terhadap contoh kueri sebelumnya. Respons berisi referensi tugas dan memberi tahu Anda apakah tugas telah selesai ("done": true). Jika tugas telah selesai, objek queryResult akan diisi dengan data yang sesuai.

Hasil kueri dibagi menjadi rows, array yang berisi metadata aset, dan schema, objek yang menjelaskan skema untuk setiap aset dalam array rows. Hal ini dilakukan untuk meminimalkan duplikasi nama dan jenis kolom dalam respons besar.

Demikian pula, f dan v digunakan dalam array rows, bukan fields dan value untuk menjaga respons tetap sekecil mungkin.

{
  "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"
  }
}

Respons tugas yang belum selesai

Jika Anda menetapkan waktu tunggu dalam permintaan, kueri akan dilakukan secara asinkron dan Anda akan menerima respons yang menunjukkan bahwa tugas belum selesai ("done": false). Jenis respons ini berisi referensi tugas dan objek queryResult yang tidak diisi:

{
  "jobReference": "0000000000000000000000000000000000000000000000000000000000000000",
  "done": false,
  "queryResult": {
    "rows": [],
    "schema": {
      "fields": []
    },
    "nextPageToken": "",
    "totalRows": "0"
  }
}

Anda dapat menggunakan nilai jobReference untuk mengambil hasil kueri nanti, setelah tugas selesai dan data tersedia.

Mengambil hasil kueri nanti

Untuk mengambil permintaan nanti yang memerlukan waktu untuk diselesaikan, buat salah satu permintaan berikut.

gcloud

gcloud asset query \
    --SCOPE \
    --job-reference="JOB_REFERENCE"

Berikan nilai berikut:

  • SCOPE: Gunakan salah satu nilai berikut:

    • project=PROJECT_ID, dengan PROJECT_ID adalah ID project yang memiliki aset yang ingin Anda buat kuerinya.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang berada di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus tanda --format untuk melihat informasi selengkapnya tentang folder yang ditemukan.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • JOB_REFERENCE: Nilai referensi tugas yang ditampilkan dalam respons sebelumnya.

Contoh

Jalankan perintah berikut untuk mendapatkan hasil kueri yang dijalankan sebelumnya di project my-project.

gcloud asset query \
    --project=my-project \
    --job-reference="0000000000000000000000000000000000000000000000000000000000000000"

REST

Metode HTTP dan URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets

Meminta isi JSON:

{
  "jobReference": "JOB_REFERENCE",
  "pageToken": "PAGE_TOKEN"
}

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project yang memiliki aset yang ingin Anda buat kuerinya.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah nomor project yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan nomor project Google Cloud

      Konsol Google Cloud

      Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka halaman Selamat Datang di konsol Google Cloud.

        Buka Selamat Datang

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar, lalu telusuri nama project Anda. Nama project, nomor project, dan project ID ditampilkan di dekat judul Selamat Datang.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang dicari, buka halaman Kelola resource dan filter daftar menggunakan nama project tersebut.

      gcloud CLI

      Anda dapat mengambil nomor project Google Cloud dengan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dengan FOLDER_ID adalah ID folder yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang berada di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus tanda --format untuk melihat informasi selengkapnya tentang folder yang ditemukan.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi yang memiliki aset yang ingin Anda buat kuerinya.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • JOB_REFERENCE: Nilai referensi tugas yang ditampilkan dalam respons sebelumnya.
  • PAGE_TOKEN: Opsional. Respons permintaan yang panjang dipisahkan di beberapa halaman. Jika pageToken tidak ditentukan, halaman pertama akan ditampilkan. Halaman berikutnya dapat dipanggil menggunakan nextPageToken respons sebelumnya sebagai nilai pageToken.

Contoh perintah

Jalankan salah satu perintah berikut untuk mendapatkan hasil kueri yang dijalankan sebelumnya.

curl (Linux, macOS, atau 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

Mengekspor hasil kueri ke BigQuery

Hasil kueri ditampilkan sebagai respons Query Assets API. Untuk mengekspor hasil ke tabel BigQuery Anda sendiri, tentukan tujuan BigQuery dalam permintaan. Jika belum memilikinya, Anda harus membuat set data BigQuery sebelum membuat permintaan ini.

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"

Berikan nilai berikut:

  • SCOPE: Gunakan salah satu nilai berikut:

    • project=PROJECT_ID, dengan PROJECT_ID adalah ID project yang memiliki metadata aset yang ingin Anda ekspor dengan kueri SQL.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder yang memiliki metadata aset yang ingin Anda ekspor dengan kueri SQL.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang berada di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus tanda --format untuk melihat informasi selengkapnya tentang folder yang ditemukan.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi yang memiliki metadata aset yang ingin Anda ekspor dengan kueri SQL.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • SQL_SELECT_QUERY: Kueri SELECT SQL.
  • BIGQUERY_PROJECT_ID: ID project tempat tabel BigQuery yang ingin Anda ekspor.
  • DATASET_ID: ID set data BigQuery.
  • TABLE_NAME: Tabel BigQuery tempat Anda mengekspor metadata. Jika tidak ada, folder akan dibuat.
  • WRITE_METHOD: Menentukan perilaku jika tabel atau partisi tujuan BigQuery sudah ada. Nilai berikut didukung:

    • write-empty: Default. Jika tabel yang ada berisi data, error duplikat akan ditampilkan dalam hasil tugas.
    • write-append: Menambahkan data ke tabel atau partisi terbaru.
    • write-truncate: Menutupi seluruh tabel atau semua data partisi.

Contoh

Jalankan perintah berikut untuk mendapatkan nama dan jenis aset dari dua instance Compute Engine pertama di project my-project, dan ekspor hasilnya ke tabel BigQuery my-table di project my-project, yang akan menimpa seluruh tabel jika sudah ada.

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

Metode HTTP dan URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

Meminta isi JSON:

{
  "statement": "SQL_SELECT_QUERY",
  "outputConfig": {
    "bigqueryDestination": {
      "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID",
      "table": "TABLE_NAME",
      "writeDisposition": "WRITE_METHOD"
    }
  },
  "pageSize": "PAGE_SIZE"
}

Berikan nilai berikut:

  • SCOPE_PATH: Gunakan salah satu nilai berikut:

    Nilai yang diizinkan adalah:

    • projects/PROJECT_ID, dengan PROJECT_ID adalah ID project yang memiliki metadata aset yang ingin Anda ekspor dengan kueri SQL.
    • projects/PROJECT_NUMBER, dengan PROJECT_NUMBER adalah nomor project yang memiliki metadata aset yang ingin Anda ekspor dengan kueri SQL.

      Cara menemukan nomor project Google Cloud

      Konsol Google Cloud

      Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka halaman Selamat Datang di konsol Google Cloud.

        Buka Selamat Datang

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar, lalu telusuri nama project Anda. Nama project, nomor project, dan project ID ditampilkan di dekat judul Selamat Datang.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang dicari, buka halaman Kelola resource dan filter daftar menggunakan nama project tersebut.

      gcloud CLI

      Anda dapat mengambil nomor project Google Cloud dengan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dengan FOLDER_ID adalah ID folder yang memiliki metadata aset yang ingin Anda ekspor dengan kueri SQL.

      Cara menemukan ID folder Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID folder Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Telusuri nama folder Anda. ID folder ditampilkan di samping nama folder.

      gcloud CLI

      Anda dapat mengambil ID folder Google Cloud yang berada di tingkat organisasi dengan perintah berikut:

      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)"

      Dengan TOP_LEVEL_FOLDER_NAME adalah pencocokan string sebagian atau penuh untuk nama folder. Hapus tanda --format untuk melihat informasi selengkapnya tentang folder yang ditemukan.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder tingkat teratas:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dengan ORGANIZATION_ID adalah ID organisasi yang memiliki metadata aset yang ingin Anda ekspor dengan kueri SQL.

      Cara menemukan ID organisasi Google Cloud

      Konsol Google Cloud

      Untuk menemukan ID organisasi Google Cloud, selesaikan langkah-langkah berikut:

      1. Buka konsol Google Cloud.

        Buka konsol Google Cloud

      2. Klik kotak daftar pengalih di panel menu.
      3. Pilih organisasi Anda dari kotak daftar.
      4. Klik tab Semua. ID organisasi ditampilkan di samping nama organisasi.

      gcloud CLI

      Anda dapat mengambil ID organisasi Google Cloud dengan perintah berikut:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: ID project tempat agen layanan Cloud Asset Inventory default berada yang memiliki izin untuk mengelola set data dan tabel BigQuery Anda. Baca selengkapnya tentang cara menetapkan project penagihan.

  • SQL_SELECT_QUERY: Kueri SELECT SQL.
  • BIGQUERY_PROJECT_ID: ID project tempat tabel BigQuery yang ingin Anda ekspor.
  • DATASET_ID: ID set data BigQuery.
  • TABLE_NAME: Tabel BigQuery tempat Anda mengekspor metadata. Jika tidak ada, folder akan dibuat.
  • WRITE_METHOD: Menentukan perilaku jika tabel atau partisi tujuan BigQuery sudah ada. Nilai berikut didukung:

    • WRITE_EMPTY: Default. Jika tabel yang ada berisi data, error duplikat akan ditampilkan dalam hasil tugas.
    • WRITE_APPEND: Menambahkan data ke tabel atau partisi terbaru.
    • WRITE_TRUNCATE: Menutupi seluruh tabel atau semua data partisi.
  • PAGE_SIZE: Opsional. Jumlah hasil yang akan ditampilkan per halaman. Maksimumnya 500. Jika nilai ditetapkan ke 0 atau nilai negatif, default yang sesuai akan dipilih. nextPageToken ditampilkan untuk mengambil hasil berikutnya.

Contoh perintah

Jalankan salah satu perintah berikut untuk mendapatkan nama dan jenis aset dari dua instance Compute Engine pertama di project my-project, dan ekspor hasilnya ke tabel BigQuery my-table di project my-project, yang akan menimpa seluruh tabel jika sudah ada.

curl (Linux, macOS, atau 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

Contoh kueri SQL tambahan

Contoh kode berikut menunjukkan kueri SQL tertentu yang dapat Anda gunakan untuk menelusuri aset, guna membantu Anda membuat kueri Anda sendiri.

Instance VM Compute Engine di region tertentu

Selain itu, tampilkan name dan waktu pembuatannya.

SELECT
  name,
  resource.DATA.creationTimestamp
FROM
  compute_googleapis_com_Instance
WHERE
  resource.location LIKE '%asia%'

Jumlah set data BigQuery di setiap project

  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

Jumlah instance VM Compute Engine di setiap region

SELECT
  resource.location,
  COUNT(*)
FROM
  compute_googleapis_com_Instance
GROUP BY
  resource.location

Nama dan assetType dari semua resource di region

SELECT
  name,
  assetType
FROM
  STANDARD_METADATA
WHERE
  resource.location LIKE '%asia%'

Bucket Cloud Storage yang tersedia secara publik

Selain itu, tampilkan name-nya.

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'

Subnetwork yang tidak memiliki instance VM terpasang

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%'