Anda dapat membuat kueri aset di project, folder, atau organisasi menggunakan dialek yang kompatibel dengan BigQuery SQL.
Sebelum memulai
Aktifkan Cloud Asset Inventory API di project tempat Anda menjalankan perintah Cloud Asset Inventory.
Pastikan akun Anda memiliki peran yang benar untuk memanggil Cloud Asset Inventory API. Untuk izin individual bagi setiap jenis panggilan, lihat Izin.
Batasan
Nama Jenis aset memiliki
.
dan/
yang diganti dengan_
. Misalnya,compute.googleapis.com/Instance
menjadicompute_googleapis_com_Instance
.Permintaan harus berupa kueri
SELECT
.BigQuery SQL lama tidak didukung.
Hasil kueri yang lebih besar dari 10 GB tidak didukung.
Hasil kueri yang lebih besar dari 10 MB atau 1.000 baris selalu diberi nomor halaman.
Kueri harus memerlukan waktu kurang dari 6 jam untuk diproses.
Hasil kueri hanya dapat diekspor ke set data BigQuery di multi-region
US
.
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, tabelcompute_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 kecualiresource.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:
-
Buka halaman Aset di Security Command Center di konsol Google Cloud.
- Ubah ke project, folder, atau organisasi yang ingin Anda buat kueri.
- Klik tab Kueri aset.
-
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.
-
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
, denganPROJECT_ID
adalah ID project yang memiliki aset yang ingin Anda buat kuerinya. -
folder=FOLDER_ID
, denganFOLDER_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
, denganORGANIZATION_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
: KueriSELECT
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
, denganPROJECT_ID
adalah ID project yang memiliki aset yang ingin Anda buat kuerinya. -
projects/PROJECT_NUMBER
, denganPROJECT_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:
-
Buka halaman Selamat Datang di konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
-
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
, denganFOLDER_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
, denganORGANIZATION_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
: KueriSELECT
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 ke0
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. JikapageToken
tidak ditentukan, halaman pertama akan ditampilkan. Halaman berikutnya dapat dipanggil menggunakannextPageToken
respons sebelumnya sebagai nilaipageToken
.
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
, denganPROJECT_ID
adalah ID project yang memiliki aset yang ingin Anda buat kuerinya. -
folder=FOLDER_ID
, denganFOLDER_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
, denganORGANIZATION_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
, denganPROJECT_ID
adalah ID project yang memiliki aset yang ingin Anda buat kuerinya. -
projects/PROJECT_NUMBER
, denganPROJECT_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:
-
Buka halaman Selamat Datang di konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
-
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
, denganFOLDER_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
, denganORGANIZATION_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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. JikapageToken
tidak ditentukan, halaman pertama akan ditampilkan. Halaman berikutnya dapat dipanggil menggunakannextPageToken
respons sebelumnya sebagai nilaipageToken
.
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
, denganPROJECT_ID
adalah ID project yang memiliki metadata aset yang ingin Anda ekspor dengan kueri SQL. -
folder=FOLDER_ID
, denganFOLDER_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
, denganORGANIZATION_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
: KueriSELECT
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
, denganPROJECT_ID
adalah ID project yang memiliki metadata aset yang ingin Anda ekspor dengan kueri SQL. -
projects/PROJECT_NUMBER
, denganPROJECT_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:
-
Buka halaman Selamat Datang di konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
-
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
, denganFOLDER_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
, denganORGANIZATION_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:
-
Buka konsol Google Cloud.
- Klik kotak daftar pengalih di panel menu.
- Pilih organisasi Anda dari kotak daftar.
- 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
: KueriSELECT
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 ke0
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%'