Assetmetadaten nach BigQuery exportieren

In diesem Dokument erfahren Sie, wie Sie einen Asset-Snapshot aus Ihrer Organisation, Ihrem Ordner oder Ihrem Projekt in eine BigQuery exportieren und dann Datenanalysen für Ihr Inventar durchführen. BigQuery bietet eine SQL-ähnliche Erfahrung, in der Nutzer Daten analysieren und wertvolle Informationen gewinnen können, ohne benutzerdefinierte Skripts zu verwenden.

Hinweise

  1. Aktivieren Sie die Cloud Asset Inventory API in dem Projekt, in dem Sie Cloud Asset Inventory-Befehle ausführen.

    Cloud Asset Inventory API aktivieren

  2. Prüfen Sie, ob Ihr Konto die richtige Rolle zum Aufrufen der Cloud Asset Inventory API hat. Informationen zu den einzelnen Berechtigungen für die einzelnen Anruftypen finden Sie unter Berechtigungen.

  3. Erstellen Sie ein BigQuery-Dataset für den Export, falls Sie noch keines haben.

Beschränkungen

  • Beim Exportieren von BigQuery-Tabellendaten werden nicht alle Felder von Cloud Asset Inventory unterstützt.

  • Häufig geänderte Asset-Felder wie numBytes, numLongTermBytes, numPhysicalBytes und numRows werden möglicherweise mit dem Wert null exportiert.

  • Der Export in geclusterte BigQuery-Tabellen wird nicht unterstützt.

  • Das Anfügen einer Exportausgabe an eine vorhandene Tabelle wird nur unterstützt, wenn Sie in eine partitionierte Tabelle exportieren. Die Zieltabelle muss leer sein oder muss überschrieben werden. Verwenden Sie zum Überschreiben das Flag --output-bigquery-force mit der gcloud CLI oder "force": true mit der REST API.

  • Google Kubernetes Engine-Ressourcentypen (GKE), mit Ausnahme von container.googleapis.com/Cluster und container.googleapis.com/NodePool, werden beim Exportieren in separate Tabellen für jeden Ressourcentyp nicht unterstützt.

  • Cloud Asset Inventory lehnt Exportanfragen ab, wenn eine vorherige Anfrage für dasselbe Ziel vor weniger als 15 Minuten gestartet wurde und noch ausgeführt wird. Wenn ein Export jedoch länger als 15 Minuten gedauert hat, wird er als abgeschlossen markiert und neue Exportanfragen für dasselbe Ziel sind zulässig.

  • Der Inhaltstyp ACCESS_POLICY kann nur auf Organisationsebene exportiert werden.

  • Wenn die Tabelle, in die Sie exportieren, bereits vorhanden ist und gerade in sie exportiert wird, wird ein 400-Fehler zurückgegeben.

Gehäuse

Für Feldnamen werden je nach angefordertem Inhaltstyp und Exporteinstellungen unterschiedliche Schreibweisen verwendet:

  • Beim Export von Assets in Tabellen nach Asset-Typ für den Inhaltstyp RESOURCE gibt es keine Leerzeichen zwischen Wörtern und der erste Buchstabe jedes neuen Wortes nach dem ersten wird großgeschrieben. Zum Beispiel assetType.

  • Bei allen anderen Inhaltstypen ist der Feldname in Kleinbuchstaben geschrieben und Leerzeichen werden durch Unterstriche ersetzt. Beispiel: asset_type.

BigQuery-Schemas für den Export

