Cet article explique comment exporter un instantané d'éléments de votre organisation, de votre dossier ou de votre projet vers une table BigQuery, puis comment exécuter une analyse de données sur votre inventaire. BigQuery offre aux utilisateurs une expérience semblable à SQL pour analyser des données et produire des insights pertinents sans avoir à utiliser de scripts personnalisés.
Avant de commencer
Activez l'API Cloud Asset Inventory dans le projet à partir duquel vous exécutez les commandes inventaire des éléments cloud.
Assurez-vous que votre compte dispose du rôle approprié pour appeler l'API Cloud Asset Inventory. Pour connaître les autorisations individuelles pour chaque type d'appel, consultez Autorisations.
Créez un ensemble de données BigQuery pour l'exportation, si vous n'en avez pas déjà un.
Limites
Lorsque vous exportez des données de table BigQuery, inventaire des éléments cloud n'est pas compatible avec tous les champs.
Les champs d'éléments dont la valeur change fréquemment, comme
numBytes,numLongTermBytes,numPhysicalBytesetnumRows, peuvent être exportés avec une valeurnull.L'exportation vers des tables en cluster BigQuery n'est pas prise en charge.
L'ajout du résultat de l'exportation à une table existante n'est pas possible, sauf si vous exportez vers une table partitionnée. La table de destination doit être vide ou vous devez l'écraser. Pour l'écraser, utilisez l'option
--output-bigquery-forceavec gcloud CLI ou"force": trueavec l'API REST.Les types de ressources Google Kubernetes Engine (GKE), à l'exception de
container.googleapis.com/Clusteretcontainer.googleapis.com/NodePool, ne sont pas compatibles avec l'exportation vers des tables distinctes pour chaque type de ressource.Inventaire des éléments cloud rejette les demandes d'exportation si une demande précédente vers la même destination a commencé il y a moins de 15 minutes et est toujours en cours d'exécution. Toutefois, si une exportation a pris plus de 15 minutes, elle est marquée comme terminée et de nouvelles demandes d'exportation vers la même destination sont autorisées.
Le type de contenu
ACCESS_POLICYne peut être exporté qu'au niveau de l'organisation.Si la table vers laquelle vous exportez des données existe déjà et est en cours d'exportation, une erreur
400est renvoyée.
Boîtier
Les noms de champs utilisent différentes conventions de casse en fonction du type de contenu demandé et des paramètres d'exportation :
Pour le type de contenu
RESOURCE, lorsque vous exportez des composants vers des tableaux par type de composant, il n'y a pas d'espace entre les mots et la première lettre de chaque nouveau mot après le premier est en majuscule. Exemple :assetType.Pour tous les autres types de contenu, le nom du champ est en minuscules, et les espaces sont remplacés par des traits de soulignement. Par exemple,
asset_type.
Schémas BigQuery utilisés pour l'exportation
Chaque table BigQuery est définie par un schéma qui décrit les noms de colonne, les types de données et d'autres informations. La définition du type de contenu pour une exportation détermine le schéma de votre tableau :
Ressource ou non spécifié : lorsque vous définissez le type de contenu sur
RESOURCEou que vous ne le spécifiez pas, et que vous définissez l'indicateurper-asset-typesurfalseou que vous ne l'utilisez pas, vous créez une table BigQuery dont le schéma est le suivant.Schéma de ressources
[ { "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 colonne
resource.datacorrespond aux métadonnées de ressource représentées sous forme de chaîne JSON.Lorsque vous définissez le type de contenu sur
RESOURCEou que vous ne le définissez pas, et que vous définissez l'indicateurper-asset-typesurtrue, vous créez des tables distinctes pour chaque type d'élément. Le schéma de chaque table inclut des colonnes de type RECORD mises en correspondance avec les champs imbriqués du champResource.datade ce type d'élément (jusqu'au niveau imbriqué 15 compatible avec BigQuery). Pour obtenir des exemples de tables, consultez export-assets-examples dans la console Google Cloud .Stratégie IAM : lorsque vous définissez le type de contenu sur
IAM_POLICYdans l'API REST ou suriam-policydans gcloud CLI, vous créez une table BigQuery dont le schéma est le suivant.Schéma des règles 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":