Dokumen ini menunjukkan cara mengekspor ringkasan aset dari organisasi Anda, folder, atau project ke tabel BigQuery, lalu jalankan analisis data pada inventaris Anda. BigQuery memberikan pengalaman seperti SQL bagi pengguna untuk menganalisis data dan menghasilkan insight yang bermakna tanpa menggunakan skrip kustom.
Sebelum memulai
Aktifkan Cloud Asset Inventory API di project yang Anda jalankan perintah Inventaris Aset Cloud dari mereka.
Pastikan akun Anda memiliki peran yang benar untuk memanggil Cloud Asset Inventory API. Untuk masing-masing izin bagi setiap jenis panggilan, lihat Izin.
Membuat set data BigQuery sebagai tujuan ekspor, jika Anda belum memilikinya.
Batasan
Saat mengekspor data tabel BigQuery, tidak semua kolom didukung oleh Inventaris Aset Cloud.
Kolom aset yang sering berubah seperti
numBytes
,numLongTermBytes
,numPhysicalBytes
, dannumRows
mungkin diekspor dengan nilainull
.Ekspor ke tabel yang dikelompokkan ke BigQuery tidak didukung.
Tabel BigQuery yang dienkripsi dengan kunci Cloud Key Management Service (Cloud KMS) kustom tidak didukung.
Menambahkan output ekspor ke tabel yang ada tidak didukung kecuali jika Anda mengekspor ke tabel yang dipartisi. Tabel tujuan harus kosong atau Anda harus menimpanya. Untuk menimpanya, gunakan flag
--output-bigquery-force
dengan gcloud CLI, atau gunakan"force": true
dengan REST API.Jenis resource Google Kubernetes Engine (GKE), kecuali untuk
container.googleapis.com/Cluster
dancontainer.googleapis.com/NodePool
, tidak didukung saat mengekspor ke tabel terpisah untuk setiap jenis resource.Cloud Asset Inventory menolak permintaan ekspor jika permintaan sebelumnya ke tujuan yang sama dimulai kurang dari 15 menit yang lalu dan masih berjalan. Namun, jika proses ekspor memerlukan waktu lebih dari 15 menit untuk diselesaikan, ekspor akan ditandai sebagai selesai dan permintaan ekspor baru ke tujuan yang sama diizinkan.
Jenis konten
ACCESS_POLICY
hanya dapat diekspor di tingkat organisasi.Jika tabel yang Anda ekspor sudah ada dan sedang dalam proses tempat tujuan ekspor, error
400
akan ditampilkan.
Skema BigQuery yang digunakan untuk ekspor
Setiap tabel BigQuery ditentukan oleh skema yang mendeskripsikan kolom nama, tipe data, dan informasi lainnya. Menyetel jenis konten untuk ekspor menentukan skema untuk tabel Anda:
Resource atau tidak ditentukan: Jika Anda menetapkan jenis konten ke
RESOURCE
atau tidak menentukannya, dan menetapkan tandaper-asset-type
kefalse
atau tidak menggunakannya, Anda akan membuat tabel BigQuery yang memiliki skema berikut.Skema resource
[ { "name": "name", "type": "STRING", "mode": "NULLABLE" }, { "name": "asset_type", "type": "STRING", "mode": "NULLABLE" }, { "name": "resource", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "version", "type": "STRING", "mode": "NULLABLE" }, { "name": "discovery_document_uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "discovery_name", "type": "STRING", "mode": "NULLABLE" }, { "name": "resource_url", "type": "STRING", "mode": "NULLABLE" }, { "name": "parent", "type": "STRING", "mode": "NULLABLE" }, { "name": "data", "type": "STRING", "mode": "NULLABLE" }, { "name": "location", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "ancestors", "type": "STRING", "mode": "REPEATED" }, { "name": "update_time", "type": "TIMESTAMP", "mode": "NULLABLE" } ]
Kolom
resource.data
adalah metadata resource yang direpresentasikan sebagai JSON {i>string<i}.Saat menetapkan jenis konten ke
RESOURCE
atau tidak menetapkan jenis konten, dan menetapkan flagper-asset-type
ketrue
, Anda akan membuat tabel terpisah untuk setiap jenis aset. Skema dari setiap tabel berisi kolom jenis RECORD yang dipetakan ke bidang bertingkat diResource.data
dari jenis aset tersebut (hingga 15 tingkat bertingkat yang yang didukung BigQuery). Untuk contoh tabel, lihat export-assets-examples di konsol Google Cloud.Kebijakan IAM: Saat Anda menetapkan jenis konten ke
IAM_POLICY
di REST API atauiam-policy
di gcloud CLI, Anda membuat Tabel BigQuery yang memiliki skema berikut.Skema kebijakan IAM
[ { "name": "name", "mode": "NULLABLE", "type": "STRING" }, { "name": "asset_type", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "version", "mode": "NULLABLE", "type": "INTEGER" }, { "fields": [ { "name": "role", "mode": "NULLABLE", "type": "STRING" }, { "name": "members", "mode": "REPEATED", "type": "STRING" }, { "fields": [ { "name": "expression", "mode": "NULLABLE", "type": "STRING" }, { "name": "title", "mode": "NULLABLE", "type": "STRING" }, { "name": "description", "mode": "NULLABLE", "type": "STRING" }, { "name": "location", "mode": "NULLABLE", "type": "STRING" } ], "name": "condition", "mode": "NULLABLE", "type": "RECORD" } ], "name": "bindings", "mode": "REPEATED", "type": "RECORD" }, { "fields": [ { "name": "service", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "log_type", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "exempted_members", "mode": "REPEATED", "type": "STRING" } ], "name": "audit_log_configs", "mode": "REPEATED", "type": "RECORD" } ], "name": "audit_configs", "mode": "REPEATED", "type": "RECORD" }, { "name": "etag", "mode": "NULLABLE", "type": "STRING" } ], "name": "iam_policy", "mode": "NULLABLE", "type": "RECORD" }, { "name": "ancestors", "mode": "REPEATED", "type": "STRING" }, { "name": "update_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ]
Kebijakan organisasi: Saat menetapkan jenis konten ke
ORG_POLICY
di REST API atauorg-policy
di gcloud CLI, Anda akan membuat tabel BigQuery yang memiliki skema berikut.Skema kebijakan organisasi
[ { "name": "name", "mode": "NULLABLE", "type": "STRING" }, { "name": "asset_type", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "version", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "constraint", "mode": "NULLABLE", "type": "STRING" }, { "name": "etag", "mode": "NULLABLE", "type": "STRING" }, { "name": "update_time", "mode": "NULLABLE", "type": "TIMESTAMP" }, { "fields": [ { "name": "allowed_values", "mode": "REPEATED", "type": "STRING" }, { "name": "denied_values", "mode": "REPEATED", "type": "STRING" }, { "name": "all_values", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "suggested_value", "mode": "NULLABLE", "type": "STRING" }, { "name": "inherit_from_parent", "mode": "NULLABLE", "type": "BOOLEAN" } ], "name": "list_policy", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "enforced", "mode": "NULLABLE", "type": "BOOLEAN" } ], "name": "boolean_policy", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "_present", "mode": "NULLABLE", "type": "BOOLEAN" } ], "name": "restore_default", "mode": "NULLABLE", "type": "RECORD" } ], "name": "org_policy", "mode": "REPEATED", "type": "RECORD" }, { "name": "ancestors", "mode": "REPEATED", "type": "STRING" }, { "name": "update_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ]
Kebijakan VPCSC: Saat menetapkan jenis konten ke
ACCESS_POLICY
di REST API atauaccess-policy
di gcloud CLI, Anda akan membuat tabel BigQuery yang memiliki skema berikut.Skema kebijakan VPCSC
[ { "name": "name", "mode": "NULLABLE", "type": "STRING" }, { "name": "asset_type", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "name", "mode": "NULLABLE", "type": "STRING" }, { "name": "parent", "mode": "NULLABLE", "type": "STRING" }, { "name": "title", "mode": "NULLABLE", "type": "STRING" }, { "name": "scopes", "mode": "REPEATED", "type": "STRING" }, { "name": "etag", "mode": "NULLABLE", "type": "STRING" } ], "name": "access_policy", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "name", "mode": "NULLABLE", "type": "STRING" }, { "name": "title", "mode": "NULLABLE", "type": "STRING" }, { "name": "description", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "fields": [ { "name": "ip_subnetworks", "mode": "REPEATED", "type": "STRING" }, { "fields": [ { "name": "require_screenlock", "mode": "NULLABLE", "type": "BOOLEAN" }, { "name": "allowed_encryption_statuses", "mode": "REPEATED", "type": "INTEGER" }, { "fields": [ { "name": "os_type", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "minimum_version", "mode": "NULLABLE", "type": "STRING" }, { "name": "require_verified_chrome_os", "mode": "NULLABLE", "type": "BOOLEAN" } ], "name": "os_constraints", "mode": "REPEATED", "type": "RECORD" }, { "name": "allowed_device_management_levels", "mode": "REPEATED", "type": "INTEGER" }, { "name": "require_admin_approval", "mode": "NULLABLE", "type": "BOOLEAN" }, { "name": "require_corp_owned", "mode": "NULLABLE", "type": "BOOLEAN" } ], "name": "device_policy", "mode": "NULLABLE", "type": "RECORD" }, { "name": "required_access_levels", "mode": "REPEATED", "type": "STRING" }, { "name": "negate", "mode": "NULLABLE", "type": "BOOLEAN" }, { "name": "members", "mode": "REPEATED", "type": "STRING" }, { "name": "regions", "mode": "REPEATED", "type": "STRING" } ], "name": "conditions", "mode": "REPEATED", "type": "RECORD" }, { "name": "combining_function", "mode": "NULLABLE", "type": "INTEGER" } ], "name": "basic", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "fields": [ { "name": "expression", "mode": "NULLABLE", "type": "STRING" }, { "name": "title", "mode": "NULLABLE", "type": "STRING" }, { "name": "description", "mode": "NULLABLE", "type": "STRING" }, { "name": "location", "mode": "NULLABLE", "type": "STRING" } ], "name": "expr", "mode": "NULLABLE", "type": "RECORD" } ], "name": "custom", "mode": "NULLABLE", "type": "RECORD" } ], "name": "access_level", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "name", "mode": "NULLABLE", "type": "STRING" }, { "name": "title", "mode": "NULLABLE", "type": "STRING" }, { "name": "description", "mode": "NULLABLE", "type": "STRING" }, { "name": "perimeter_type", "mode": "NULLABLE", "type": "INTEGER" }, { "fields": [ { "name": "resources", "mode": "REPEATED", "type": "STRING" }, { "name": "access_levels", "mode": "REPEATED", "type": "STRING" }, { "name": "restricted_services", "mode": "REPEATED", "type": "STRING" }, { "fields": [ { "name": "enable_restriction", "mode": "NULLABLE", "type": "BOOLEAN" }, { "name": "allowed_services", "mode": "REPEATED", "type": "STRING" } ], "name": "vpc_accessible_services", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "fields": [ { "fields": [ { "name": "access_level", "mode": "NULLABLE", "type": "STRING" }, { "name": "resource", "mode": "NULLABLE", "type": "STRING" } ], "name": "sources", "mode": "REPEATED", "type": "RECORD" }, { "name": "identities", "mode": "REPEATED", "type": "STRING" }, { "name": "identity_type", "mode": "NULLABLE", "type": "INTEGER" } ], "name": "ingress_from", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "fields": [ { "name": "service_name", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "method", "mode": "NULLABLE", "type": "STRING" }, { "name": "permission", "mode": "NULLABLE", "type": "STRING" } ], "name": "method_selectors", "mode": "REPEATED", "type": "RECORD" } ], "name": "operations", "mode": "REPEATED", "type": "RECORD" }, { "name": "resources", "mode": "REPEATED", "type": "STRING" } ], "name": "ingress_to", "mode": "NULLABLE", "type": "RECORD" } ], "name": "ingress_policies", "mode": "REPEATED", "type": "RECORD" }, { "fields": [ { "fields": [ { "name": "identities", "mode": "REPEATED", "type": "STRING" }, { "name": "identity_type", "mode": "NULLABLE", "type": "INTEGER" } ], "name": "egress_from", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "resources", "mode": "REPEATED", "type": "STRING" }, { "fields": [ { "name": "service_name", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "method", "mode": "NULLABLE", "type": "STRING" }, { "name": "permission", "mode": "NULLABLE", "type": "STRING" } ], "name": "method_selectors", "mode": "REPEATED", "type": "RECORD" } ], "name": "operations", "mode": "REPEATED", "type": "RECORD" }, { "name": "external_resources", "mode": "REPEATED", "type": "STRING" } ], "name": "egress_to", "mode": "NULLABLE", "type": "RECORD" } ], "name": "egress_policies", "mode": "REPEATED", "type": "RECORD" } ], "name": "status", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "resources", "mode": "REPEATED", "type": "STRING" }, { "name": "access_levels", "mode": "REPEATED", "type": "STRING" }, { "name": "restricted_services", "mode": "REPEATED", "type": "STRING" }, { "fields": [ { "name": "enable_restriction", "mode": "NULLABLE", "type": "BOOLEAN" }, { "name": "allowed_services", "mode": "REPEATED", "type": "STRING" } ], "name": "vpc_accessible_services", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "fields": [ { "fields": [ { "name": "access_level", "mode": "NULLABLE", "type": "STRING" }, { "name": "resource", "mode": "NULLABLE", "type": "STRING" } ], "name": "sources", "mode": "REPEATED", "type": "RECORD" }, { "name": "identities", "mode": "REPEATED", "type": "STRING" }, { "name": "identity_type", "mode": "NULLABLE", "type": "INTEGER" } ], "name": "ingress_from", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "fields": [ { "name": "service_name", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "method", "mode": "NULLABLE", "type": "STRING" }, { "name": "permission", "mode": "NULLABLE", "type": "STRING" } ], "name": "method_selectors", "mode": "REPEATED", "type": "RECORD" } ], "name": "operations", "mode": "REPEATED", "type": "RECORD" }, { "name": "resources", "mode": "REPEATED", "type": "STRING" } ], "name": "ingress_to", "mode": "NULLABLE", "type": "RECORD" } ], "name": "ingress_policies", "mode": "REPEATED", "type": "RECORD" }, { "fields": [ { "fields": [ { "name": "identities", "mode": "REPEATED", "type": "STRING" }, { "name": "identity_type", "mode": "NULLABLE", "type": "INTEGER" } ], "name": "egress_from", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "resources", "mode": "REPEATED", "type": "STRING" }, { "fields": [ { "name": "service_name", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "method", "mode": "NULLABLE", "type": "STRING" }, { "name": "permission", "mode": "NULLABLE", "type": "STRING" } ], "name": "method_selectors", "mode": "REPEATED", "type": "RECORD" } ], "name": "operations", "mode": "REPEATED", "type": "RECORD" }, { "name": "external_resources", "mode": "REPEATED", "type": "STRING" } ], "name": "egress_to", "mode": "NULLABLE", "type": "RECORD" } ], "name": "egress_policies", "mode": "REPEATED", "type": "RECORD" } ], "name": "spec", "mode": "NULLABLE", "type": "RECORD" }, { "name": "use_explicit_dry_run_spec", "mode": "NULLABLE", "type": "BOOLEAN" } ], "name": "service_perimeter", "mode": "NULLABLE", "type": "RECORD" }, { "name": "ancestors", "mode": "REPEATED", "type": "STRING" }, { "name": "update_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ]
Inventaris instance OSConfig: Saat Anda menetapkan jenis konten ke
OS_INVENTORY
di REST API atauos-inventory
di gcloud CLI, Anda membuat Tabel BigQuery yang memiliki skema berikut.Skema inventaris OS
[ { "name": "name", "mode": "NULLABLE", "type": "STRING" }, { "name": "asset_type", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "name", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "hostname", "mode": "NULLABLE", "type": "STRING" }, { "name": "long_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "short_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "kernel_version", "mode": "NULLABLE", "type": "STRING" }, { "name": "kernel_release", "mode": "NULLABLE", "type": "STRING" }, { "name": "osconfig_agent_version", "mode": "NULLABLE", "type": "STRING" } ], "name": "os_info", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "key", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "id", "mode": "NULLABLE", "type": "STRING" }, { "name": "origin_type", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "create_time", "mode": "NULLABLE", "type": "TIMESTAMP" }, { "name": "update_time", "mode": "NULLABLE", "type": "TIMESTAMP" }, { "name": "type", "mode": "NULLABLE", "type": "INTEGER" }, { "fields": [ { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "yum_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "apt_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "zypper_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "googet_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "patch_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "category", "mode": "NULLABLE", "type": "STRING" }, { "name": "severity", "mode": "NULLABLE", "type": "STRING" }, { "name": "summary", "mode": "NULLABLE", "type": "STRING" } ], "name": "zypper_patch", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "title", "mode": "NULLABLE", "type": "STRING" }, { "name": "description", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "id", "mode": "NULLABLE", "type": "STRING" }, { "name": "name", "mode": "NULLABLE", "type": "STRING" } ], "name": "categories", "mode": "REPEATED", "type": "RECORD" }, { "name": "kb_article_ids", "mode": "REPEATED", "type": "STRING" }, { "name": "support_url", "mode": "NULLABLE", "type": "STRING" }, { "name": "more_info_urls", "mode": "REPEATED", "type": "STRING" }, { "name": "update_id", "mode": "NULLABLE", "type": "STRING" }, { "name": "revision_number", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "last_deployment_change_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ], "name": "wua_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "caption", "mode": "NULLABLE", "type": "STRING" }, { "name": "description", "mode": "NULLABLE", "type": "STRING" }, { "name": "hot_fix_id", "mode": "NULLABLE", "type": "STRING" }, { "name": "install_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ], "name": "qfe_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "cos_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "display_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "display_version", "mode": "NULLABLE", "type": "STRING" }, { "name": "publisher", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "year", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "month", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "day", "mode": "NULLABLE", "type": "INTEGER" } ], "name": "install_date", "mode": "NULLABLE", "type": "RECORD" }, { "name": "help_link", "mode": "NULLABLE", "type": "STRING" } ], "name": "windows_application", "mode": "NULLABLE", "type": "RECORD" } ], "name": "installed_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "yum_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "apt_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "zypper_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "googet_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "patch_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "category", "mode": "NULLABLE", "type": "STRING" }, { "name": "severity", "mode": "NULLABLE", "type": "STRING" }, { "name": "summary", "mode": "NULLABLE", "type": "STRING" } ], "name": "zypper_patch", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "title", "mode": "NULLABLE", "type": "STRING" }, { "name": "description", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "id", "mode": "NULLABLE", "type": "STRING" }, { "name": "name", "mode": "NULLABLE", "type": "STRING" } ], "name": "categories", "mode": "REPEATED", "type": "RECORD" }, { "name": "kb_article_ids", "mode": "REPEATED", "type": "STRING" }, { "name": "support_url", "mode": "NULLABLE", "type": "STRING" }, { "name": "more_info_urls", "mode": "REPEATED", "type": "STRING" }, { "name": "update_id", "mode": "NULLABLE", "type": "STRING" }, { "name": "revision_number", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "last_deployment_change_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ], "name": "wua_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "caption", "mode": "NULLABLE", "type": "STRING" }, { "name": "description", "mode": "NULLABLE", "type": "STRING" }, { "name": "hot_fix_id", "mode": "NULLABLE", "type": "STRING" }, { "name": "install_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ], "name": "qfe_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "package_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "architecture", "mode": "NULLABLE", "type": "STRING" }, { "name": "version", "mode": "NULLABLE", "type": "STRING" } ], "name": "cos_package", "mode": "NULLABLE", "type": "RECORD" }, { "fields": [ { "name": "display_name", "mode": "NULLABLE", "type": "STRING" }, { "name": "display_version", "mode": "NULLABLE", "type": "STRING" }, { "name": "publisher", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "year", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "month", "mode": "NULLABLE", "type": "INTEGER" }, { "name": "day", "mode": "NULLABLE", "type": "INTEGER" } ], "name": "install_date", "mode": "NULLABLE", "type": "RECORD" }, { "name": "help_link", "mode": "NULLABLE", "type": "STRING" } ], "name": "windows_application", "mode": "NULLABLE", "type": "RECORD" } ], "name": "available_package", "mode": "NULLABLE", "type": "RECORD" } ], "name": "value", "mode": "NULLABLE", "type": "RECORD" } ], "name": "items", "mode": "REPEATED", "type": "RECORD" }, { "name": "update_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ], "name": "os_inventory", "mode": "NULLABLE", "type": "RECORD" }, { "name": "ancestors", "mode": "REPEATED", "type": "STRING" }, { "name": "update_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ]
Hubungan: Saat menetapkan jenis konten ke
RELATIONSHIP
di REST API ataurelationship
di gcloud CLI, Anda akan membuat tabel BigQuery yang memiliki skema berikut.Skema hubungan
[ { "name": "name", "mode": "NULLABLE", "type": "STRING" }, { "name": "asset_type", "mode": "NULLABLE", "type": "STRING" }, { "fields": [ { "name": "asset", "mode": "NULLABLE", "type": "STRING" }, { "name": "asset_type", "mode": "NULLABLE", "type": "STRING" }, { "name": "ancestors", "mode": "REPEATED", "type": "STRING" }, { "name": "relationship_type", "mode": "NULLABLE", "type": "STRING" } ], "name": "related_asset", "mode": "NULLABLE", "type": "RECORD" }, { "name": "ancestors", "mode": "REPEATED", "type": "STRING" }, { "name": "update_time", "mode": "NULLABLE", "type": "TIMESTAMP" } ]
Mengekspor ringkasan aset
gcloud
gcloud asset export \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --snapshot-time="SNAPSHOT_TIME" \ --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \ --output-bigquery-force
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. -
folder=FOLDER_ID
, denganFOLDER_ID
adalah ID folder yang memiliki metadata aset yang ingin Anda ekspor.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 akan 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 kecocokan 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 level 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.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
: Opsional. 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. ASSET_TYPE_#
: Opsional. Daftar yang dipisahkan koma dari jenis aset yang dapat ditelusuri. Ekspresi reguler yang kompatibel dengan RE2 didukung. Jika ekspresi reguler tidak cocok semua jenis aset yang didukung, errorINVALID_ARGUMENT
akan ditampilkan. Jika--asset-types
tidak ditentukan, semua jenis aset akan ditampilkan.CONTENT_TYPE
: Opsional. Jenis konten metadata yang ingin Anda ambil. Kapan--content-type
tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, saat terakhir kali aset diperbarui, dan project, folder, serta organisasi apa yang mereka miliki.-
RELATIONSHIP_TYPE_#
: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma dari jenis hubungan aset yang ingin diambil. Anda harus menetapkanCONTENT_TYPE
keRELATIONSHIP
agar fitur ini berfungsi. -
SNAPSHOT_TIME
: Opsional. Waktu saat Anda ingin mengambil cuplikan aset Anda, di format datetime topik gcloud. Nilainya tidak boleh lebih dari 35 hari yang lalu. Kapan--snapshot-time
tidak ditentukan, snapshot diambil pada waktu saat ini. -
BIGQUERY_PROJECT_ID
: ID project tempat tabel BigQuery berada yang ingin Anda ekspor. -
DATASET_ID
: ID set data BigQuery. -
TABLE_NAME
: Tabel BigQuery yang Anda yang menjadi tujuan ekspor metadata. Jika tidak ada, folder akan dibuat.
Tanda --output-bigquery-force
akan menimpa tabel tujuan jika ada.
Baca referensi gcloud CLI untuk mengetahui semua opsi.
Contoh
Jalankan perintah berikut untuk mengekspor metadata resource
Anda seperti pada 30 Januari.
2024 dalam project my-project
, ke tabel BigQuery
my-table
.
gcloud asset export \ --project=my-project \ --content-type=resource \ --snapshot-time="2024-01-30" \ --bigquery-table=projects/my-project/datasets/my-dataset/tables/my-table \ --output-bigquery-force
Contoh respons
Export in progress for root asset [projects/my-project]. Use [gcloud asset operations describe projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000] to check the status of the operation.
REST
Metode HTTP dan URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
Header:
X-Goog-User-Project: BILLING_PROJECT_ID
Meminta isi JSON:
{ "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "readTime": "SNAPSHOT_TIME", "outputConfig": { "bigqueryDestination": { "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID", "table": "TABLE_NAME", "force": true } } }
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. -
projects/PROJECT_NUMBER
, denganPROJECT_NUMBER
adalah nomor project yang memiliki metadata aset yang ingin Anda ekspor.Cara menemukan nomor project Google Cloud
Konsol Google Cloud
Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:
-
Buka halaman Welcome 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 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
, denganFOLDER_ID
adalah ID folder yang memiliki metadata aset yang ingin Anda ekspor.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 akan 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 kecocokan 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 level 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.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
: 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. CONTENT_TYPE
: Jenis konten metadata yang ingin Anda ambil. JikacontentType
tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, saat terakhir kali aset diperbarui, dan project, folder, serta organisasi apa yang mereka miliki.-
RELATIONSHIP_TYPE_#
: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma untuk jenis hubungan aset yang ingin Anda ambil. Anda harus menetapkanCONTENT_TYPE
keRELATIONSHIP
agar berfungsi. -
SNAPSHOT_TIME
: Opsional. Waktu Anda ingin mengambil snapshot aset, dalam format RFC 3339. Nilainya tidak boleh lebih dari 35 hari yang lalu. JikareadTime
tidak ditentukan, snapshot akan diambil pada waktu saat ini. -
BIGQUERY_PROJECT_ID
: ID project tempat tabel BigQuery berada yang ingin Anda ekspor. -
DATASET_ID
: ID set data BigQuery. -
TABLE_NAME
: Tabel BigQuery tempat Anda mengekspor metadata. Jika tidak ada, maka akan dibuat.
Pasangan nilai kunci "force": true
akan menimpa tabel tujuan jika ada.
Lihat referensi REST untuk semua lainnya.
Contoh perintah
Jalankan salah satu perintah berikut untuk mengekspor metadata resource
Anda seperti yang aktif
30 Januari 2024 dalam project my-project
, ke tabel BigQuery
my-table
.
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 '{ "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "force": true } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "force": true } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets" | Select-Object -Expand Content
Contoh respons
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "force": true } } } }
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.
Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat library klien Inventaris Aset Cloud.
Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud
Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Inventaris Aset Cloud, lihat Library klien Inventaris Aset Cloud
Untuk melakukan autentikasi ke Inventaris Aset Cloud, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Mengekspor snapshot aset ke tabel terpisah untuk setiap jenis aset
Anda dapat mengekspor aset ke tabel BigQuery terpisah untuk setiap aset
mengetik dengan flag --per-asset-type
di gcloud CLI, dan
"separateTablesPerAssetType": true
dalam permintaan REST API.
Dalam mode ini, setiap nama tabel TABLE_NAME
digabungkan
dengan _
(garis bawah) dan nama jenis aset. Karakter non-alfanumerik adalah
diganti dengan _
.
Jika mengekspor ke tabel mana pun gagal, seluruh operasi ekspor akan gagal dan ditampilkan kesalahan pertama. Hasil ekspor sebelumnya yang berhasil akan tetap ada.
Jenis berikut dikemas dalam string JSON untuk mengatasi masalah kompatibilitas antara Proto3 dan jenis BigQuery.
google.protobuf.Timestamp
google.protobuf.Duration
google.protobuf.FieldMask
google.protobuf.ListValue
google.protobuf.Value
google.protobuf.Struct
google.api.*
gcloud
gcloud asset export \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --snapshot-time="SNAPSHOT_TIME" \ --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \ --per-asset-type \ --output-bigquery-force
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. -
folder=FOLDER_ID
, denganFOLDER_ID
adalah ID folder yang memiliki metadata aset yang ingin Anda ekspor.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 akan 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 kecocokan 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 level 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.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
: Opsional. 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. ASSET_TYPE_#
: Opsional. Daftar jenis aset yang dapat ditelusuri yang dipisahkan koma. Ekspresi reguler yang kompatibel dengan RE2 didukung. Jika ekspresi reguler tidak cocok dengan jenis aset yang didukung, errorINVALID_ARGUMENT
akan ditampilkan. Kapan--asset-types
tidak ditentukan, semua jenis aset ditampilkan.CONTENT_TYPE
: Opsional. Jenis konten metadata yang ingin Anda ambil. Jika--content-type
tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, waktu terakhir kali aset diperbarui, dan project, folder, serta organisasi tempat aset tersebut berada.-
RELATIONSHIP_TYPE_#
: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma dari jenis hubungan aset yang ingin diambil. Anda harus menetapkanCONTENT_TYPE
keRELATIONSHIP
agar fitur ini berfungsi. -
SNAPSHOT_TIME
: Opsional. Waktu saat Anda ingin buat cuplikan aset Anda, di format datetime topik gcloud. Nilai tidak boleh lebih dari 35 hari sebelumnya. Jika--snapshot-time
tidak ditentukan, snapshot akan diambil pada waktu saat ini. -
BIGQUERY_PROJECT_ID
: ID project tempat tabel BigQuery berada yang ingin Anda ekspor. -
DATASET_ID
: ID set data BigQuery. -
TABLE_NAME
: Tabel BigQuery yang Anda yang menjadi tujuan ekspor metadata. Jika tidak ada, folder akan dibuat.
Tanda --output-bigquery-force
akan menimpa tabel tujuan jika ada.
Lihat referensi gcloud CLI untuk semua opsi.
Contoh
Jalankan perintah berikut untuk mengekspor metadata resource
Anda seperti pada 30 Januari.
2024 dalam project my-project
, ke beberapa tabel BigQuery yang memiliki
my-table
sebagai awalan.
gcloud asset export \ --project=my-project \ --content-type=resource \ --snapshot-time="2024-01-30" \ --bigquery-table=projects/my-project/datasets/my-dataset/tables/my-table \ --per-asset-type \ --output-bigquery-force
REST
Metode HTTP dan URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
Header:
X-Goog-User-Project: BILLING_PROJECT_ID
Meminta isi JSON:
{ "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "readTime": "SNAPSHOT_TIME", "outputConfig": { "bigqueryDestination": { "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID", "table": "TABLE_NAME", "force": true, "separateTablesPerAssetType": true } } }
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. -
projects/PROJECT_NUMBER
, denganPROJECT_NUMBER
adalah nomor project yang memiliki metadata aset yang ingin Anda ekspor.Cara menemukan nomor project Google Cloud
Konsol Google Cloud
Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:
-
Buka halaman Welcome 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 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
, denganFOLDER_ID
adalah ID folder yang memiliki metadata aset yang ingin Anda ekspor.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 akan 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 kecocokan 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 level 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.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
: 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. CONTENT_TYPE
: jenis konten metadata yang ingin Anda ambil. JikacontentType
tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, waktu terakhir aset diperbarui, dan project, folder, serta organisasi tempat aset tersebut berada.-
RELATIONSHIP_TYPE_#
: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma untuk jenis hubungan aset yang ingin Anda ambil. Anda harus menetapkanCONTENT_TYPE
keRELATIONSHIP
agar fitur ini berfungsi. -
SNAPSHOT_TIME
: Opsional. Waktu Anda ingin mengambil snapshot aset, dalam format RFC 3339. Nilainya tidak boleh lebih dari 35 hari yang lalu. JikareadTime
tidak ditentukan, snapshot diambil pada waktu saat ini. -
BIGQUERY_PROJECT_ID
: ID project tempat tabel BigQuery berada yang ingin Anda ekspor. -
DATASET_ID
: ID set data BigQuery. -
TABLE_NAME
: Tabel BigQuery tempat Anda mengekspor metadata. Jika tidak ada, maka akan dibuat.
Pasangan nilai kunci "force": true
akan menimpa tabel tujuan jika ada.
Contoh perintah
Jalankan salah satu perintah berikut untuk mengekspor metadata resource
Anda seperti yang aktif
30 Januari 2024 dalam project my-project
, ke beberapa tabel BigQuery yang
memiliki my-table
sebagai awalan.
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 '{ "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "force": true, "separateTablesPerAssetType": true } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "force": true, "separateTablesPerAssetType": true } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets" | Select-Object -Expand Content
Mengekspor snapshot aset ke tabel berpartisi kolom unit waktu
Anda dapat mengekspor aset dalam project ke
tabel yang dipartisi kolom satuan waktu.
Snapshot yang diekspor disimpan dalam tabel BigQuery bernama
TABLE_NAME
dengan perincian harian dan dua tambahan
kolom stempel waktu, readTime
dan requestTime
, yang salah satunya Anda tentukan sebagai
kolom partisi dengan nilai PARTITION_KEY
.
Untuk mengekspor aset dalam project ke tabel yang dipartisi, buat salah satu hal berikut permintaan.
gcloud
gcloud asset export \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --snapshot-time="SNAPSHOT_TIME" \ --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \ --partition-key=PARTITION_KEY \ --output-bigquery-force
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. -
folder=FOLDER_ID
, denganFOLDER_ID
adalah ID folder yang memiliki metadata aset yang ingin Anda ekspor.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 akan 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 kecocokan 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 level 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.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
: Opsional. 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. ASSET_TYPE_#
: Opsional. Daftar jenis aset yang dapat ditelusuri yang dipisahkan koma. Ekspresi reguler yang kompatibel dengan RE2 didukung. Jika ekspresi reguler tidak cocok dengan jenis aset yang didukung, errorINVALID_ARGUMENT
akan ditampilkan. Jika--asset-types
tidak ditentukan, semua jenis aset akan ditampilkan.CONTENT_TYPE
: Opsional. Tujuan jenis konten dari metadata yang ingin Anda ambil. Jika--content-type
tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, waktu terakhir kali aset diperbarui, dan project, folder, serta organisasi tempat aset tersebut berada.-
RELATIONSHIP_TYPE_#
: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma untuk jenis hubungan aset yang ingin Anda ambil. Anda harus menetapkanCONTENT_TYPE
keRELATIONSHIP
agar fitur ini berfungsi. -
SNAPSHOT_TIME
: Opsional. Waktu saat Anda ingin buat cuplikan aset Anda, di format datetime topik gcloud. Nilai tidak boleh lebih dari 35 hari sebelumnya. Kapan--snapshot-time
tidak ditentukan, snapshot diambil pada waktu saat ini. -
BIGQUERY_PROJECT_ID
: ID project tempat tabel BigQuery berada yang ingin Anda ekspor. -
DATASET_ID
: ID set data BigQuery. -
TABLE_NAME
: Tabel BigQuery tempat Anda mengekspor metadata. Jika tidak ada, folder akan dibuat. -
PARTITION_KEY
: kolom kunci partisi saat mengekspor ke tabel berpartisi BigQuery. Nilai yang valid adalahread-time
danrequest-time
.
Flag --output-bigquery-force
akan menimpa data di partisi yang terkait di
tabel tujuan. Data di partisi yang berbeda tetap utuh.
Jika --output-bigquery-force
tidak ditentukan, data yang diekspor akan ditambahkan ke
partisi yang sesuai.
Operasi ekspor akan gagal jika pembaruan skema atau upaya untuk menambahkan data gagal. Hal ini mencakup jika tabel tujuan sudah ada dan tidak memiliki skema seperti yang diharapkan.
Lihat referensi gcloud CLI untuk semua opsi.
Contoh
Jalankan perintah berikut untuk mengekspor metadata resource
seperti yang ada pada 30 Januari 2024 di project my-project
, ke tabel BigQuery my-table
.
gcloud asset export \ --project=projects/my-project \ --content-type=resource \ --snapshot-time="2024-01-30" \ --bigquery-table=projects/my-project/datasets/my-dataset/tables/my-table \ --partition-key=my-partition-key \ --output-bigquery-force
REST
Metode HTTP dan URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
Header:
X-Goog-User-Project: BILLING_PROJECT_ID
Meminta isi JSON:
{ "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "readTime": "SNAPSHOT_TIME", "outputConfig": { "bigqueryDestination": { "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID", "table": "TABLE_NAME", "partitionSpec": { "partitionKey": "PARTITION_KEY" }, "force": true, } } }
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. -
projects/PROJECT_NUMBER
, denganPROJECT_NUMBER
adalah nomor project yang memiliki metadata aset yang ingin Anda ekspor.Cara menemukan nomor project Google Cloud
Konsol Google Cloud
Untuk menemukan nomor project Google Cloud, selesaikan langkah-langkah berikut:
-
Buka halaman Welcome 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 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
, denganFOLDER_ID
adalah ID folder yang memiliki metadata aset yang ingin Anda ekspor.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 akan 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 kecocokan 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 level 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.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
: 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. CONTENT_TYPE
: Jenis konten metadata yang ingin Anda ambil. JikacontentType
tidak ditentukan, hanya informasi dasar yang ditampilkan, seperti nama aset, saat terakhir kali aset diperbarui, dan project, folder, serta organisasi apa yang mereka miliki.-
RELATIONSHIP_TYPE_#
: Opsional. Hanya tersedia untuk Security Command Center Tingkat Premium dan Enterprise pelanggan. Daftar yang dipisahkan koma dari jenis hubungan aset yang ingin diambil. Anda harus menetapkanCONTENT_TYPE
keRELATIONSHIP
agar berfungsi. -
SNAPSHOT_TIME
: Opsional. Waktu Anda ingin mengambil snapshot aset, dalam format RFC 3339. Nilai tidak boleh lebih dari 35 hari sebelumnya. JikareadTime
tidak ditentukan, snapshot diambil pada waktu saat ini. -
BIGQUERY_PROJECT_ID
: ID project tempat tabel BigQuery berada yang ingin Anda ekspor. -
DATASET_ID
: ID set data BigQuery. -
TABLE_NAME
: Tabel BigQuery yang Anda yang menjadi tujuan ekspor metadata. Jika tidak ada, maka akan dibuat. -
PARTITION_KEY
: kolom kunci partisi saat mengekspor ke tabel berpartisi BigQuery. Nilai yang valid adalahREAD_TIME
danREQUEST_TIME
.
Pasangan nilai kunci "force": true
menimpa data di partisi yang sesuai di
tabel tujuan. Data di partisi yang berbeda tetap utuh.
Jika force
tidak ditetapkan atau ditetapkan ke false
, data yang diekspor akan ditambahkan ke
partisi yang sesuai.
Operasi ekspor akan gagal jika pembaruan skema atau upaya untuk menambahkan data gagal. Hal ini mencakup jika tabel tujuan sudah ada dan tidak memiliki skema seperti yang diharapkan.
Contoh perintah
Jalankan salah satu perintah berikut untuk mengekspor metadata resource
Anda seperti yang aktif
30 Januari 2024 dalam project my-project
, ke tabel BigQuery
my-table
.
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 '{ "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "partitionSpec": { "partitionKey": "my-partition-key" }, "force": true, } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "partitionSpec": { "partitionKey": "my-partition-key" }, "force": true, } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets" | Select-Object -Expand Content
Memeriksa status ekspor
Proses ekspor memerlukan waktu beberapa saat. Untuk memeriksa apakah ekspor telah dilakukan, Anda dapat melakukan kueri menggunakan ID operasinya.
Perhatikan bahwa meskipun ekspor Anda sudah selesai, seseorang mungkin telah membuat permintaan ekspor lain ke tujuan yang sama dengan operasi yang berbeda. Ekspor baru permintaan ke tujuan yang sama dapat dibuat setelah permintaan sebelumnya selesai, atau jika lebih dari 15 menit telah berlalu. Permintaan ekspor yang dilakukan di luar kondisi ini akan ditolak oleh Cloud Asset Inventory.
gcloud
Untuk melihat status ekspor Anda, selesaikan petunjuk berikut:
Dapatkan
OPERATION_PATH
, yang menyertakan ID operasi, dari respons terhadap permintaan ekspor Anda. TujuanOPERATION_PATH
ditampilkan sebagai respons terhadap ekspor, yang diformat sebagai berikut:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
Untuk memeriksa status ekspor, jalankan perintah berikut dengan
OPERATION_PATH
:gcloud asset operations describe OPERATION_PATH
REST
Untuk melihat status ekspor Anda, selesaikan petunjuk berikut:
Mendapatkan
OPERATION_PATH
, yang menyertakan operasi ID, dari respons terhadap permintaan ekspor Anda. TujuanOPERATION_PATH
ditampilkan sebagai nilainame
sebagai respons terhadap ekspor, yang diformat sebagai berikut:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
Untuk memeriksa status ekspor Anda, buat permintaan berikut.
REST
Metode HTTP dan URL:
GET https://cloudasset.googleapis.com/v1/OPERATION_PATH
Contoh perintah
curl (Linux, macOS, atau Cloud Shell)
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/OPERATION_PATH
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/OPERATION_PATH" | Select-Object -Expand Content
Lihat ringkasan aset di BigQuery
Konsol
Buka halaman BigQuery Studio di konsol Google Cloud.
Untuk menampilkan tabel dan tampilan dalam {i>dataset<i}, buka navigasi . Di bagian Resources, pilih project Anda untuk meluaskannya, dan kemudian memilih sebuah {i>dataset<i}.
Dari daftar, pilih tabel Anda.
Pilih Detail dan catat nilai dalam Jumlah baris. Anda mungkin memerlukan nilai ini untuk mengontrol titik awal hasil Anda menggunakan gcloud CLI atau REST API.
Untuk melihat contoh set data, pilih Pratinjau.
REST
Untuk menjelajahi data tabel Anda, panggil
tabledata.list
Di kolom
Parameter tableId
, tentukan nama tabel Anda.
Anda dapat mengonfigurasi parameter opsional berikut untuk mengontrol output.
maxResults
adalah jumlah hasil maksimum yang akan ditampilkan.selectedFields
adalah daftar kolom yang dipisahkan koma yang akan ditampilkan; Jika tidak ditentukan, maka semua kolom akan ditampilkan.startIndex
adalah indeks berbasis nol dari baris awal yang akan dibaca.
Nilai akan ditampilkan dan digabungkan dalam objek JSON yang harus Anda uraikan, seperti dijelaskan
dalam dokumentasi referensi
tabledata.list
.
Membuat kueri snapshot aset di BigQuery
Setelah mengekspor snapshot ke BigQuery, Anda dapat menjalankan kueri pada metadata aset.
Secara default, BigQuery menjalankan tugas kueri interaktif, atau sesuai permintaan, yang berarti kueri dijalankan sesegera mungkin. Interaktif kueri dihitung dalam batas kapasitas serentak dan batas harian Anda.
Hasil kueri disimpan ke tabel sementara atau permanen. Anda dapat memilih untuk menambahkan atau menimpa data di tabel yang ada atau membuat tabel baru, jika tidak ada dengan nama yang sama.
Untuk menjalankan kueri interaktif yang menulis {i>output<i} ke tabel sementara, menyelesaikan langkah-langkah berikut.
Konsol
Buka halaman BigQuery Studio di Konsol Google Cloud.
Pilih
Tulis kueri baru.Di area teks Query editor, masukkan kueri SQL BigQuery yang valid.
Opsional: Untuk mengubah lokasi pemrosesan data, selesaikan langkah-langkah berikut.
Pilih Lainnya, lalu pilih Setelan kueri.
Di bagian Pemrosesan lokasi, pilih Pilih otomatis, lalu pilih lokasi data Anda.
Untuk memperbarui setelan kueri, pilih Simpan.
Pilih Run.
REST
Untuk memulai tugas baru, panggil metode
jobs.insert
. Di resource tugas, tetapkan parameter berikut.Di kolom
configuration
, tetapkan kolomquery
ke JobConfigurationQuery yang menjelaskan tugas kueri BigQuery.Di
jobReference
, atur bidanglocation
yang sesuai untuk pekerjaan Anda.
Untuk melakukan polling hasil, panggil
getQueryResults
. Polling hinggajobComplete
sama dengantrue
. Anda dapat memeriksa kesalahan dan peringatan dalam daftarerrors
.
Contoh kueri SQL tambahan
Bagian ini memberikan contoh kueri SQL untuk menganalisis metadata aset setelah Anda mengekspornya ke BigQuery. Lihat sintaksis kueri SQL standar untuk mengetahui informasi selengkapnya.
Membuat kueri kolom yang tersedia secara langsung
Untuk menemukan jumlah setiap jenis aset, jalankan kueri berikut:
SELECT asset_type, COUNT(*) AS asset_count
FROM `PROJECT_ID.DATASET_ID.TABLE_NAME`
GROUP BY asset_type
ORDER BY asset_count DESC
Menggunakan kolom berulang
Untuk menemukan kebijakan Identity and Access Management (IAM) yang memberikan akses ke Gmail
akun, jalankan kueri berikut. BigQuery menggunakan UNNEST
untuk
ratakan
kolom berulang ke dalam tabel
yang dapat Anda kueri secara langsung:
SELECT name, asset_type, bindings.role
FROM `PROJECT_ID.DATASET_ID.TABLE_NAME`
JOIN UNNEST(iam_policy.bindings) AS bindings
JOIN UNNEST(bindings.members) AS principals
WHERE principals like "%@gmail.com"
Untuk menemukan organisasi, folder, atau project yang memungkinkan pembuatan menggunakan alamat IP publik, jalankan kueri berikut. Kueri ini berguna karena mengizinkan alamat IP publik dengan instance Cloud SQL dapat menyebabkan kerentanan, kecuali jika SSL atau proxy dikonfigurasi:
SELECT name
FROM `PROJECT_ID.DATASET_ID.TABLE_NAME`
JOIN UNNEST(org_policy) AS op
WHERE
op.constraint = "constraints/sql.restrictPublicIp"
AND (op.boolean_policy IS NULL OR op.boolean_policy.enforced = FALSE);
Untuk menemukan organisasi, folder, atau project dalam perimeter layanan Kontrol Layanan VPC yang sama dari project, jalankan kueri berikut:
SELECT service_perimeter.title, service_perimeter.status.resources
FROM `PROJECT_ID.DATASET_ID.TABLE_NAME`
CROSS JOIN UNNEST(service_perimeter.status.resources) as resource
WHERE resource = "projects/PROJECT_ID";
Menggunakan string JSON
Untuk menemukan aturan firewall yang terbuka, jalankan kueri berikut. Pelajari selengkapnya tentang Fungsi JSON yang digunakan di BigQuery.
CREATE TEMP FUNCTION json2array(json STRING)
RETURNS ARRAY<STRING>
LANGUAGE js AS """
return JSON.parse(json).map(x=>JSON.stringify(x));
""";
SELECT firewall.name, firewall.resource.parent, JSON_EXTRACT(firewall.resource.data, '$.sourceRanges') AS sourceRanges
FROM `PROJECT_ID.DATASET_ID.TABLE_NAME` AS firewall
JOIN UNNEST(json2array(JSON_EXTRACT(firewall.resource.data, '$.sourceRanges'))) AS source_ranges
WHERE asset_type="compute.googleapis.com/Firewall" AND JSON_EXTRACT(firewall.resource.data, '$.sourceRanges') IS NOT NULL AND JSON_EXTRACT_SCALAR(source_ranges, '$') = "0.0.0.0/0"
Menurut memisahkan tabel untuk setiap jenis resource, Anda dapat menemukan aturan {i>firewall<i} terbuka dengan kueri yang lebih mudah dan cepat.
SELECT firewall.name, firewall.resource.parent, sourceRanges
FROM `PROJECT_ID.DATASET_ID.STRUCTURED_INSTANCE_TABLE_NAME` AS firewall
JOIN UNNEST(firewall.resource.data.sourceRanges) AS sourceRanges
WHERE sourceRanges = "0.0.0.0/0";
Menggabungkan tabel dari berbagai jenis resource
Untuk menggabungkan tabel dengan berbagai jenis resource, jalankan kueri berikut. Tujuan
contoh berikut menunjukkan cara menemukan semua subnetwork yang tidak memiliki VM yang terpasang.
Pertama, kueri akan menemukan semua subjaringan. Kemudian, dari daftar tersebut, subjaringan yang nilai selfLink
-nya tidak ada akan dipilih.
CREATE TEMP FUNCTION json2array(json STRING)
RETURNS ARRAY<STRING>
LANGUAGE js AS """
return JSON.parse(json).map(x=>JSON.stringify(x));
""";
SELECT name, JSON_EXTRACT(subnetwork.resource.data, '$.selfLink') AS selflink
FROM `PROJECT_ID.DATASET_ID.TABLE_NAME` AS subnetwork
WHERE asset_type = "compute.googleapis.com/Subnetwork" AND (JSON_EXTRACT(subnetwork.resource.data, '$.selfLink') NOT IN
(SELECT DISTINCT JSON_EXTRACT(network_interfaces, '$.subnetwork')
FROM `PROJECT_ID.DATASET_ID.TABLE_NAME` as instance
JOIN UNNEST(json2array(JSON_EXTRACT(instance.resource.data, '$.networkInterfaces'))) AS network_interfaces
WHERE asset_type ="compute.googleapis.com/Instance"
AND JSON_EXTRACT(instance.resource.data, '$.networkInterfaces') IS NOT NULL
)) IS NULL
Menurut memisahkan tabel untuk setiap jenis resource, Anda dapat menemukan semua subnetwork yang belum memiliki VM dengan cara kueri.
SELECT name, subnetwork.resource.data.selfLink
FROM `PROJECT_ID.DATASET_ID.STRUCTURED_SUBNETWORK_TABLE_NAME` AS subnetwork
WHERE
(
subnetwork.resource.data.selfLink
NOT IN (
SELECT DISTINCT networkInterface.subnetwork
FROM `PROJECT_ID.DATASET_ID.STRUCTURED_INSTANCE_TABLE_NAME` as instance
JOIN
UNNEST(instance.resource.data.networkInterfaces) AS networkInterface
WHERE
networkInterface IS NOT NULL
)
) IS NULL;
Menemukan cluster Dataproc yang rentan karena CVE-2021-44228
CREATE TEMP FUNCTION vulnerable_version(imageVersion STRING)
RETURNS BOOL
LANGUAGE js AS r"""
const version_regexp = /(?<major>\d+)(?:\.)(?<minor>\d+)(?:\.)?(?<sub>\d+)?/g;
let match = version_regexp.exec(imageVersion);
if(match.groups.major < 1){
return true;
}
if (match.groups.major == 1){
if (match.groups.minor < 3){
return true;
}
if(match.groups.minor == 3 && match.groups.sub < 95){
return true;
}
if(match.groups.minor == 4 && match.groups.sub < 77){
return true;
}
if(match.groups.minor == 5 && match.groups.sub < 53){
return true;
}
}
if (match.groups.major == 2 && match.groups.minor == 0 && match.groups.sub < 27){
return true;
}
return false;
""";
SELECT
c.name,
c.resource.data.projectId AS project_id,
c.resource.data.clusterName AS cluster_name,
c.resource.data.config.softwareConfig.imageVersion AS image_version,
c.resource.data.status.state AS cluster_state,
vulnerable_version(c.resource.data.config.softwareConfig.imageVersion) AS is_vulnerable
FROM
`PROJECT_ID.DATASET_ID.TABLE_NAME_PREFIX_dataproc_googleapis_com_Cluster` c
INNER JOIN `PROJECT_ID.DATASET_ID.TABLE_NAME_PREFIX_cloudresourcemanager_googleapis_com_Project` p
ON p.resource.data.projectId = c.resource.data.projectId
WHERE
c.resource.data.config.softwareConfig.imageVersion IS NOT NULL
AND c.resource.data.status.state = "RUNNING"
AND p.resource.data.lifecycleState = "ACTIVE";