Jede BigQuery-Tabelle wird durch ein Schema definiert, das unter anderem Informationen zu Spaltennamen und Datentypen enthält. Wenn Sie den Inhaltstyp für einen Export festlegen, wird das Schema für die Tabelle bestimmt:

  • Ressource oder nicht angegeben:Wenn Sie den Inhaltstyp auf RESOURCE setzen oder nicht angeben und das Flag per-asset-type auf false setzen oder nicht verwenden, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.

    Ressourcenschema

    [
      {
        "mode": "NULLABLE",
        "name": "name",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "asset_type",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "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": "resource",
        "type": "RECORD"
      },
      {
        "mode": "REPEATED",
        "name": "ancestors",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "update_time",
        "type": "TIMESTAMP"
      }
    ]

    Die Spalte resource.data enthält die Ressourcenmetadaten als JSON-String.

    Wenn Sie den Inhaltstyp auf RESOURCE festlegen oder nicht festlegen und das Flag per-asset-type auf true setzen, erstellen Sie separate Tabellen für jeden Asset-Typ. Das Schema jeder Tabelle enthält Spalten vom Typ RECORD, die den verschachtelten Feldern im Feld Resource.data dieses Asset-Typs zugeordnet sind (bis zu 15 Ebenen von BigQuery unterstützten verschachtelten Ebenen). Beispieltabellen finden Sie in der Google Cloud Console unter export-assets-examples.

  • IAM-Richtlinie:Wenn Sie den Inhaltstyp IAM_POLICY in der REST API oder iam-policy in der gcloud CLI festlegen, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.

    IAM-Richtlinienschema

    [
      {
        "mode": "NULLABLE",
        "name": "name",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "asset_type",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "name": "version",
            "type": "INTEGER"
          },
          {
            "fields": [
              {
                "mode": "NULLABLE",
                "name": "role",
                "type": "STRING"
              },
              {
                "mode": "REPEATED",
                "name": "members",
                "type": "STRING"
              },
              {
                "fields": [
                  {
                    "mode": "NULLABLE",
                    "name": "expression",
                    "type": "STRING"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "title",
                    "type": "STRING"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "description",
                    "type": "STRING"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "location",
                    "type": "STRING"
                  }
                ],
                "mode": "NULLABLE",
                "name": "condition",
                "type": "RECORD"
              }
            ],
            "mode": "REPEATED",
            "name": "bindings",
            "type": "RECORD"
          },
          {
            "fields": [
              {
                "mode": "NULLABLE",
                "name": "service",
                "type": "STRING"
              },
              {
                "fields": [
                  {
                    "mode": "NULLABLE",
                    "name": "log_type",
                    "type": "INTEGER"
                  },
                  {
                    "mode": "REPEATED",
                    "name": "exempted_members",
                    "type": "STRING"
                  }
                ],
                "mode": "REPEATED",
                "name": "audit_log_configs",
                "type": "RECORD"
              }
            ],
            "mode": "REPEATED",
            "name": "audit_configs",
            "type": "RECORD"
          },
          {
            "mode": "NULLABLE",
            "name": "etag",
            "type": "STRING"
          }
        ],
        "mode": "NULLABLE",
        "name": "iam_policy",
        "type": "RECORD"
      },
      {
        "mode": "REPEATED",
        "name": "ancestors",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "update_time",
        "type": "TIMESTAMP"
      }
    ]
  • Organisationsrichtlinie:Wenn Sie den Inhaltstyp auf ORG_POLICY in der REST API oder auf org-policy in der gcloud CLI festlegen, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.

    Organisationsrichtlinienschema

    [
      {
        "mode": "NULLABLE",
        "name": "name",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "asset_type",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "name": "version",
            "type": "INTEGER"
          },
          {
            "mode": "NULLABLE",
            "name": "constraint",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "etag",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "update_time",
            "type": "TIMESTAMP"
          },
          {
            "fields": [
              {
                "mode": "REPEATED",
                "name": "allowed_values",
                "type": "STRING"
              },
              {
                "mode": "REPEATED",
                "name": "denied_values",
                "type": "STRING"
              },
              {
                "mode": "NULLABLE",
                "name": "all_values",
                "type": "INTEGER"
              },
              {
                "mode": "NULLABLE",
                "name": "suggested_value",
                "type": "STRING"
              },
              {
                "mode": "NULLABLE",
                "name": "inherit_from_parent",
                "type": "BOOLEAN"
              }
            ],
            "mode": "NULLABLE",
            "name": "list_policy",
            "type": "RECORD"
          },
          {
            "fields": [
              {
                "mode": "NULLABLE",
                "name": "enforced",
                "type": "BOOLEAN"
              }
            ],
            "mode": "NULLABLE",
            "name": "boolean_policy",
            "type": "RECORD"
          },
          {
            "fields": [
              {
                "mode": "NULLABLE",
                "name": "_present",
                "type": "BOOLEAN"
              }
            ],
            "mode": "NULLABLE",
            "name": "restore_default",
            "type": "RECORD"
          }
        ],
        "mode": "REPEATED",
        "name": "org_policy",
        "type": "RECORD"
      },
      {
        "mode": "REPEATED",
        "name": "ancestors",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "update_time",
        "type": "TIMESTAMP"
      }
    ]
  • VPCSC-Richtlinie:Wenn Sie den Inhaltstyp auf ACCESS_POLICY in der REST API oder access-policy in der gcloud CLI festlegen, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.

    VPCSC-Richtlinienschema

    [
      {
        "mode": "NULLABLE",
        "name": "name",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "asset_type",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "name": "name",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "parent",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "title",
            "type": "STRING"
          },
          {
            "mode": "REPEATED",
            "name": "scopes",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "etag",
            "type": "STRING"
          }
        ],
        "mode": "NULLABLE",
        "name": "access_policy",
        "type": "RECORD"
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "name": "name",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "title",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "description",
            "type": "STRING"
          },
          {
            "fields": [
              {
                "fields": [
                  {
                    "mode": "REPEATED",
                    "name": "ip_subnetworks",
                    "type": "STRING"
                  },
                  {
                    "fields": [
                      {
                        "mode": "NULLABLE",
                        "name": "require_screenlock",
                        "type": "BOOLEAN"
                      },
                      {
                        "mode": "REPEATED",
                        "name": "allowed_encryption_statuses",
                        "type": "INTEGER"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "os_type",
                            "type": "INTEGER"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "minimum_version",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "require_verified_chrome_os",
                            "type": "BOOLEAN"
                          }
                        ],
                        "mode": "REPEATED",
                        "name": "os_constraints",
                        "type": "RECORD"
                      },
                      {
                        "mode": "REPEATED",
                        "name": "allowed_device_management_levels",
                        "type": "INTEGER"
                      },
                      {
                        "mode": "NULLABLE",
                        "name": "require_admin_approval",
                        "type": "BOOLEAN"
                      },
                      {
                        "mode": "NULLABLE",
                        "name": "require_corp_owned",
                        "type": "BOOLEAN"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "device_policy",
                    "type": "RECORD"
                  },
                  {
                    "mode": "REPEATED",
                    "name": "required_access_levels",
                    "type": "STRING"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "negate",
                    "type": "BOOLEAN"
                  },
                  {
                    "mode": "REPEATED",
                    "name": "members",
                    "type": "STRING"
                  },
                  {
                    "mode": "REPEATED",
                    "name": "regions",
                    "type": "STRING"
                  },
                  {
                    "fields": [
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "network",
                            "type": "STRING"
                          },
                          {
                            "mode": "REPEATED",
                            "name": "vpc_ip_subnetworks",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "vpc_subnetwork",
                        "type": "RECORD"
                      }
                    ],
                    "mode": "REPEATED",
                    "name": "vpc_network_sources",
                    "type": "RECORD"
                  }
                ],
                "mode": "REPEATED",
                "name": "conditions",
                "type": "RECORD"
              },
              {
                "mode": "NULLABLE",
                "name": "combining_function",
                "type": "INTEGER"
              }
            ],
            "mode": "NULLABLE",
            "name": "basic",
            "type": "RECORD"
          },
          {
            "fields": [
              {
                "fields": [
                  {
                    "mode": "NULLABLE",
                    "name": "expression",
                    "type": "STRING"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "title",
                    "type": "STRING"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "description",
                    "type": "STRING"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "location",
                    "type": "STRING"
                  }
                ],
                "mode": "NULLABLE",
                "name": "expr",
                "type": "RECORD"
              }
            ],
            "mode": "NULLABLE",
            "name": "custom",
            "type": "RECORD"
          }
        ],
        "mode": "NULLABLE",
        "name": "access_level",
        "type": "RECORD"
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "name": "name",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "title",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "description",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "perimeter_type",
            "type": "INTEGER"
          },
          {
            "fields": [
              {
                "mode": "REPEATED",
                "name": "resources",
                "type": "STRING"
              },
              {
                "mode": "REPEATED",
                "name": "access_levels",
                "type": "STRING"
              },
              {
                "mode": "REPEATED",
                "name": "restricted_services",
                "type": "STRING"
              },
              {
                "fields": [
                  {
                    "mode": "NULLABLE",
                    "name": "enable_restriction",
                    "type": "BOOLEAN"
                  },
                  {
                    "mode": "REPEATED",
                    "name": "allowed_services",
                    "type": "STRING"
                  }
                ],
                "mode": "NULLABLE",
                "name": "vpc_accessible_services",
                "type": "RECORD"
              },
              {
                "fields": [
                  {
                    "fields": [
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "access_level",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "resource",
                            "type": "STRING"
                          }
                        ],
                        "mode": "REPEATED",
                        "name": "sources",
                        "type": "RECORD"
                      },
                      {
                        "mode": "REPEATED",
                        "name": "identities",
                        "type": "STRING"
                      },
                      {
                        "mode": "NULLABLE",
                        "name": "identity_type",
                        "type": "INTEGER"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "ingress_from",
                    "type": "RECORD"
                  },
                  {
                    "fields": [
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "service_name",
                            "type": "STRING"
                          },
                          {
                            "fields": [
                              {
                                "mode": "NULLABLE",
                                "name": "method",
                                "type": "STRING"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "permission",
                                "type": "STRING"
                              }
                            ],
                            "mode": "REPEATED",
                            "name": "method_selectors",
                            "type": "RECORD"
                          }
                        ],
                        "mode": "REPEATED",
                        "name": "operations",
                        "type": "RECORD"
                      },
                      {
                        "mode": "REPEATED",
                        "name": "resources",
                        "type": "STRING"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "ingress_to",
                    "type": "RECORD"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "title",
                    "type": "STRING"
                  }
                ],
                "mode": "REPEATED",
                "name": "ingress_policies",
                "type": "RECORD"
              },
              {
                "fields": [
                  {
                    "fields": [
                      {
                        "mode": "REPEATED",
                        "name": "identities",
                        "type": "STRING"
                      },
                      {
                        "mode": "NULLABLE",
                        "name": "identity_type",
                        "type": "INTEGER"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "access_level",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "resource",
                            "type": "STRING"
                          }
                        ],
                        "mode": "REPEATED",
                        "name": "sources",
                        "type": "RECORD"
                      },
                      {
                        "mode": "NULLABLE",
                        "name": "source_restriction",
                        "type": "INTEGER"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "egress_from",
                    "type": "RECORD"
                  },
                  {
                    "fields": [
                      {
                        "mode": "REPEATED",
                        "name": "resources",
                        "type": "STRING"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "service_name",
                            "type": "STRING"
                          },
                          {
                            "fields": [
                              {
                                "mode": "NULLABLE",
                                "name": "method",
                                "type": "STRING"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "permission",
                                "type": "STRING"
                              }
                            ],
                            "mode": "REPEATED",
                            "name": "method_selectors",
                            "type": "RECORD"
                          }
                        ],
                        "mode": "REPEATED",
                        "name": "operations",
                        "type": "RECORD"
                      },
                      {
                        "mode": "REPEATED",
                        "name": "external_resources",
                        "type": "STRING"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "egress_to",
                    "type": "RECORD"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "title",
                    "type": "STRING"
                  }
                ],
                "mode": "REPEATED",
                "name": "egress_policies",
                "type": "RECORD"
              }
            ],
            "mode": "NULLABLE",
            "name": "status",
            "type": "RECORD"
          },
          {
            "fields": [
              {
                "mode": "REPEATED",
                "name": "resources",
                "type": "STRING"
              },
              {
                "mode": "REPEATED",
                "name": "access_levels",
                "type": "STRING"
              },
              {
                "mode": "REPEATED",
                "name": "restricted_services",
                "type": "STRING"
              },
              {
                "fields": [
                  {
                    "mode": "NULLABLE",
                    "name": "enable_restriction",
                    "type": "BOOLEAN"
                  },
                  {
                    "mode": "REPEATED",
                    "name": "allowed_services",
                    "type": "STRING"
                  }
                ],
                "mode": "NULLABLE",
                "name": "vpc_accessible_services",
                "type": "RECORD"
              },
              {
                "fields": [
                  {
                    "fields": [
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "access_level",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "resource",
                            "type": "STRING"
                          }
                        ],
                        "mode": "REPEATED",
                        "name": "sources",
                        "type": "RECORD"
                      },
                      {
                        "mode": "REPEATED",
                        "name": "identities",
                        "type": "STRING"
                      },
                      {
                        "mode": "NULLABLE",
                        "name": "identity_type",
                        "type": "INTEGER"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "ingress_from",
                    "type": "RECORD"
                  },
                  {
                    "fields": [
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "service_name",
                            "type": "STRING"
                          },
                          {
                            "fields": [
                              {
                                "mode": "NULLABLE",
                                "name": "method",
                                "type": "STRING"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "permission",
                                "type": "STRING"
                              }
                            ],
                            "mode": "REPEATED",
                            "name": "method_selectors",
                            "type": "RECORD"
                          }
                        ],
                        "mode": "REPEATED",
                        "name": "operations",
                        "type": "RECORD"
                      },
                      {
                        "mode": "REPEATED",
                        "name": "resources",
                        "type": "STRING"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "ingress_to",
                    "type": "RECORD"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "title",
                    "type": "STRING"
                  }
                ],
                "mode": "REPEATED",
                "name": "ingress_policies",
                "type": "RECORD"
              },
              {
                "fields": [
                  {
                    "fields": [
                      {
                        "mode": "REPEATED",
                        "name": "identities",
                        "type": "STRING"
                      },
                      {
                        "mode": "NULLABLE",
                        "name": "identity_type",
                        "type": "INTEGER"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "access_level",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "resource",
                            "type": "STRING"
                          }
                        ],
                        "mode": "REPEATED",
                        "name": "sources",
                        "type": "RECORD"
                      },
                      {
                        "mode": "NULLABLE",
                        "name": "source_restriction",
                        "type": "INTEGER"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "egress_from",
                    "type": "RECORD"
                  },
                  {
                    "fields": [
                      {
                        "mode": "REPEATED",
                        "name": "resources",
                        "type": "STRING"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "service_name",
                            "type": "STRING"
                          },
                          {
                            "fields": [
                              {
                                "mode": "NULLABLE",
                                "name": "method",
                                "type": "STRING"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "permission",
                                "type": "STRING"
                              }
                            ],
                            "mode": "REPEATED",
                            "name": "method_selectors",
                            "type": "RECORD"
                          }
                        ],
                        "mode": "REPEATED",
                        "name": "operations",
                        "type": "RECORD"
                      },
                      {
                        "mode": "REPEATED",
                        "name": "external_resources",
                        "type": "STRING"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "egress_to",
                    "type": "RECORD"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "title",
                    "type": "STRING"
                  }
                ],
                "mode": "REPEATED",
                "name": "egress_policies",
                "type": "RECORD"
              }
            ],
            "mode": "NULLABLE",
            "name": "spec",
            "type": "RECORD"
          },
          {
            "mode": "NULLABLE",
            "name": "use_explicit_dry_run_spec",
            "type": "BOOLEAN"
          },
          {
            "mode": "NULLABLE",
            "name": "etag",
            "type": "STRING"
          }
        ],
        "mode": "NULLABLE",
        "name": "service_perimeter",
        "type": "RECORD"
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "name": "name",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "authorization_type",
            "type": "INTEGER"
          },
          {
            "mode": "NULLABLE",
            "name": "asset_type",
            "type": "INTEGER"
          },
          {
            "mode": "NULLABLE",
            "name": "authorization_direction",
            "type": "INTEGER"
          },
          {
            "mode": "REPEATED",
            "name": "orgs",
            "type": "STRING"
          }
        ],
        "mode": "NULLABLE",
        "name": "authorized_orgs_desc",
        "type": "RECORD"
      },
      {
        "mode": "REPEATED",
        "name": "ancestors",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "update_time",
        "type": "TIMESTAMP"
      }
    ]
  • OSConfig-Instanzinventar:Wenn Sie den Inhaltstyp OS_INVENTORY in der REST API oder os-inventory in der gcloud CLI festlegen, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.

    OS Inventory-Schema

    [
      {
        "mode": "NULLABLE",
        "name": "name",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "asset_type",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "name": "name",
            "type": "STRING"
          },
          {
            "fields": [
              {
                "mode": "NULLABLE",
                "name": "hostname",
                "type": "STRING"
              },
              {
                "mode": "NULLABLE",
                "name": "long_name",
                "type": "STRING"
              },
              {
                "mode": "NULLABLE",
                "name": "short_name",
                "type": "STRING"
              },
              {
                "mode": "NULLABLE",
                "name": "version",
                "type": "STRING"
              },
              {
                "mode": "NULLABLE",
                "name": "architecture",
                "type": "STRING"
              },
              {
                "mode": "NULLABLE",
                "name": "kernel_version",
                "type": "STRING"
              },
              {
                "mode": "NULLABLE",
                "name": "kernel_release",
                "type": "STRING"
              },
              {
                "mode": "NULLABLE",
                "name": "osconfig_agent_version",
                "type": "STRING"
              }
            ],
            "mode": "NULLABLE",
            "name": "os_info",
            "type": "RECORD"
          },
          {
            "fields": [
              {
                "mode": "NULLABLE",
                "name": "key",
                "type": "STRING"
              },
              {
                "fields": [
                  {
                    "mode": "NULLABLE",
                    "name": "id",
                    "type": "STRING"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "origin_type",
                    "type": "INTEGER"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "create_time",
                    "type": "TIMESTAMP"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "update_time",
                    "type": "TIMESTAMP"
                  },
                  {
                    "mode": "NULLABLE",
                    "name": "type",
                    "type": "INTEGER"
                  },
                  {
                    "fields": [
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "yum_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "apt_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "zypper_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "googet_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "patch_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "category",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "severity",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "summary",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "zypper_patch",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "title",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "description",
                            "type": "STRING"
                          },
                          {
                            "fields": [
                              {
                                "mode": "NULLABLE",
                                "name": "id",
                                "type": "STRING"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "name",
                                "type": "STRING"
                              }
                            ],
                            "mode": "REPEATED",
                            "name": "categories",
                            "type": "RECORD"
                          },
                          {
                            "mode": "REPEATED",
                            "name": "kb_article_ids",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "support_url",
                            "type": "STRING"
                          },
                          {
                            "mode": "REPEATED",
                            "name": "more_info_urls",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "update_id",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "revision_number",
                            "type": "INTEGER"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "last_deployment_change_time",
                            "type": "TIMESTAMP"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "wua_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "caption",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "description",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "hot_fix_id",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "install_time",
                            "type": "TIMESTAMP"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "qfe_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "cos_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "display_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "display_version",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "publisher",
                            "type": "STRING"
                          },
                          {
                            "fields": [
                              {
                                "mode": "NULLABLE",
                                "name": "year",
                                "type": "INTEGER"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "month",
                                "type": "INTEGER"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "day",
                                "type": "INTEGER"
                              }
                            ],
                            "mode": "NULLABLE",
                            "name": "install_date",
                            "type": "RECORD"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "help_link",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "windows_application",
                        "type": "RECORD"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "installed_package",
                    "type": "RECORD"
                  },
                  {
                    "fields": [
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "yum_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "apt_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "zypper_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "googet_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "patch_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "category",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "severity",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "summary",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "zypper_patch",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "title",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "description",
                            "type": "STRING"
                          },
                          {
                            "fields": [
                              {
                                "mode": "NULLABLE",
                                "name": "id",
                                "type": "STRING"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "name",
                                "type": "STRING"
                              }
                            ],
                            "mode": "REPEATED",
                            "name": "categories",
                            "type": "RECORD"
                          },
                          {
                            "mode": "REPEATED",
                            "name": "kb_article_ids",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "support_url",
                            "type": "STRING"
                          },
                          {
                            "mode": "REPEATED",
                            "name": "more_info_urls",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "update_id",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "revision_number",
                            "type": "INTEGER"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "last_deployment_change_time",
                            "type": "TIMESTAMP"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "wua_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "caption",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "description",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "hot_fix_id",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "install_time",
                            "type": "TIMESTAMP"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "qfe_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "package_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "architecture",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "version",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "cos_package",
                        "type": "RECORD"
                      },
                      {
                        "fields": [
                          {
                            "mode": "NULLABLE",
                            "name": "display_name",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "display_version",
                            "type": "STRING"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "publisher",
                            "type": "STRING"
                          },
                          {
                            "fields": [
                              {
                                "mode": "NULLABLE",
                                "name": "year",
                                "type": "INTEGER"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "month",
                                "type": "INTEGER"
                              },
                              {
                                "mode": "NULLABLE",
                                "name": "day",
                                "type": "INTEGER"
                              }
                            ],
                            "mode": "NULLABLE",
                            "name": "install_date",
                            "type": "RECORD"
                          },
                          {
                            "mode": "NULLABLE",
                            "name": "help_link",
                            "type": "STRING"
                          }
                        ],
                        "mode": "NULLABLE",
                        "name": "windows_application",
                        "type": "RECORD"
                      }
                    ],
                    "mode": "NULLABLE",
                    "name": "available_package",
                    "type": "RECORD"
                  }
                ],
                "mode": "NULLABLE",
                "name": "value",
                "type": "RECORD"
              }
            ],
            "mode": "REPEATED",
            "name": "items",
            "type": "RECORD"
          },
          {
            "mode": "NULLABLE",
            "name": "update_time",
            "type": "TIMESTAMP"
          }
        ],
        "mode": "NULLABLE",
        "name": "os_inventory",
        "type": "RECORD"
      },
      {
        "mode": "REPEATED",
        "name": "ancestors",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "update_time",
        "type": "TIMESTAMP"
      }
    ]

  • Beziehung:Wenn Sie den Inhaltstyp RELATIONSHIP in der REST API oder relationship in der gcloud CLI festlegen, erstellen Sie eine BigQuery-Tabelle mit dem folgenden Schema.

    Beziehungsschema

    [
      {
        "mode": "NULLABLE",
        "name": "name",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "asset_type",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "name": "asset",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "asset_type",
            "type": "STRING"
          },
          {
            "mode": "REPEATED",
            "name": "ancestors",
            "type": "STRING"
          },
          {
            "mode": "NULLABLE",
            "name": "relationship_type",
            "type": "STRING"
          }
        ],
        "mode": "NULLABLE",
        "name": "related_asset",
        "type": "RECORD"
      },
      {
        "mode": "REPEATED",
        "name": "ancestors",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "update_time",
        "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, wobei PROJECT_ID die ID des Projekts ist, das die Asset-Metadaten enthält, die Sie exportieren möchten.
    • folder=FOLDER_ID, wobei FOLDER_ID die ID des Ordners mit den Asset-Metadaten ist, die Sie exportieren möchten.

      ID eines Google Cloud -Ordners finden

      Google Cloud Console

      So finden Sie die ID eines Google Cloud -Ordners:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag --format, um weitere Informationen zu den gefundenen Ordnern zu sehen.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, die die Asset-Metadaten enthält, die Sie exportieren möchten.

      ID einer Google Cloud Organisation finden

      Google Cloud Console

      So finden Sie die ID einer Google Cloud -Organisation:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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 des standardmäßigen Cloud Asset Inventory-Dienstkontos, das 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 ein INVALID_ARGUMENT-Fehler 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. Wenn --content-type nicht angegeben ist, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, der Zeitpunkt der letzten Aktualisierung der Assets und die Projekte, Ordner und Organisationen, zu denen sie gehören.
  • RELATIONSHIP_TYPE_#: Optional. Erfordert Zugriff auf die Security Command Center Premium- oder Enterprise-Stufe oder Gemini Cloud Assist. Eine durch Kommas getrennte Liste der Asset-Beziehungstypen, die Sie abrufen möchten. Sie müssen CONTENT_TYPE auf RELATIONSHIP setzen, damit das funktioniert.
  • SNAPSHOT_TIME: Optional. Die Zeit, zu der Sie einen Snapshot Ihrer Assets erstellen möchten, im Format für Datum und Uhrzeit in gcloud. Der Wert darf maximal 35 Tage in der Vergangenheit liegen. Wenn --snapshot-time 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 Daten exportieren möchten.
  • DATASET_ID: Die ID des BigQuery-Datasets.
  • TABLE_NAME: Die BigQuery-Tabelle, in die Sie Ihre Metadaten exportieren. Wenn sie nicht vorhanden ist, wird sie erstellt.

Das Flag --output-bigquery-force überschreibt die Zieltabelle, falls sie vorhanden ist.

Eine vollständige Liste der Optionen finden Sie in der Referenz zur gcloud CLI.

Beispiel

Führen Sie den folgenden Befehl aus, um Ihre resource-Metadaten, wie sie am 30. Januar 2024 im Projekt my-project waren, in die BigQuery-Tabelle 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 \
    --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 der Anfrage:

{
  "assetTypes": [
    "ASSET_TYPE_1",
    "ASSET_TYPE_2",
    "..."
  ],
  "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, wobei PROJECT_ID die ID des Projekts ist, das die Asset-Metadaten enthält, die Sie exportieren möchten.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER die Nummer des Projekts mit den Asset-Metadaten ist, die Sie exportieren möchten.

      Google Cloud Projektnummer finden

      Google Cloud Console

      So finden Sie die Projektnummer eines Google Cloud -Projekts:

      1. Rufen Sie in der Google Cloud Console die Seite Willkommen auf.

        Zur Begrüßungsseite

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach Ihrem 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, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste nach 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, wobei FOLDER_ID die ID des Ordners mit den Asset-Metadaten ist, die Sie exportieren möchten.

      ID eines Google Cloud -Ordners finden

      Google Cloud Console

      So finden Sie die ID eines Google Cloud -Ordners:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag --format, um weitere Informationen zu den gefundenen Ordnern zu sehen.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, die die Asset-Metadaten enthält, die Sie exportieren möchten.

      ID einer Google Cloud Organisation finden

      Google Cloud Console

      So finden Sie die ID einer Google Cloud -Organisation:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. 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 des standardmäßigen Cloud Asset Inventory-Dienstkontos, das Berechtigungen zum Verwalten Ihrer BigQuery-Datasets und -Tabellen hat. Weitere Informationen zum Festlegen des Abrechnungsprojekts

  • ASSET_TYPE_#: Optional. Ein Array 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 ein INVALID_ARGUMENT-Fehler zurückgegeben. Wenn assetTypes nicht angegeben ist, werden alle Asset-Typen zurückgegeben.
  • CONTENT_TYPE: Optional. Der Inhaltstyp der Metadaten, die Sie abrufen möchten. Wenn contentType nicht angegeben ist, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, der Zeitpunkt der letzten Aktualisierung der Assets und die Projekte, Ordner und Organisationen, zu denen sie gehören.
  • RELATIONSHIP_TYPE_#: Optional. Erfordert Zugriff auf die Security Command Center Premium- oder Enterprise-Stufe oder Gemini Cloud Assist. Eine durch Kommas getrennte Liste der Asset-Beziehungstypen, die Sie abrufen möchten. Dazu müssen Sie CONTENT_TYPE auf RELATIONSHIP setzen.
  • 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. Wenn readTime 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 Daten exportieren möchten.
  • DATASET_ID: Die ID des BigQuery-Datasets.
  • 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.

Alle Optionen finden Sie in der REST-Referenz.

Beispiele für Befehle

Führen Sie einen der folgenden Befehle aus, um die resource-Metadaten, wie sie am 30. Januar 2024 im Projekt my-project vorhanden waren, in die BigQuery-Tabelle 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
              }
            }
          }' \
     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 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.


