Dokumen ini menunjukkan cara mengekspor snapshot aset dari organisasi, folder, atau project Anda ke tabel BigQuery, lalu menjalankan analisis data di 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 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.
Buat set data BigQuery untuk diekspor, 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
dapat diekspor dengan nilainull
.Mengekspor ke tabel BigQuery yang dikelompokkan 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 tujuan ekspor sudah ada dan sedang dalam proses ekspor, error
400
akan ditampilkan.
Skema BigQuery yang digunakan untuk ekspor
Setiap tabel BigQuery ditentukan oleh skema yang menjelaskan nama kolom, jenis data, dan informasi lainnya. Menetapkan jenis konten untuk ekspor akan 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 string JSON.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 setiap tabel mencakup kolom jenis RECORD yang dipetakan ke kolom bertingkat di kolomResource.data
dari jenis aset tersebut (hingga 15 tingkat bertingkat yang didukung BigQuery). Untuk contoh tabel, lihat export-assets-examples di konsol Google Cloud.Kebijakan IAM: Saat menetapkan jenis konten ke
IAM_POLICY
di REST API atauiam-policy
di gcloud CLI, Anda akan 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 menetapkan jenis konten ke
OS_INVENTORY
di REST API atauos-inventory
di gcloud CLI, Anda akan 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 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.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. 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 pelanggan Security Command Center tingkat Premium dan Enterprise. 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 mengambil snapshot aset, dalam format waktu topik gcloud. Nilainya tidak boleh lebih dari 35 hari yang lalu. Jika--snapshot-time
tidak ditentukan, snapshot akan diambil pada waktu saat ini. -
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.
Flag --output-bigquery-force
akan menimpa tabel tujuan jika ada.
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=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 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.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.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. 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 pelanggan Security Command Center tingkat Premium dan Enterprise. 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 akan diambil pada waktu saat ini. -
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.
Pasangan nilai kunci "force": true
akan menimpa tabel tujuan jika ada.
Lihat referensi REST untuk semua opsi.
Contoh perintah
Jalankan salah satu perintah berikut untuk mengekspor metadata resource
seperti pada
30 Januari 2024 di 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 Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat 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 Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat 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 Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat 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 Cloud Asset Inventory, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat 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 jenis aset dengan flag --per-asset-type
di gcloud CLI, dan "separateTablesPerAssetType": true
dalam permintaan REST API.
Dalam mode ini, nama setiap tabel adalah TABLE_NAME
yang digabungkan dengan _
(garis bawah) dan nama jenis aset. Karakter non-alfanumerik
diganti dengan _
.
Jika ekspor ke tabel apa pun gagal, seluruh operasi ekspor akan gagal dan menampilkan error 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 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.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. 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 pelanggan Security Command Center tingkat Premium dan Enterprise. 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 mengambil snapshot aset, dalam format waktu topik gcloud. Nilainya tidak boleh lebih dari 35 hari yang lalu. Jika--snapshot-time
tidak ditentukan, snapshot akan diambil pada waktu saat ini. -
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.
Flag --output-bigquery-force
akan menimpa tabel tujuan jika ada.
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 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 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.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.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. 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 pelanggan Security Command Center tingkat Premium dan Enterprise. 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 akan diambil pada waktu saat ini. -
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.
Pasangan nilai kunci "force": true
akan menimpa tabel tujuan jika ada.
Contoh perintah
Jalankan salah satu perintah berikut untuk mengekspor metadata resource
seperti pada tanggal 30 Januari 2024 di 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 berpartisi berdasarkan kolom unit waktu.
Snapshot yang diekspor disimpan dalam tabel BigQuery bernama TABLE_NAME
dengan perincian harian dan dua kolom stempel waktu tambahan, readTime
dan requestTime
, salah satunya Anda tentukan sebagai kolom partisi dengan nilai PARTITION_KEY
.
Untuk mengekspor aset dalam project ke tabel berpartisi, buat salah satu permintaan berikut.
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 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.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. 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 pelanggan Security Command Center tingkat Premium dan Enterprise. 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 mengambil snapshot aset, dalam format waktu topik gcloud. Nilainya tidak boleh lebih dari 35 hari yang lalu. Jika--snapshot-time
tidak ditentukan, snapshot akan diambil pada waktu saat ini. -
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. -
PARTITION_KEY
: Kolom kunci partisi saat mengekspor ke tabel partisi BigQuery. Nilai yang valid adalahread-time
danrequest-time
.
Flag --output-bigquery-force
menimpa data di partisi yang sesuai 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 yang diharapkan ekspor.
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 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.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.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. 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 pelanggan Security Command Center tingkat Premium dan Enterprise. 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 akan diambil pada waktu saat ini. -
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. -
PARTITION_KEY
: Kolom kunci partisi saat mengekspor ke tabel partisi 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 yang diharapkan ekspor.
Contoh perintah
Jalankan salah satu perintah berikut untuk mengekspor metadata resource
seperti pada
30 Januari 2024 di 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 untuk diselesaikan. Untuk memeriksa apakah ekspor telah selesai, Anda dapat membuat kueri operasi 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. Permintaan ekspor baru ke tujuan yang sama dapat dilakukan 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.OPERATION_PATH
ditampilkan dalam 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:
Dapatkan
OPERATION_PATH
, yang menyertakan ID operasi, dari respons terhadap permintaan ekspor Anda.OPERATION_PATH
ditampilkan sebagai nilai kolomname
dalam respons terhadap ekspor, yang diformat sebagai berikut:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
Untuk memeriksa status ekspor, 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
Melihat snapshot aset di BigQuery
Konsol
Buka halaman BigQuery Studio di konsol Google Cloud.
Untuk menampilkan tabel dan tampilan dalam set data, buka panel navigasi. Di bagian Resource, pilih project Anda untuk meluaskannya, lalu pilih set data.
Dari daftar, pilih tabel Anda.
Pilih Detail dan catat nilai dalam Jumlah baris. Anda mungkin memerlukan nilai ini untuk mengontrol titik awal hasil menggunakan gcloud CLI atau REST API.
Untuk melihat contoh set data, pilih Pratinjau.
REST
Untuk menjelajahi data tabel, panggil
tabledata.list
. Di 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, 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. Kueri interaktif dihitung dalam batas kapasitas serentak dan batas harian.
Hasil kueri disimpan ke tabel sementara atau permanen. Anda dapat memilih untuk menambahkan atau menimpa data dalam tabel yang ada atau membuat tabel baru, jika tidak ada tabel dengan nama yang sama.
Untuk menjalankan kueri interaktif yang menulis output ke tabel sementara, selesaikan langkah-langkah berikut.
Konsol
Buka halaman BigQuery Studio di konsol Google Cloud.
Pilih
Compose new query.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 Processing location, pilih Auto-select, lalu pilih location 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 kolom
jobReference
, tetapkan kolomlocation
dengan tepat untuk tugas Anda.
Untuk melakukan polling hasil, panggil
getQueryResults
. Polling hinggajobComplete
sama dengantrue
. Anda dapat memeriksa error 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 akun Gmail, jalankan kueri berikut. BigQuery menggunakan UNNEST
untuk
meratakan
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";
Bekerja dengan string JSON
Untuk menemukan aturan firewall yang terbuka, jalankan kueri berikut. Pelajari lebih lanjut 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"
Dengan memisahkan tabel untuk setiap jenis resource, Anda dapat menemukan aturan firewall terbuka dengan kueri yang lebih mudah dan lebih 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 dari berbagai jenis resource, jalankan kueri berikut. Contoh
berikut menunjukkan cara menemukan semua subnetwork yang tidak memiliki VM 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
Dengan memisahkan tabel untuk setiap jenis resource, Anda dapat menemukan semua subjaringan yang tidak memiliki VM yang terpasang dengan kueri yang lebih mudah dan lebih cepat.
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";