Esportare i metadati degli asset in BigQuery

Questo documento mostra come esportare uno snapshot delle risorse dalla tua organizzazione, cartella o progetto in una tabella BigQuery e poi eseguire l'analisi dei dati sul tuo inventario. BigQuery offre agli utenti un'esperienza simile a SQL per analizzare i dati e produrre informazioni significative senza l'utilizzo di script personalizzati.

Prima di iniziare

  1. Abilita l'API Cloud Asset Inventory nel progetto da cui esegui i comandi Cloud Asset Inventory.

    Abilita l'API Cloud Asset Inventory

  2. Assicurati che il tuo account disponga del ruolo corretto per chiamare l'API Cloud Asset Inventory. Per le singole autorizzazioni per ogni tipo di chiamata, vedi Autorizzazioni.

  3. Crea un set di dati BigQuery in cui esportare i dati, se non ne hai già uno.

Limitazioni

  • Quando esporti i dati delle tabelle BigQuery, non tutti i campi sono supportati da Cloud Asset Inventory.

  • I campi delle risorse che cambiano frequentemente, come numBytes, numLongTermBytes, numPhysicalBytes e numRows, potrebbero essere esportati con un valore null.

  • L'esportazione nelle tabelle BigQuery in cluster non è supportata.

  • Le tabelle BigQuery criptate con chiavi Cloud Key Management Service (Cloud KMS) personalizzate non sono supportate.

  • L'aggiunta dell'output dell'esportazione a una tabella esistente non è supportata, a meno che tu non esporti in una tabella partizionata. La tabella di destinazione deve essere vuota o devi sovrascriverla. Per sovrascriverlo, utilizza il flag --output-bigquery-force con gcloud CLI oppure utilizza "force": true con l'API REST.

  • I tipi di risorse Google Kubernetes Engine (GKE), ad eccezione di container.googleapis.com/Cluster e container.googleapis.com/NodePool, non sono supportati durante l'esportazione in tabelle separate per ogni tipo di risorsa.

  • Cloud Asset Inventory rifiuta le richieste di esportazione se una richiesta precedente alla stessa destinazione è stata avviata meno di 15 minuti fa ed è ancora in esecuzione. Tuttavia, se un'esportazione ha richiesto più di 15 minuti per essere completata, viene contrassegnata come completata e sono consentite nuove richieste di esportazione nella stessa destinazione.

  • Il tipo di contenuti ACCESS_POLICY può essere esportato solo a livello di organizzazione.

  • Se la tabella in cui stai esportando esiste già ed è in fase di esportazione, viene restituito un errore 400.

Carcassa

I nomi dei campi utilizzano convenzioni di maiuscole e minuscole diverse a seconda del tipo di contenuti richiesto e delle impostazioni di esportazione:

  • Per il tipo di contenuti RESOURCE quando esporti gli asset nelle tabelle per tipo di asset, non ci sono spazi tra le parole e la prima lettera di ogni nuova parola dopo la prima è maiuscola. Ad esempio,assetType.

  • Per tutti gli altri tipi di contenuti, il nome del campo è in minuscolo e gli spazi sono sostituiti dai trattini bassi. Ad esempio, asset_type.

Schemi BigQuery utilizzati per l'esportazione

Ogni tabella BigQuery è definita da uno schema che descrive i nomi delle colonne, i tipi di dati e altre informazioni. L'impostazione del tipo di contenuti per un'esportazione determina lo schema della tabella:

  • Risorsa o non specificato:quando imposti il tipo di contenuti su RESOURCE o non lo specifichi e imposti il flag per-asset-type su false o non lo utilizzi, crei una tabella BigQuery con lo schema seguente.

    Schema delle risorse

    [
      {
        "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"
      }
    ]

    La colonna resource.data contiene i metadati della risorsa rappresentati come stringa JSON.

    Quando imposti il tipo di contenuti su RESOURCE o non lo imposti e imposti il flag per-asset-type su true, crei tabelle separate per ogni tipo di asset. Lo schema di ogni tabella include colonne di tipo RECORD mappate ai campi nidificati nel campo Resource.data di quel tipo di asset (fino a 15 livelli nidificati supportati da BigQuery). Per tabelle di esempio, vedi export-assets-examples nella console Google Cloud .

  • Policy IAM:quando imposti il tipo di contenuti su IAM_POLICY nell'API REST o su iam-policy in gcloud CLI, crei una tabella BigQuery con lo schema seguente.

    Schema della policy IAM

    [
      {
        "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"
      }
    ]
  • Policy dell'organizzazione:quando imposti il tipo di contenuti su ORG_POLICY nell'API REST o su org-policy in gcloud CLI, crei una tabella BigQuery con lo schema seguente.

    Schema dei criteri dell'organizzazione

    [
      {
        "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"
      }
    ]
  • Policy VPCSC: quando imposti il tipo di contenuti su ACCESS_POLICY nell'API REST o su access-policy in gcloud CLI, crei una tabella BigQuery con lo schema seguente.

    Schema delle norme VPCSC

    [
      {
        "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"
      }
    ]
  • Inventario delle istanze OSConfig:quando imposti il tipo di contenuti su OS_INVENTORY nell'API REST o su os-inventory in gcloud CLI, crei una tabella BigQuery con lo schema seguente.

    Schema dell'inventario del sistema operativo

    [
      {
        "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"
                          },
                          {