// Sample asset-quickstart exports assets to given bigquery table.
package main

import (
	"context"
	"fmt"
	"log"
	"os"
	"strings"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
)

func main() {
	ctx := context.Background()
	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()
	datasetID := strings.Replace(fmt.Sprintf("%s-for-assets", projectID), "-", "_", -1)
	dataset := fmt.Sprintf("projects/%s/datasets/%s", projectID, datasetID)
	req := &assetpb.ExportAssetsRequest{
		Parent: fmt.Sprintf("projects/%s", projectID),
		OutputConfig: &assetpb.OutputConfig{
			Destination: &assetpb.OutputConfig_BigqueryDestination{
				BigqueryDestination: &assetpb.BigQueryDestination{
					Dataset: dataset,
					Table:   "test",
					Force:   true,
				},
			},
		},
	}
	op, err := client.ExportAssets(ctx, req)
	if err != nil {
		log.Fatalf("ExportAssets: %v", err)
	}
	resp, err := op.Wait(ctx)
	if err != nil {
		log.Fatalf("Wait: %v", err)
	}
	fmt.Print(resp)
}

Java

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.

// Imports the Google Cloud client library

import com.google.cloud.ServiceOptions;
import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.BigQueryDestination;
import com.google.cloud.asset.v1.ContentType;
import com.google.cloud.asset.v1.ExportAssetsRequest;
import com.google.cloud.asset.v1.ExportAssetsRequest.Builder;
import com.google.cloud.asset.v1.ExportAssetsResponse;
import com.google.cloud.asset.v1.OutputConfig;
import com.google.cloud.asset.v1.PartitionSpec;
import com.google.cloud.asset.v1.ProjectName;
import java.io.IOException;
import java.util.Arrays;
import java.util.concurrent.ExecutionException;

