Aset kueri 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 masing-masing izin bagi setiap jenis panggilan, lihat Izin.

Batasan

Tabel yang dapat Anda kueri

Anda dapat membuat kueri untuk 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.

Metadata aset kueri

Konsol

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

  1. Buka halaman Assets pada Security Command Center di Konsol Google Cloud Anda.

    Buka Aset

  2. Beralihlah 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 sampel, 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 kueri, lalu klik Jalankan untuk menjalankannya. Untuk membantu dalam 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, sebuah 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 kueri.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder yang berisi aset yang ingin Anda kueri.

      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 flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level 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: SELECT SQL kueri.
  • TIMEOUT: Opsional. Waktu maksimum, dalam detik, saat klien harus menunggu hingga kueri selesai sebelum melanjutkan. Gunakan waktu tunggu untuk jalankan kueri, lalu ambil hasilnya nanti dengan tugas referensi.

Baca referensi gcloud CLI untuk mengetahui semua opsi.

Contoh

Jalankan perintah berikut untuk mendapatkan nama dan jenis aset dari dua Compute Engine pertama instance dalam 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. Tujuan berisi referensi pekerjaan dan memberi tahu Anda apakah pekerjaan itu memiliki selesai (done: true). Jika pekerjaan telah selesai, maka Objek queryResult diisi dengan data yang sesuai, dan hasilnya dicantumkan setelah itu.

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 pekerjaan 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 ambil hasil kueri nanti, setelah pekerjaan telah selesai dan datanya telah 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 kueri.
    • 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 Sambutan

      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 halaman Welcome {i>heading<i}.

        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 flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

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

      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: SELECT SQL kueri.
  • TIMEOUT: Opsional. Waktu maksimum, dalam detik, saat klien harus menunggu hingga kueri selesai sebelum melanjutkan. Gunakan waktu tunggu untuk jalankan kueri, lalu ambil hasilnya nanti dengan tugas referensi.
  • PAGE_SIZE: Opsional. Jumlah hasil yang akan ditampilkan per kami. Jumlah maksimumnya adalah 500. Jika nilai ditetapkan ke 0 atau nilai negatif, default yang sesuai akan dipilih. nextPageToken ditampilkan untuk mengambil hasil selanjutnya.

  • 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 perintah pertama Instance Compute Engine 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. Tujuan berisi referensi pekerjaan dan memberi tahu Anda apakah pekerjaan itu memiliki selesai ("done": true). Jika pekerjaan telah selesai, maka Objek queryResult diisi dengan layanan otomatis dan data skalabel.

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 Anda, kueri akan dijalankan secara asinkron dan Anda dikirimi respons yang menunjukkan bahwa pekerjaan belum selesai ("done": false). Tanggapan semacam ini berisi referensi pekerjaan dan objek queryResult yang tidak terisi:

{
  "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 membutuhkan waktu penyelesaian, jadikan salah satu terhadap 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 kueri.
    • folder=FOLDER_ID, dengan FOLDER_ID adalah ID folder yang berisi aset yang ingin Anda kueri.

      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 flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level 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 di 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 Sambutan

      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 halaman Welcome {i>heading<i}.

        Hingga 4.000 resource ditampilkan. Jika Anda tidak melihat project yang Anda cari, pergi ke Halaman Mengelola resource dan memfilter daftar menggunakan nama proyek 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 flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level 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 di 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 terhadap 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 flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      Perintah sebelumnya tidak menampilkan ID subfolder dalam folder. Untuk melakukannya, jalankan perintah berikut menggunakan ID folder level 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: SELECT SQL kueri.
  • BIGQUERY_PROJECT_ID: ID project tempat tabel BigQuery berada yang ingin Anda ekspor.
  • DATASET_ID: ID BigQuery {i>dataset<i} aslinya.
  • TABLE_NAME: Tabel BigQuery tempat Anda mengekspor metadata. Jika tidak ada, maka 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: Menimpa seluruh tabel atau semua data partisi.

Contoh

Jalankan perintah berikut untuk mendapatkan nama dan jenis aset dari dua Compute Engine pertama instance dalam project my-project, dan mengekspor hasilnya ke Tabel BigQuery my-table di project my-project, 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 halaman Welcome {i>heading<i}.

        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 flag --format untuk melihat informasi selengkapnya tentang menemukan folder.

      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: Project ID yang agen layanan Inventaris Aset Cloud default, yang memiliki izin untuk mengelola set data dan tabel BigQuery. Baca selengkapnya tentang cara menetapkan project penagihan.

  • SQL_SELECT_QUERY: Kueri SELECT SQL.
  • BIGQUERY_PROJECT_ID: ID project tempat tabel BigQuery berada yang ingin Anda ekspor.
  • DATASET_ID: ID BigQuery {i>dataset<i} aslinya.
  • TABLE_NAME: Tabel BigQuery tempat Anda mengekspor metadata. Jika tidak ada, maka 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: Menimpa 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 perintah pertama instance Compute Engine dalam project my-project, dan ekspor hasilnya ke Tabel BigQuery my-table di project my-project, 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 mencari aset, untuk membantu membangun 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 yang ada 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 yang ada 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%'