In diesem Dokument erfahren Sie, wie Sie einen Asset-Snapshot aus Ihrer Organisation, Ihrem Ordner oder Ihrem Projekt in eine BigQuery-Tabelle exportieren und dann eine Datenanalyse für Ihr Inventar durchführen. BigQuery bietet Nutzern eine SQL-ähnliche Erfahrung, um Daten zu analysieren und können Sie auch ohne benutzerdefinierte Skripts aussagekräftige Informationen gewinnen.
Hinweise
Die Cloud Asset Inventory API in dem Projekt aktivieren, in dem Sie Cloud Asset Inventory-Befehle ausführen aus.
Prüfen Sie, ob Ihrem Konto die richtige Rolle zum Aufrufen der Cloud Asset Inventory API zugewiesen ist. Informationen zu den einzelnen Berechtigungen für jeden Anruftyp finden Sie unter Berechtigungen.
Erstellen Sie ein BigQuery-Dataset, in das exportiert werden soll. falls Sie noch keines haben.
Beschränkungen
Beim Exportieren von BigQuery-Tabellendaten werden nicht alle Felder von Cloud Asset Inventory verwenden.
Häufig ändernde Asset-Felder wie
numBytes
,numLongTermBytes
,numPhysicalBytes
undnumRows
können mit einemnull
-Wert exportiert werden.Der Export in geclusterte BigQuery-Tabellen wird nicht unterstützt.
BigQuery-Tabellen, die mit benutzerdefinierten Cloud KMS-Schlüsseln (Cloud Key Management Service) verschlüsselt sind, werden nicht unterstützt.
Das Anhängen der Exportausgabe an eine vorhandene Tabelle wird nur unterstützt, wenn Sie Export in eine partitionierte Tabelle Die Zieltabelle muss leer sein oder Sie müssen ihn überschreiben. Verwenden Sie zum Überschreiben das Flag
--output-bigquery-force
mit der gcloud CLI oder verwenden Sie"force": true
mit der REST API.Google Kubernetes Engine-Ressourcentypen (GKE), mit Ausnahme von
container.googleapis.com/Cluster
undcontainer.googleapis.com/NodePool
, werden beim Exportieren nach separate Tabellen für jeden Ressourcentyp.Cloud Asset Inventory lehnt Exportanfragen ab, wenn eine vorherige Anfrage an denselben Ziel vor weniger als 15 Minuten gestartet und wird noch ausgeführt. Wenn jedoch ein Export länger als 15 Minuten gedauert hat, wird er als erledigt markiert. und neue Exportanfragen zum selben Ziel zulässig sind.
Der Inhaltstyp
ACCESS_POLICY
kann nur auf Organisationsebene exportiert werden.Wenn die Tabelle, in die Sie exportieren, bereits vorhanden ist und gerade exportiert wird, wird der Fehler
400
zurückgegeben.
Für den Export verwendete BigQuery-Schemas
Jede BigQuery-Tabelle wird durch ein Schema definiert, das unter anderem Informationen zu Spaltennamen und Datentypen enthält. Durch das Festlegen des Inhaltstyps für einen Export wird das Schema für die Tabelle bestimmt:
Ressource oder nicht spezifiziert: Wenn Sie den Inhaltstyp auf
RESOURCE
setzen oder nicht angeben und dasper-asset-type
-Flag auffalse
setzen oder nicht verwenden, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.Ressourcenschema
[ { "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" } ]
Die Spalte
resource.data
enthält die Ressourcenmetadaten im JSON-Format. .Wenn Sie den Inhaltstyp auf
RESOURCE
festlegen oder nicht festlegen und das Flagper-asset-type
auftrue
setzen, werden separate Tabellen für jeden Asset-Typ erstellt. Das Schema der einzelnen enthält Spalten vom Typ RECORD, die den verschachtelten Feldern in derResource.data
des Asset-Typs verwendet (bis zu 15 verschachtelte Ebenen, BigQuery unterstützt). Beispieltabellen finden Sie in der Google Cloud Console unter export-assets-examples.IAM-Richtlinie:Wenn Sie den Inhaltstyp auf
IAM_POLICY
festlegen in der REST API oderiam-policy
in der gcloud CLI erstellen Sie ein BigQuery-Tabelle mit dem folgenden Schema.IAM-Richtlinienschema
[ { "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" } ]
Organisationsrichtlinie: Wenn Sie den Inhaltstyp
ORG_POLICY
in der REST API oderorg-policy
in der gcloud-Befehlszeile festlegen, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.Schema für Organisationsrichtlinien
[ { "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" } ]
VPCSC-Richtlinie: Wenn Sie den Inhaltstyp
ACCESS_POLICY
in der REST API oderaccess-policy
in der gcloud-Befehlszeile festlegen, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.Schema der VPCSC-Richtlinie
[ { "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" } ]
OSConfig-Instanzinventar: Wenn Sie den Inhaltstyp auf
OS_INVENTORY
festlegen in der REST API oderos-inventory
in der gcloud CLI erstellen Sie ein BigQuery-Tabelle mit dem folgenden Schema.OS Inventory-Schema
[ { "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" } ]
Beziehung: Wenn Sie den Inhaltstyp
RELATIONSHIP
in der REST API oderrelationship
in der gcloud CLI festlegen, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.Beziehungsschema
[ { "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" } ]
Asset-Snapshot exportieren
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
Geben Sie folgende Werte an:
-
SCOPE
: Verwenden Sie einen der folgenden Werte:-
project=PROJECT_ID
, wobeiPROJECT_ID
der Wert ID des Projekts mit den Asset-Metadaten, die Sie exportieren möchten. -
folder=FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den zu exportierenden Asset-Metadaten ist.ID eines Google Cloud-Ordners ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID eines Google Cloud-Ordners zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Mit dem folgenden Befehl können Sie die ID eines Google Cloud-Ordners abrufen, der sich auf Organisationsebene befindet:
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)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, wobeiORGANIZATION_ID
die ID der Organisation ist, die die zu exportierenden Asset-Metadaten enthält.ID einer Google Cloud-Organisation ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID einer Google Cloud-Organisation zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: Optional. Die Projekt-ID, die das Der standardmäßige Cloud Asset Inventory-Dienst-Agent befindet sich darin, der Berechtigungen zum Verwalten Ihres BigQuery-Datasets und -Tabellen. Weitere Informationen zum Festlegen des Abrechnungsprojekts ASSET_TYPE_#
: Optional. Eine durch Kommas getrennte Liste von suchbaren Asset-Typen. RE2-kompatible reguläre Ausdrücke werden unterstützt. Wenn der reguläre Ausdruck nicht mit bei jedem unterstützten Asset-Typ, wird der FehlerINVALID_ARGUMENT
zurückgegeben. Wenn--asset-types
nicht angegeben ist, werden alle Asset-Typen zurückgegeben.CONTENT_TYPE
: Optional. Der Inhaltstyp der Metadaten, die Sie abrufen möchten. Wann?--content-type
nicht angegeben ist, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, wann der letzte Aufruf Assets aktualisiert wurden und zu welchen Projekten, Ordnern und Organisationen sie gehören.-
RELATIONSHIP_TYPE_#
: Optional. Nur verfügbar für Security Command Center Premium- und Enterprise-Stufe Abonnenten. Eine durch Kommas getrennte Liste von Arten der Asset-Beziehungen die Sie abrufen möchten. Sie müssenCONTENT_TYPE
festlegen aufRELATIONSHIP
dafür. -
SNAPSHOT_TIME
: Optional. Die Zeit, zu der Sie einen Snapshot Ihrer Assets erstellen möchten, im gcloud topic datetime format. Der Wert darf maximal 35 Tage in der Vergangenheit liegen. Wann?--snapshot-time
nicht angegeben ist, wird zum aktuellen Zeitpunkt ein Snapshot erstellt. -
BIGQUERY_PROJECT_ID
: Die ID des Projekts, in dem sich die BigQuery-Tabelle befindet, in die Sie exportieren möchten. -
DATASET_ID
: Die ID des BigQuery- Dataset. -
TABLE_NAME
: Die BigQuery-Tabelle, die Sie gerade bearbeiten in das die Metadaten exportiert werden sollen. Wenn sie nicht vorhanden ist, wird sie erstellt.
Das Flag --output-bigquery-force
überschreibt die Zieltabelle, falls sie vorhanden ist.
Eine vollständige Liste aller Optionen finden Sie in der Referenz zur gcloud CLI.
Beispiel
Führen Sie den folgenden Befehl aus, um die resource
-Metadaten wie am 30. Januar zu exportieren.
2024 im Projekt my-project
in die BigQuery-Tabelle
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
Beispielantwort
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
HTTP-Methode und URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
Header:
X-Goog-User-Project: BILLING_PROJECT_ID
JSON-Text anfordern:
{ "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 } } }
Geben Sie folgende Werte an:
-
SCOPE_PATH
: Verwenden Sie einen der folgenden Werte:Zulässige Werte:
-
projects/PROJECT_ID
, wobeiPROJECT_ID
der Wert ID des Projekts mit den Asset-Metadaten, die Sie exportieren möchten. -
projects/PROJECT_NUMBER
, wobeiPROJECT_NUMBER
ist die Nummer des Projekts mit den Asset-Metadaten, die Sie exportieren möchten.Google Cloud-Projektnummer ermitteln
Google Cloud Console
So finden Sie die Nummer eines Google Cloud-Projekts:
-
Rufen Sie in der Google Cloud Console die Seite Willkommen auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
-
Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.
Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht finden, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste mit dem Namen des Projekts.
gcloud-CLI
Sie können eine Google Cloud-Projektnummer mit dem folgenden Befehl abrufen:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den zu exportierenden Asset-Metadaten ist.ID eines Google Cloud-Ordners ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID eines Google Cloud-Ordners zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Mit dem folgenden Befehl können Sie die ID eines Google Cloud-Ordners abrufen, der sich auf Organisationsebene befindet:
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)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, wobeiORGANIZATION_ID
ist die ID der Organisation, die die Asset-Metadaten enthält, die Sie exportieren möchten.ID einer Google Cloud-Organisation ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID einer Google Cloud-Organisation zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: Die Projekt-ID, in der sich der standardmäßige Cloud Asset Inventory-Dienstagent befindet, der Berechtigungen zum Verwalten Ihrer BigQuery-Datasets und ‑Tabellen hat. Weitere Informationen zum Einrichten des Abrechnungsprojekts CONTENT_TYPE
: Die <ph type="x-smartling-placeholder"></ph> Inhaltstyp der Metadaten, die Sie abrufen möchten. WenncontentType
nicht angegeben ist, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, das Datum der letzten Aktualisierung der Assets und zu welchen Projekten, Ordnern und Organisationen sie gehören.-
RELATIONSHIP_TYPE_#
: Optional. Nur für Abonnenten der Premium- und Enterprise-Stufen von Security Command Center verfügbar. Eine durch Kommas getrennte Liste von Arten der Asset-Beziehungen die Sie abrufen möchten. Sie müssenCONTENT_TYPE
aufRELATIONSHIP
setzen, damit das funktioniert. -
SNAPSHOT_TIME
: Optional. Die Zeit, zu der Sie einen Snapshot Ihrer Assets erstellen möchten, im RFC 3339-Format. Der Wert darf maximal 35 Tage in der Vergangenheit liegen. IstreadTime
nicht angegeben, wird zum aktuellen Zeitpunkt ein Snapshot erstellt. -
BIGQUERY_PROJECT_ID
: Die ID des Projekts, in dem sich die BigQuery-Tabelle befindet, in die Sie exportieren möchten. -
DATASET_ID
: Die ID des BigQuery- Dataset. -
TABLE_NAME
: Die BigQuery-Tabelle, in die Sie Ihre Metadaten exportieren. Wenn sie nicht vorhanden ist, wird sie erstellt.
Das Schlüssel/Wert-Paar "force": true
überschreibt die Zieltabelle, sofern vorhanden.
Weitere Informationen zu allen Optionen finden Sie in der REST-Referenz.
Beispiele für Befehle
Führen Sie einen der folgenden Befehle aus, um Ihre resource
-Metadaten in der vorliegenden Form zu exportieren.
30. Januar 2024 im Projekt my-project
in die BigQuery-Tabelle
my-table
curl (Linux, macOS oder 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
Beispielantwort
{ "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
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie hier.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Asset Inventory finden Sie unter Cloud Asset Inventory-Clientbibliotheken
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Asset Inventory zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Asset-Snapshot exportieren, um Tabellen für jeden Asset-Typ zu trennen
Sie können Assets exportieren, um für jedes Asset separate BigQuery-Tabellen zu erstellen
Geben Sie das Flag --per-asset-type
in die gcloud CLI ein und
"separateTablesPerAssetType": true
in REST API-Anfragen.
In diesem Modus ist der Name jeder Tabelle TABLE_NAME
mit _
(Unterstrich) und dem Namen des Asset-Typs verkettet. Nicht alphanumerische Zeichen werden durch _
ersetzt.
Wenn der Export in eine Tabelle fehlschlägt, schlägt der gesamte Exportvorgang fehl und gibt den ersten Fehler zurück. Die Ergebnisse früherer erfolgreicher Exporte bleiben erhalten.
Die folgenden Typen werden in einen JSON-String verpackt, um ein Kompatibilitätsproblem zwischen Proto3 und BigQuery-Typen zu lösen.
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
Geben Sie folgende Werte an:
-
SCOPE
: Verwenden Sie einen der folgenden Werte:-
project=PROJECT_ID
, wobeiPROJECT_ID
der Wert ID des Projekts mit den Asset-Metadaten, die Sie exportieren möchten. -
folder=FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den zu exportierenden Asset-Metadaten ist.ID eines Google Cloud-Ordners ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID eines Google Cloud-Ordners zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Mit dem folgenden Befehl können Sie die ID eines Google Cloud-Ordners abrufen, der sich auf Organisationsebene befindet:
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)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, wobeiORGANIZATION_ID
die ID der Organisation ist, die die zu exportierenden Asset-Metadaten enthält.ID einer Google Cloud-Organisation ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID einer Google Cloud-Organisation zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: Optional. Die Projekt-ID, in der sich der Standard-Cloud Asset Inventory-Dienstagent befindet, der Berechtigungen zum Verwalten Ihrer BigQuery-Datasets und ‑Tabellen hat. Weitere Informationen zum Einrichten des Abrechnungsprojekts ASSET_TYPE_#
: Optional. Eine durch Kommas getrennte Liste von suchbaren Asset-Typen. RE2-kompatible reguläre Ausdrücke werden unterstützt. Wenn der reguläre Ausdruck nicht mit bei jedem unterstützten Asset-Typ, wird der FehlerINVALID_ARGUMENT
zurückgegeben. Wann?--asset-types
nicht angegeben ist, werden alle Asset-Typen zurückgegeben.CONTENT_TYPE
: Optional. Die Inhaltstyp der Metadaten, die Sie abrufen möchten. Wenn--content-type
nicht angegeben ist, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, das Datum der letzten Aktualisierung der Assets und zu welchen Projekten, Ordnern und Organisationen sie gehören.-
RELATIONSHIP_TYPE_#
: Optional. Nur für Abonnenten der Premium- und Enterprise-Stufen von Security Command Center verfügbar. Eine durch Kommas getrennte Liste der Asset-Beziehungstypen, die abgerufen werden sollen. Sie müssenCONTENT_TYPE
festlegen aufRELATIONSHIP
dafür. -
SNAPSHOT_TIME
: Optional. Die Zeit, zu der Sie einen Snapshot Ihrer Assets erstellen möchten, im gcloud topic datetime format. Der Wert darf maximal 35 Tage in der Vergangenheit liegen. Wann?--snapshot-time
nicht angegeben ist, wird zum aktuellen Zeitpunkt ein Snapshot erstellt. -
BIGQUERY_PROJECT_ID
: Die ID des Projekts, in dem sich die BigQuery-Tabelle befindet, in die Sie exportieren möchten. -
DATASET_ID
: Die ID des BigQuery- Dataset. -
TABLE_NAME
: Die BigQuery-Tabelle, die Sie gerade bearbeiten in das die Metadaten exportiert werden sollen. Wenn sie nicht vorhanden ist, wird sie erstellt.
Das Flag --output-bigquery-force
überschreibt die Zieltabelle, falls sie vorhanden ist.
Eine vollständige Liste aller Optionen finden Sie in der Referenz zur gcloud CLI.
Beispiel
Führen Sie den folgenden Befehl aus, um die resource
-Metadaten vom Stand vom 30. Januar 2024 im Projekt my-project
in mehrere BigQuery-Tabellen mit dem Präfix my-table
zu exportieren.
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
HTTP-Methode und URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
Header:
X-Goog-User-Project: BILLING_PROJECT_ID
JSON-Text anfordern:
{ "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 } } }
Geben Sie folgende Werte an:
-
SCOPE_PATH
: Verwenden Sie einen der folgenden Werte:Zulässige Werte:
-
projects/PROJECT_ID
, wobeiPROJECT_ID
der Wert ID des Projekts mit den Asset-Metadaten, die Sie exportieren möchten. -
projects/PROJECT_NUMBER
, wobeiPROJECT_NUMBER
ist die Nummer des Projekts mit den Asset-Metadaten, die Sie exportieren möchten.Google Cloud-Projektnummer ermitteln
Google Cloud Console
So finden Sie die Nummer eines Google Cloud-Projekts:
-
Rufen Sie in der Google Cloud Console die Seite Willkommen auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
-
Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.
Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht sehen, gehe zu Seite Ressourcen verwalten und die Liste nach dem Projektnamen.
gcloud-CLI
Sie können eine Google Cloud-Projektnummer mit dem folgenden Befehl abrufen:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den zu exportierenden Asset-Metadaten ist.ID eines Google Cloud-Ordners ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID eines Google Cloud-Ordners zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Mit dem folgenden Befehl können Sie die ID eines Google Cloud-Ordners abrufen, der sich auf Organisationsebene befindet:
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)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, wobeiORGANIZATION_ID
ist die ID der Organisation, die die Asset-Metadaten enthält, die Sie exportieren möchten.ID einer Google Cloud-Organisation ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID einer Google Cloud-Organisation zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: Die Projekt-ID, die vom Der standardmäßige Cloud Asset Inventory-Dienst-Agent befindet sich darin, der Berechtigungen zum Verwalten Ihres BigQuery-Datasets und -Tabellen. Weitere Informationen zum Einrichten des Abrechnungsprojekts CONTENT_TYPE
: Die <ph type="x-smartling-placeholder"></ph> Inhaltstyp der Metadaten, die Sie abrufen möchten. IstcontentType
nicht angegeben, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, wann der letzte Aufruf Assets aktualisiert wurden und zu welchen Projekten, Ordnern und Organisationen sie gehören.-
RELATIONSHIP_TYPE_#
: Optional. Nur für Abonnenten der Premium- und Enterprise-Stufen von Security Command Center verfügbar. Eine durch Kommas getrennte Liste von Arten der Asset-Beziehungen die Sie abrufen möchten. Sie müssenCONTENT_TYPE
festlegen aufRELATIONSHIP
dafür. -
SNAPSHOT_TIME
: Optional. Die Zeit, zu der Sie einen Snapshot Ihrer Assets erstellen möchten, im RFC 3339-Format. Der Wert darf maximal 35 Tage in der Vergangenheit liegen. WennreadTime
nicht angegeben ist, wird ein Snapshot zum aktuellen Zeitpunkt erstellt. -
BIGQUERY_PROJECT_ID
: Die ID des Projekts, in dem sich die BigQuery-Tabelle befindet, in die Sie exportieren möchten. -
DATASET_ID
: Die ID des BigQuery- Dataset. -
TABLE_NAME
: Die BigQuery-Tabelle, in die Sie Ihre Metadaten exportieren. Wenn sie nicht vorhanden ist, wird sie erstellt.
Das Schlüssel/Wert-Paar "force": true
überschreibt die Zieltabelle, falls sie vorhanden ist.
Beispiele für Befehle
Führen Sie einen der folgenden Befehle aus, um die resource
-Metadaten in ihrer Version vom 30. Januar 2024 aus dem Projekt my-project
in mehrere BigQuery-Tabellen mit dem Präfix my-table
zu exportieren.
curl (Linux, macOS oder 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
Asset-Snapshot in eine nach Datum partitionierte Tabelle mit Zeiteinheit exportieren
Sie können Assets in einem Projekt exportieren,
Nach Zeiteinheit nach Spalte partitionierte Tabellen.
Der exportierte Snapshot wird in einer BigQuery-Tabelle mit dem Namen TABLE_NAME
mit täglicher Granularität und zwei zusätzlichen Zeitstempelspalten, readTime
und requestTime
, gespeichert. Eine dieser Spalten wird mit dem Wert PARTITION_KEY
als Partitionsspalte angegeben.
Um Assets in einem Projekt in partitionierte Tabellen zu exportieren, müssen Sie einen der folgenden erstellen -Anfragen.
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
Geben Sie folgende Werte an:
-
SCOPE
: Verwenden Sie einen der folgenden Werte:-
project=PROJECT_ID
, wobeiPROJECT_ID
der Wert ID des Projekts mit den Asset-Metadaten, die Sie exportieren möchten. -
folder=FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den zu exportierenden Asset-Metadaten ist.ID eines Google Cloud-Ordners ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID eines Google Cloud-Ordners zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Mit dem folgenden Befehl können Sie die ID eines Google Cloud-Ordners abrufen, der sich auf Organisationsebene befindet:
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)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, wobeiORGANIZATION_ID
die ID der Organisation ist, die die zu exportierenden Asset-Metadaten enthält.ID einer Google Cloud-Organisation ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID einer Google Cloud-Organisation zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: Optional. Die Projekt-ID, in der sich der Standard-Cloud Asset Inventory-Dienstagent befindet, der Berechtigungen zum Verwalten Ihrer BigQuery-Datasets und ‑Tabellen hat. Weitere Informationen zum Festlegen des Abrechnungsprojekts ASSET_TYPE_#
: Optional. Eine durch Kommas getrennte Liste von suchbaren Asset-Typen. RE2-kompatible reguläre Ausdrücke werden unterstützt. Wenn der reguläre Ausdruck mit keinem unterstützten Asset-Typ übereinstimmt, wird einINVALID_ARGUMENT
-Fehler zurückgegeben. Wann?--asset-types
nicht angegeben ist, werden alle Asset-Typen zurückgegeben.CONTENT_TYPE
: Optional. Der Inhaltstyp der Metadaten, die Sie abrufen möchten. Wenn--content-type
nicht angegeben ist, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, das Datum der letzten Aktualisierung der Assets und zu welchen Projekten, Ordnern und Organisationen sie gehören.-
RELATIONSHIP_TYPE_#
: Optional. Nur verfügbar für Security Command Center Premium- und Enterprise-Stufe Abonnenten. Eine durch Kommas getrennte Liste von Arten der Asset-Beziehungen die Sie abrufen möchten. Sie müssenCONTENT_TYPE
festlegen aufRELATIONSHIP
dafür. -
SNAPSHOT_TIME
: Optional. Die Zeit, zu der Sie einen Snapshot Ihrer Assets erstellen möchten, im gcloud topic datetime format. Der Wert darf nicht mehr als 35 Tage in der Vergangenheit liegen. Wann?--snapshot-time
nicht angegeben ist, wird zum aktuellen Zeitpunkt ein Snapshot erstellt. -
BIGQUERY_PROJECT_ID
: Die ID des Projekts, in dem sich die BigQuery-Tabelle befindet, in die Sie exportieren möchten. -
DATASET_ID
: Die ID des BigQuery- Dataset. -
TABLE_NAME
: Die BigQuery-Tabelle, die Sie gerade bearbeiten in das die Metadaten exportiert werden sollen. Wenn sie nicht vorhanden ist, wird sie erstellt. -
PARTITION_KEY
: Die <ph type="x-smartling-placeholder"></ph> Spalte für den Partitionierungsschlüssel beim Export in nach BigQuery partitionierte Tabellen. Gültige Werte sindread-time
undrequest-time
.
Das Flag --output-bigquery-force
überschreibt Daten in der entsprechenden Partition in der Zieltabelle. Daten in verschiedenen Partitionen bleiben intakt.
Wenn --output-bigquery-force
nicht angegeben ist, werden exportierte Daten an den
der entsprechenden Partition an.
Der Exportvorgang schlägt fehl, wenn eine Schemaaktualisierung oder ein Versuch zum Anfügen von Daten fehlschlägt. Dazu zählt auch Folgendes: Die Zieltabelle ist bereits vorhanden und hat nicht das für den Export erwartete Schema.
Eine vollständige Liste aller Optionen finden Sie in der Referenz zur gcloud CLI.
Beispiel
Führen Sie den folgenden Befehl aus, um die resource
-Metadaten vom Stand vom 30. Januar 2024 aus dem Projekt my-project
in die BigQuery-Tabelle my-table
zu exportieren.
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
HTTP-Methode und URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
Header:
X-Goog-User-Project: BILLING_PROJECT_ID
JSON-Text anfordern:
{ "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, } } }
Geben Sie folgende Werte an:
-
SCOPE_PATH
: Verwenden Sie einen der folgenden Werte:Zulässige Werte:
-
projects/PROJECT_ID
, wobeiPROJECT_ID
der Wert ID des Projekts mit den Asset-Metadaten, die Sie exportieren möchten. -
projects/PROJECT_NUMBER
, wobeiPROJECT_NUMBER
ist die Nummer des Projekts mit den Asset-Metadaten, die Sie exportieren möchten.Google Cloud-Projektnummer ermitteln
Google Cloud Console
So finden Sie die Nummer eines Google Cloud-Projekts:
-
Rufen Sie in der Google Cloud Console die Seite Willkommen auf.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
-
Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.
Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht sehen, gehe zu Seite Ressourcen verwalten und die Liste nach dem Projektnamen.
gcloud-CLI
Sie können eine Google Cloud-Projektnummer mit dem folgenden Befehl abrufen:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, wobeiFOLDER_ID
die ID des Ordners mit den zu exportierenden Asset-Metadaten ist.ID eines Google Cloud-Ordners ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID eines Google Cloud-Ordners zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Suchen Sie nach dem Namen Ihres Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.
gcloud-CLI
Mit dem folgenden Befehl können Sie die ID eines Google Cloud-Ordners abrufen, der sich auf Organisationsebene befindet:
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)"
Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das
--format
-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Gehen Sie dazu wie folgt vor: Führen Sie den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, wobeiORGANIZATION_ID
ist die ID der Organisation, die die Asset-Metadaten enthält, die Sie exportieren möchten.ID einer Google Cloud-Organisation ermitteln
Google Cloud Console
Führen Sie die folgenden Schritte aus, um die ID einer Google Cloud-Organisation zu ermitteln:
-
Öffnen Sie die Google Cloud Console.
- Klicken Sie in der Menüleiste auf das Listenfeld Wechsler.
- Wählen Sie Ihre Organisation aus dem Listenfeld aus.
- Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.
gcloud-CLI
Sie können die ID einer Google Cloud-Organisation mit dem folgenden Befehl abrufen:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: Die Projekt-ID, die vom Der standardmäßige Cloud Asset Inventory-Dienst-Agent befindet sich darin, der Berechtigungen zum Verwalten Ihres BigQuery-Datasets und -Tabellen. Weitere Informationen zum Festlegen des Abrechnungsprojekts CONTENT_TYPE
: Der Inhaltstyp der Metadaten, die abgerufen werden sollen. IstcontentType
nicht angegeben, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, wann der letzte Aufruf Assets aktualisiert wurden und zu welchen Projekten, Ordnern und Organisationen sie gehören.-
RELATIONSHIP_TYPE_#
: Optional. Nur verfügbar für Security Command Center Premium- und Enterprise-Stufe Abonnenten. Eine durch Kommas getrennte Liste der Asset-Beziehungstypen, die abgerufen werden sollen. Sie müssenCONTENT_TYPE
aufRELATIONSHIP
setzen, damit das funktioniert. -
SNAPSHOT_TIME
: Optional. Der Zeitpunkt, zu dem Sie eine Übersicht Ihrer Assets erstellen, in RFC 3339-Format. Der Wert darf nicht mehr als 35 Tage in der Vergangenheit liegen. WennreadTime
nicht angegeben ist, wird ein Snapshot zum aktuellen Zeitpunkt erstellt. -
BIGQUERY_PROJECT_ID
: Die ID des Projekts, in dem sich die BigQuery-Tabelle befindet, in die Sie exportieren möchten. -
DATASET_ID
: Die ID des BigQuery- Dataset. -
TABLE_NAME
: Die BigQuery-Tabelle, die Sie gerade bearbeiten in das die Metadaten exportiert werden sollen. Wenn sie nicht vorhanden ist, wird sie erstellt. -
PARTITION_KEY
: Die <ph type="x-smartling-placeholder"></ph> Spalte für den Partitionierungsschlüssel beim Export in nach BigQuery partitionierte Tabellen. Gültige Werte sindREAD_TIME
undREQUEST_TIME
.
Das Schlüssel/Wert-Paar "force": true
überschreibt Daten in der entsprechenden Partition in
der Zieltabelle. Daten in verschiedenen Partitionen bleiben erhalten.
Wenn force
nicht festgelegt oder auf false
gesetzt ist, werden exportierte Daten an die entsprechende Partition angefügt.
Der Exportvorgang schlägt fehl, wenn eine Schemaaktualisierung oder ein Versuch zum Anfügen von Daten fehlschlägt. Dazu zählt auch Folgendes: Die Zieltabelle ist bereits vorhanden und hat nicht das für den Export erwartete Schema.
Beispiele für Befehle
Führen Sie einen der folgenden Befehle aus, um Ihre resource
-Metadaten in der vorliegenden Form zu exportieren.
30. Januar 2024 im Projekt my-project
in die BigQuery-Tabelle
my-table
curl (Linux, macOS oder 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
Status eines Exports prüfen
Exporte dauern einige Zeit. Sie können den Vorgang mithilfe der Vorgangs-ID abfragen, um zu prüfen, ob ein Export abgeschlossen ist.
Beachten Sie, dass möglicherweise jemand eine weitere Datei erstellt hat, Exportanfrage an dasselbe Ziel als ein anderer Vorgang. Neuer Export Anfragen an dasselbe Ziel können gestellt werden, nachdem eine vorherige Anfrage oder wenn mehr als 15 Minuten vergangen sind. Exportanfragen außerhalb von diese Bedingungen werden von Cloud Asset Inventory abgelehnt.
gcloud
So rufen Sie den Status Ihres Exports auf:
Rufen Sie die
OPERATION_PATH
mit der Vorgangs-ID aus der Antwort auf Ihre Exportanfrage ab. DieOPERATION_PATH
ist in der Antwort auf den Export zu sehen, die so formatiert ist:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
Führen Sie zum Prüfen des Exportstatus den folgenden Befehl mit der
OPERATION_PATH
aus:gcloud asset operations describe OPERATION_PATH
REST
So rufen Sie den Status Ihres Exports auf:
Rufen Sie die
OPERATION_PATH
mit der Vorgangs-ID aus der Antwort auf Ihre Exportanfrage ab. DieOPERATION_PATH
wird als Wert des Feldsname
in der Antwort auf den Export angezeigt, der so formatiert ist:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
Um den Status Ihres Exports zu prüfen, senden Sie die folgende Anfrage.
REST
HTTP-Methode und URL:
GET https://cloudasset.googleapis.com/v1/OPERATION_PATH
Befehlsbeispiele
curl (Linux, macOS oder 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
Asset-Snapshot in BigQuery ansehen
Console
Rufen Sie in der Google Cloud Console die Seite BigQuery Studio auf.
Um die Tabellen und Ansichten im Dataset anzuzeigen, öffnen Sie den Navigationsbereich. Wählen Sie im Abschnitt Ressourcen Ihr Projekt aus, um es zu maximieren. und wählen dann ein Dataset aus.
Wählen Sie in der Liste die gewünschte Tabelle aus.
Klicken Sie auf Details und notieren Sie den Wert in Zeilenanzahl. Unter Umständen benötigen Sie diesen Wert, um den Startpunkt für Ihre Ergebnisse mit der gcloud CLI oder der REST API festzulegen.
Um einen Beispieldatensatz anzuzeigen, wählen Sie Vorschau aus.
REST
Rufen Sie tabledata.list
auf, um die Daten in Ihrer Tabelle zu durchsuchen. Im
tableId
den Namen der Tabelle an.
Sie können die folgenden optionalen Parameter konfigurieren, um die Ausgabe zu steuern.
maxResults
ist die maximale Anzahl von zurückzugebenden Ergebnissen.selectedFields
ist eine durch Kommas getrennte Liste von Spalten, die zurückgegeben werden sollen. Wenn nichts angegeben ist, werden alle Spalten zurückgegeben.startIndex
ist der nullbasierte Index der Startzeile, die gelesen werden soll.
Die Werte werden zusammengefasst in einem JSON-Objekt zurückgegeben. Dieses Objekt muss dann wie in der Referenzdokumentation zu tabledata.list
beschrieben geparst werden.
Asset-Snapshot in BigQuery abfragen
Nachdem Sie den Snapshot in BigQuery exportiert haben, können Sie Abfragen mit den Asset-Metadaten ausführen.
BigQuery führt standardmäßig interaktive (On-Demand) Abfragejobs aus. Dies bedeutet, dass die Abfrage so bald wie möglich ausgeführt wird. Interaktive Abfragen werden hinsichtlich der Grenze gleichzeitiger Abfragen und des Tageslimits mit angerechnet.
Die Abfrageergebnisse werden entweder in einer temporären oder permanenten Tabelle gespeichert. Sie können Daten an eine vorhandene Tabelle anfügen oder Daten in einer bestehenden Tabelle überschreiben oder eine neue Tabelle erstellen, wenn nicht bereits eine mit demselben Namen vorhanden ist.
Führen Sie die folgenden Schritte aus, um eine interaktive Abfrage auszuführen, die die Ausgabe in eine temporäre Tabelle schreibt.
Console
Rufen Sie in der Google Cloud Console die Seite BigQuery Studio auf.
Wählen Sie
Neue Abfrage erstellen aus.Geben Sie im Textbereich des Abfrageeditors eine gültige BigQuery-SQL-Abfrage ein.
Optional: Um den Ort der Datenverarbeitung zu ändern, füllen Sie die folgenden Schritten.
Wählen Sie Mehr und dann Abfrageeinstellungen aus.
Wählen Sie unter Verarbeitungsstandort die Option Automatische Auswahl und dann wählen Sie den Speicherort Ihrer Daten aus.
Klicken Sie auf Speichern, um die Abfrageeinstellungen zu aktualisieren.
Wählen Sie Ausführen aus.
REST
Zum Starten eines neuen Jobs rufen Sie die Methode
jobs.insert
auf. Legen Sie in der Jobressource die folgenden Parameter fest.Legen Sie im Feld
configuration
das Feldquery
auf eine JobConfigurationQuery fest, die den BigQuery-Abfragejob beschreibt.Legen Sie im Feld
jobReference
das Feldlocation
dem Job entsprechend fest.
Rufen Sie
getQueryResults
auf, um die Ergebnisse abzufragen. Führen Sie die Abfrage so lange aus, bisjobComplete
gleichtrue
ist. In der Listeerrors
können Sie nach Fehlern und Warnungen suchen.
Weitere Beispiele für SQL-Abfrage
In diesem Abschnitt finden Sie Beispiel-SQL-Abfragen, mit denen Sie Ihre Asset-Metadaten nach dem Export nach BigQuery analysieren können. Weitere Informationen finden Sie unter Standard-SQL-Abfragesyntax.
Verfügbare Spalten direkt abfragen
Führen Sie die folgende Abfrage aus, um die Mengen der einzelnen Asset-Typen zu ermitteln:
SELECT asset_type, COUNT(*) AS asset_count
FROM `PROJECT_ID.DATASET_ID.TABLE_NAME`
GROUP BY asset_type
ORDER BY asset_count DESC
Mit wiederkehrenden Feldern arbeiten
IAM-Richtlinien (Identity and Access Management) finden, die Zugriff auf Gmail gewähren
Konten, führen Sie die folgende Abfrage aus. BigQuery verwendet UNNEST
, um
zusammenfassen
wiederkehrende Felder in eine Tabelle
die Sie direkt abfragen können:
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"
So finden Sie Organisationen, Ordner oder Projekte, die das Erstellen über eine öffentliche IP-Adresse haben, führen Sie die folgende Abfrage aus. Diese Abfrage ist nützlich, da das Zulassen öffentlicher IP-Adressen bei Cloud SQL-Instanzen Sicherheitslücken verursachen kann, es sei denn SSL oder ein Proxy ist konfiguriert:
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);
So finden Sie eine Organisation, einen Ordner oder ein Projekt im selben VPC Service Controls Dienstperimeter eines Projekt erstellen, führen Sie die folgende Abfrage aus:
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";
Mit JSON-Strings arbeiten
Führen Sie die folgende Abfrage aus, um offene Firewallregeln zu suchen: Weitere Informationen zu JSON-Funktionen in 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"
Von Tabellen für jeden Ressourcentyp trennen, können Sie offene Firewallregeln einfacher und schneller finden.
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";
Tabellen verschiedener Ressourcentypen zusammenführen
Führen Sie die folgende Abfrage aus, um Tabellen verschiedener Ressourcentypen zu verknüpfen. Das folgende Beispiel zeigt, wie Sie alle Subnetzwerke finden, denen keine VM angehängt ist.
Zuerst sucht die Abfrage alle Subnetzwerke. In dieser Liste werden dann die Subnetzwerke ausgewählt, deren selfLink
-Werte nicht vorhanden sind.
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
Wenn Sie Tabellen nach Ressourcentyp unterteilen, können Sie alle Subnetzwerke ermitteln, denen keine VM mit einer einfacheren und schnelleren Abfrage angehängt wurde.
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;
Anfällige Dataproc-Cluster aufgrund von CVE-2021-44228 finden
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";