public class ExportAssetsBigqueryExample {

  // Use the default project Id.
  private static final String projectId = ServiceOptions.getDefaultProjectId();

  /** 
   * Export assets to BigQuery for a project.

   * @param bigqueryDataset which dataset the results will be exported to
   * @param bigqueryTable which table the results will be exported to
   * @param contentType determines the schema for the table
   * @param assetTypes a list of asset types to export. if empty, export all.
   * @param isPerType separate BigQuery tables for each resource type
   */
  public static void exportBigQuery(String bigqueryDataset, String bigqueryTable,
      ContentType contentType, String[] assetTypes, boolean isPerType)
      throws IOException, IllegalArgumentException, InterruptedException, ExecutionException {
    try (AssetServiceClient client = AssetServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      OutputConfig outputConfig;
      // Outputs to per-type BigQuery table.
      if (isPerType) {
        outputConfig =
            OutputConfig.newBuilder()
                .setBigqueryDestination(
                    BigQueryDestination.newBuilder()
                        .setDataset(bigqueryDataset)
                        .setTable(bigqueryTable)
                        .setForce(true)
                        .setSeparateTablesPerAssetType(true)
                        .setPartitionSpec(
                            PartitionSpec.newBuilder()
                                .setPartitionKey(PartitionSpec.PartitionKey.READ_TIME)
                                .build())
                        .build())
                .build();
      } else {
        outputConfig =
            OutputConfig.newBuilder()
                .setBigqueryDestination(
                    BigQueryDestination.newBuilder()
                        .setDataset(bigqueryDataset)
                        .setTable(bigqueryTable)
                        .setForce(true)
                        .build())
                .build();
      }
      Builder exportAssetsRequestBuilder = ExportAssetsRequest.newBuilder()
          .setParent(parent.toString()).setContentType(contentType).setOutputConfig(outputConfig);
      if (assetTypes.length > 0) {
        exportAssetsRequestBuilder.addAllAssetTypes(Arrays.asList(assetTypes));
      }
      ExportAssetsRequest request = exportAssetsRequestBuilder.build();
      ExportAssetsResponse response = client.exportAssetsAsync(request).get();
      System.out.println(response);
    }
  }
}

Node.js

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.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const dataSet = 'projects/project_id/datasets/dataset_id';
// const table = 'mytable';

const {AssetServiceClient} = require('@google-cloud/asset');
const client = new AssetServiceClient();

async function exportAssetsBigquery() {
  const projectId = await client.getProjectId();
  const projectResource = client.projectPath(projectId);
  const dataset = dataSet;

  const request = {
    parent: projectResource,
    outputConfig: {
      bigqueryDestination: {
        dataset: `projects/${projectId}/${dataset}`,
        table: table,
        force: true,
      },
    },
  };

  // Handle the operation using the promise pattern.
  const [operation] = await client.exportAssets(request);

  // Operation#promise starts polling for the completion of the operation.
  const [result] = await operation.promise();

  // Do things with with the response.
  console.log(result);
}

exportAssetsBigquery();

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.

from google.cloud import asset_v1

# TODO project_id = 'Your Google Cloud Project ID'
# TODO dataset = 'Your BigQuery dataset path'
# TODO table = 'Your BigQuery table name'
# TODO content_type ="Content type to export"

client = asset_v1.AssetServiceClient()
parent = f"projects/{project_id}"
output_config = asset_v1.OutputConfig()
output_config.bigquery_destination.dataset = dataset
output_config.bigquery_destination.table = table
output_config.bigquery_destination.force = True
response = client.export_assets(
    request={
        "parent": parent,
        "content_type": content_type,
        "output_config": output_config,
    }
)
print(response.result())

Asset-Snapshot in separate Tabellen für jeden Asset-Typ exportieren

Sie können Assets mit dem Flag --per-asset-type in der gcloud CLI und "separateTablesPerAssetType": true in REST API-Anfragen in separate BigQuery-Tabellen für jeden Asset-Typ exportieren. Der Inhaltstyp RELATIONSHIP kann nicht auf diese Weise exportiert werden.

In diesem Modus ist der Name jeder Tabelle TABLE_NAME, gefolgt von _ (Unterstrich) und dem Namen des Asset-Typs. 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 das 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 \
    --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, wobei PROJECT_ID die ID des Projekts ist, das die Asset-Metadaten enthält, die Sie exportieren möchten.
    • folder=FOLDER_ID, wobei