Vous pouvez interroger les composants de votre projet, dossier ou organisation à l'aide d'un dialecte compatible avec BigQuery SQL.
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.
Limites
Dans les noms de types d'éléments,
.
et/
sont remplacés par_
. Par exemple,compute.googleapis.com/Instance
devientcompute_googleapis_com_Instance
.La requête doit être une requête
SELECT
.L'ancien SQL de BigQuery n'est pas compatible.
Les résultats de requêtes de plus de 10 Go ne sont pas acceptés.
Les résultats de requête de plus de 10 Mo ou 1 000 lignes sont toujours paginés.
Le traitement des requêtes ne doit pas prendre plus de six heures.
Les résultats des requêtes ne peuvent être exportés que vers un ensemble de données BigQuery dans la multirégion
US
.
Tables que vous pouvez interroger
Vous pouvez interroger les tables suivantes :
Pour les types de contenu
RESOURCE
, les noms de table dans l'ensemble de données correspondent au nom du type d'élément, en supposant que le type d'élément existe. Par exemple, la tablecompute_googleapis_com_Instance
contient les métadonnées des instances Compute Engine.Pour les types de contenu autres que
RESOURCE
, les noms de tables de l'ensemble de données correspondent aux noms de types de contenu RPC/REST. Par exemple,ACCESS_POLICY
.Pour interroger les métadonnées standards de ressources pour tous les types de ressources, utilisez le nom de table
STANDARD_METADATA
. Cela inclut tous les champs, à l'exception deresource.DATA
, qui est spécifique à chaque type de ressource.
Interroger les métadonnées des composants
Console
Pour interroger les métadonnées des composants de votre projet, dossier ou organisation, procédez comme suit :
-
Dans la console Google Cloud , accédez à l'onglet Requête sur les éléments sur la page Inventaire des éléments.
Accéder à la requête sur un élément
Si l'onglet Requête d'élément ne s'affiche pas, vous devez avoir accès au niveau Premium ou Enterprise de Security Command Center ou à Gemini Cloud Assist.
- Passez au projet, au dossier ou à l'organisation que vous souhaitez interroger.
- Cliquez sur l'onglet Requête sur les composants.
-
Pour interroger les métadonnées d'un élément, utilisez un exemple de requête ou créez la vôtre :
- Pour utiliser un exemple, cliquez sur une entrée de l'onglet Bibliothèque de requêtes pour prévisualiser la requête. Cliquez sur Appliquer pour copier cet exemple dans la zone Modifier la requête, puis modifiez la requête ou cliquez sur Exécuter pour l'exécuter.
- Pour créer votre propre requête, saisissez le texte de la requête directement dans la zone Modifier la requête, puis cliquez sur Exécuter pour l'exécuter. Pour vous aider à écrire votre propre requête, vous pouvez cliquer sur une table dans le volet Sélectionner une table pour prévisualiser son schéma et son contenu. Pour savoir comment construire une requête, consultez la section Syntaxe des requêtes.
Les métadonnées des composants correspondant à la requête s'affichent dans l'onglet Résultat de la requête.
-
Facultatif : Pour télécharger les ensembles de résultats de la requête au format CSV, cliquez sur Exporter.
La taille maximale du fichier CSV est de 2 Mo. Si la demande de téléchargement échoue parce que la taille du fichier dépasse cette limite, un message s'affiche avec des instructions pour exporter tous les résultats.
gcloud
gcloud asset query \ --SCOPE \ --statement="SQL_SELECT_QUERY" \ --timeout="TIMEOUTs"
Indiquez les valeurs suivantes :
-
SCOPE
: utilisez l'une des valeurs suivantes :-
project=PROJECT_ID
, oùPROJECT_ID
est l'ID du projet contenant les composants que vous souhaitez interroger. -
folder=FOLDER_ID
, oùFOLDER_ID
correspond à l'ID du dossier contenant les composants que vous souhaitez interroger.Trouver l'ID d'un dossier Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante :
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)"
Où TOP_LEVEL_FOLDER_NAME est une correspondance de chaîne partielle ou complète pour le nom du dossier. Supprimez l'option
--format
pour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de premier niveau :
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, oùORGANIZATION_ID
correspond à l'ID de l'organisation qui possède les composants sur lesquels vous souhaitez effectuer des requêtes.Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: requête SQLSELECT
. -
TIMEOUT
: facultatif. Durée maximale, en secondes, pendant laquelle un client doit attendre la fin de la requête avant de continuer. Utilisez des délais d'attente pour exécuter votre requête de manière asynchrone et récupérer les résultats ultérieurement avec des références de job.
Consultez la documentation de référence de gcloud CLI pour connaître toutes les options.
Exemple
Exécutez la commande suivante pour obtenir les noms et les types d'assets des deux premières instances Compute Engine du projet my-project
.
gcloud asset query \ --project=my-project \ --statement=" SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2"
Réponse de tâche terminée
L'exemple suivant montre une réponse à l'exemple de requête précédent. La réponse contient une référence de job et vous indique si le job est terminé (done: true
). Si le job est terminé, l'objet queryResult
est rempli avec les données appropriées, et les résultats sont listés ensuite.
done: true jobReference: 0000000000000000000000000000000000000000000000000000000000000000 queryResult: nextPageToken: '' totalRows: '2' name: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1 assetType: compute.googleapis.com/Instance name: //compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/instance-2 assetType: compute.googleapis.com/Instance
Réponse de tâche inachevée
Si vous définissez un délai avant expiration dans votre requête, la requête est exécutée de manière asynchrone et vous recevez une réponse indiquant que le job n'est pas terminé (done: false
). Ces types de réponses contiennent une référence de job et un objet queryResult
non rempli :
done: false jobReference: 0000000000000000000000000000000000000000000000000000000000000000 queryResult: nextPageToken: '' totalRows: '0'
Vous pouvez utiliser la valeur jobReference
pour récupérer les résultats de la requête ultérieurement, une fois le job terminé et les données disponibles.
REST
Méthode HTTP et URL :
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Corps JSON de la requête :
{ "statement": "SQL_SELECT_QUERY", "timeout": "TIMEOUTs", "pageSize": "PAGE_SIZE", "pageToken": "PAGE_TOKEN" }
Indiquez les valeurs suivantes :
-
SCOPE_PATH
: utilisez l'une des valeurs suivantes :Les valeurs autorisées sont les suivantes :
-
projects/PROJECT_ID
, oùPROJECT_ID
est l'ID du projet contenant les composants que vous souhaitez interroger. -
projects/PROJECT_NUMBER
, oùPROJECT_NUMBER
correspond au numéro du projet contenant les composants que vous souhaitez interroger.Trouver le numéro d'un projet Google Cloud
ConsoleGoogle Cloud
Pour trouver le numéro d'un projet Google Cloud , procédez comme suit :
-
Accédez à la page d'accueil de la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
-
Sélectionnez votre organisation dans la zone de liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.
Jusqu'à 4 000 ressources sont affichées. Si vous ne voyez pas le projet que vous recherchez, accédez à la page Gérer les ressources et filtrez la liste à l'aide du nom de ce projet.
CLI gcloud
Vous pouvez récupérer un numéro de projet Google Cloud avec la commande suivante :
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, oùFOLDER_ID
correspond à l'ID du dossier contenant les composants que vous souhaitez interroger.Trouver l'ID d'un dossier Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante :
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)"
Où TOP_LEVEL_FOLDER_NAME est une correspondance de chaîne partielle ou complète pour le nom du dossier. Supprimez l'option
--format
pour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de premier niveau :
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, oùORGANIZATION_ID
est l'ID de l'organisation qui possède les composants que vous souhaitez interroger.Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: requête SQLSELECT
. -
TIMEOUT
: facultatif. Durée maximale, en secondes, pendant laquelle un client doit attendre la fin de la requête avant de continuer. Utilisez des délais d'attente pour exécuter votre requête de manière asynchrone et récupérer les résultats ultérieurement à l'aide de références de job. -
PAGE_SIZE
: facultatif. Nombre de résultats à renvoyer par page. Le maximum est de 500. Si la valeur est définie sur0
ou sur une valeur négative, une valeur par défaut appropriée est sélectionnée. UnnextPageToken
est renvoyé pour récupérer les résultats suivants. -
PAGE_TOKEN
: facultatif. Les réponses aux requêtes longues sont réparties sur plusieurs pages. SipageToken
n'est pas spécifié, la première page est renvoyée. Les pages suivantes peuvent être appelées en utilisant lenextPageToken
de la réponse précédente comme valeurpageToken
.
Consultez la documentation de référence REST pour toutes les options.
Exemples de commandes
Exécutez l'une des commandes suivantes pour obtenir les noms et les types d'assets des deux premières instances Compute Engine du projet my-project
.
curl (Linux, macOS ou Cloud Shell)
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } $body = @" { "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Réponse de tâche terminée
L'exemple suivant montre une réponse à l'exemple de requête précédent. La réponse contient une référence de job et vous indique si le job est terminé ("done": true
). Si le job est terminé, l'objet queryResult
est renseigné avec les données appropriées.
Les résultats de la requête sont divisés en rows
, un tableau contenant les métadonnées des éléments, et schema
, un objet qui décrit le schéma de chaque élément du tableau rows
. Cela permet de minimiser la duplication des noms et des types de champs dans les réponses volumineuses.
De même, f
et v
sont utilisés dans le tableau rows
au lieu de fields
et value
pour que les réponses soient aussi courtes que possible.
{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000", "done": true, "queryResult": { "rows": [ { "f": [ { "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1" }, { "v": "compute.googleapis.com/Instance" } ] }, { "f": [ { "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-2" }, { "v": "compute.googleapis.com/Instance" } ] } ], "schema": { "fields": [ { "field": "name", "type": "STRING", "mode": "NULLABLE", "fields": [] }, { "field": "assetType", "type": "STRING", "mode": "NULLABLE", "fields": [] } ] }, "nextPageToken": "", "totalRows": "1" } }
Réponse de tâche inachevée
Si vous définissez un délai avant expiration dans votre requête, la requête est exécutée de manière asynchrone et une réponse vous est envoyée pour indiquer que le job n'est pas terminé ("done": false
). Ces types de réponses contiennent une référence de job et un objet queryResult
non renseigné :
{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000", "done": false, "queryResult": { "rows": [], "schema": { "fields": [] }, "nextPageToken": "", "totalRows": "0" } }
Vous pouvez utiliser la valeur jobReference
pour récupérer les résultats de la requête ultérieurement, une fois le job terminé et les données disponibles.
Récupérer les résultats de requête ultérieurement
Pour récupérer une requête qui a pris du temps à être traitée, effectuez l'une des requêtes suivantes.
gcloud
gcloud asset query \ --SCOPE \ --job-reference="JOB_REFERENCE"
Indiquez les valeurs suivantes :
-
SCOPE
: utilisez l'une des valeurs suivantes :-
project=PROJECT_ID
, oùPROJECT_ID
est l'ID du projet contenant les composants que vous souhaitez interroger. -
folder=FOLDER_ID
, oùFOLDER_ID
correspond à l'ID du dossier contenant les composants que vous souhaitez interroger.Trouver l'ID d'un dossier Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante :
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)"
Où TOP_LEVEL_FOLDER_NAME est une correspondance de chaîne partielle ou complète pour le nom du dossier. Supprimez l'option
--format
pour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de premier niveau :
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, oùORGANIZATION_ID
correspond à l'ID de l'organisation qui possède les composants sur lesquels vous souhaitez effectuer des requêtes.Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: valeur de référence du job renvoyée dans une réponse précédente.
Exemple
Exécutez la commande suivante pour obtenir les résultats d'une requête exécutée précédemment dans le projet my-project
.
gcloud asset query \ --project=my-project \ --job-reference="0000000000000000000000000000000000000000000000000000000000000000"
REST
Méthode HTTP et URL :
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Corps JSON de la requête :
{ "jobReference": "JOB_REFERENCE", "pageToken": "PAGE_TOKEN" }
Indiquez les valeurs suivantes :
-
SCOPE_PATH
: utilisez l'une des valeurs suivantes :Les valeurs autorisées sont les suivantes :
-
projects/PROJECT_ID
, oùPROJECT_ID
est l'ID du projet contenant les composants que vous souhaitez interroger. -
projects/PROJECT_NUMBER
, oùPROJECT_NUMBER
correspond au numéro du projet contenant les composants sur lesquels vous souhaitez effectuer des requêtes.Trouver le numéro d'un projet Google Cloud
ConsoleGoogle Cloud
Pour trouver le numéro d'un projet Google Cloud , procédez comme suit :
-
Accédez à la page d'accueil de la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
-
Sélectionnez votre organisation dans la zone de liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.
Jusqu'à 4 000 ressources sont affichées. Si vous ne voyez pas le projet que vous recherchez, accédez à la page Gérer les ressources et filtrez la liste à l'aide du nom de ce projet.
CLI gcloud
Vous pouvez récupérer un numéro de projet Google Cloud avec la commande suivante :
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, oùFOLDER_ID
est l'ID du dossier contenant les composants que vous souhaitez interroger.Trouver l'ID d'un dossier Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante :
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)"
Où TOP_LEVEL_FOLDER_NAME est une correspondance de chaîne partielle ou complète pour le nom du dossier. Supprimez l'option
--format
pour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de premier niveau :
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, oùORGANIZATION_ID
est l'ID de l'organisation qui possède les composants que vous souhaitez interroger.Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: valeur de référence du job renvoyée dans une réponse précédente. -
PAGE_TOKEN
: facultatif. Les réponses aux requêtes longues sont réparties sur plusieurs pages. SipageToken
n'est pas spécifié, la première page est renvoyée. Les pages suivantes peuvent être appelées en utilisant lenextPageToken
de la réponse précédente comme valeurpageToken
.
Exemples de commandes
Exécutez l'une des commandes suivantes pour obtenir les résultats d'une requête exécutée précédemment.
curl (Linux, macOS ou Cloud Shell)
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } $body = @" { "jobReference": "0000000000000000000000000000000000000000000000000000000000000000" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Exporter les résultats de requête vers BigQuery
Les résultats des requêtes sont renvoyés sous forme de réponses de l'API Query Assets. Pour exporter les résultats vers votre propre table BigQuery, spécifiez une destination BigQuery dans la requête. Si vous n'en avez pas encore, vous devez créer un ensemble de données BigQuery avant d'envoyer ces requêtes.
gcloud
gcloud asset query \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --statement="SQL_SELECT_QUERY" \ --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \ --write-disposition="WRITE_METHOD"
Indiquez les valeurs suivantes :
-
SCOPE
: utilisez l'une des valeurs suivantes :-
project=PROJECT_ID
, oùPROJECT_ID
correspond à l'ID du projet contenant les métadonnées de l'élément que vous souhaitez exporter avec une requête SQL. -
folder=FOLDER_ID
, oùFOLDER_ID
correspond à l'ID du dossier contenant les métadonnées des composants que vous souhaitez exporter avec une requête SQL.Trouver l'ID d'un dossier Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante :
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)"
Où TOP_LEVEL_FOLDER_NAME est une correspondance de chaîne partielle ou complète pour le nom du dossier. Supprimez l'option
--format
pour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de premier niveau :
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, oùORGANIZATION_ID
correspond à l'ID de l'organisation qui possède les métadonnées de l'élément que vous souhaitez exporter avec une requête SQL.Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: requête SQLSELECT
. -
BIGQUERY_PROJECT_ID
: ID du projet dans lequel se trouve la table BigQuery que vous souhaitez exporter. -
DATASET_ID
: ID de l'ensemble de données BigQuery. -
TABLE_NAME
: table BigQuery vers laquelle vous exportez vos métadonnées. Si elle n'existe pas, elle est créée. -
WRITE_METHOD
: spécifie le comportement si la table ou la partition de destination BigQuery existe déjà. Les valeurs suivantes sont acceptées :-
write-empty
: valeur par défaut. Si la table existante contient des données, une erreur de doublon est renvoyée dans le résultat de la tâche. -
write-append
: ajoute des données à la table ou à la dernière partition. -
write-truncate
: écrase la table entière ou toutes les données des partitions.
-
Exemple
Exécutez la commande suivante pour obtenir les noms et les types de ressources des deux premières instances Compute Engine du projet my-project
, puis exportez les résultats vers la table BigQuery my-table
du projet my-project
, en écrasant l'intégralité de la table si elle existe déjà.
gcloud asset query \ --project=my-project \ --statement=" SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" \ --bigquery-table=projects/my-project/datasets/my-dataset/tables/my-table \ --write-disposition="write-truncate"
REST
Méthode HTTP et URL :
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
En-têtes :
X-Goog-User-Project: BILLING_PROJECT_ID
Corps JSON de la requête :
{ "statement": "SQL_SELECT_QUERY", "outputConfig": { "bigqueryDestination": { "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID", "table": "TABLE_NAME", "writeDisposition": "WRITE_METHOD" } }, "pageSize": "PAGE_SIZE" }
Indiquez les valeurs suivantes :
-
SCOPE_PATH
: utilisez l'une des valeurs suivantes :Les valeurs autorisées sont les suivantes :
-
projects/PROJECT_ID
, oùPROJECT_ID
correspond à l'ID du projet contenant les métadonnées de l'élément que vous souhaitez exporter avec une requête SQL. -
projects/PROJECT_NUMBER
, oùPROJECT_NUMBER
correspond au numéro du projet contenant les métadonnées des éléments que vous souhaitez exporter avec une requête SQL.Trouver le numéro d'un projet Google Cloud
ConsoleGoogle Cloud
Pour trouver le numéro d'un projet Google Cloud , procédez comme suit :
-
Accédez à la page d'accueil de la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
-
Sélectionnez votre organisation dans la zone de liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.
Jusqu'à 4 000 ressources sont affichées. Si vous ne voyez pas le projet que vous recherchez, accédez à la page Gérer les ressources et filtrez la liste à l'aide du nom de ce projet.
CLI gcloud
Vous pouvez récupérer un numéro de projet Google Cloud avec la commande suivante :
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, oùFOLDER_ID
correspond à l'ID du dossier contenant les métadonnées des composants que vous souhaitez exporter avec une requête SQL.Trouver l'ID d'un dossier Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante :
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)"
Où TOP_LEVEL_FOLDER_NAME est une correspondance de chaîne partielle ou complète pour le nom du dossier. Supprimez l'option
--format
pour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de premier niveau :
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, oùORGANIZATION_ID
correspond à l'ID de l'organisation qui possède les métadonnées de l'élément que vous souhaitez exporter avec une requête SQL.Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: ID du projet dans lequel se trouve l'agent de service inventaire des éléments cloud par défaut, qui dispose des autorisations nécessaires pour gérer vos ensembles de données et tables BigQuery. En savoir plus sur la définition du projet de facturation -
SQL_SELECT_QUERY
: requête SQLSELECT
. -
BIGQUERY_PROJECT_ID
: ID du projet dans lequel se trouve la table BigQuery que vous souhaitez exporter. -
DATASET_ID
: ID de l'ensemble de données BigQuery. -
TABLE_NAME
: table BigQuery vers laquelle vous exportez vos métadonnées. Si elle n'existe pas, elle est créée. -
WRITE_METHOD
: spécifie le comportement si la table ou la partition de destination BigQuery existe déjà. Les valeurs suivantes sont acceptées :-
WRITE_EMPTY
: valeur par défaut. Si la table existante contient des données, une erreur de doublon est renvoyée dans le résultat de la tâche. -
WRITE_APPEND
: ajoute des données à la table ou à la dernière partition. -
WRITE_TRUNCATE
: écrase la table entière ou toutes les données des partitions.
-
-
PAGE_SIZE
: facultatif. Nombre de résultats à renvoyer par page. Le maximum est de 500. Si la valeur est définie sur0
ou sur une valeur négative, une valeur par défaut appropriée est sélectionnée. UnnextPageToken
est renvoyé pour récupérer les résultats suivants.
Exemples de commandes
Exécutez l'une des commandes suivantes pour obtenir les noms et les types de ressources des deux premières instances Compute Engine du projet my-project
, puis exportez les résultats vers la table BigQuery my-table
du projet my-project
, en écrasant l'intégralité de la table si elle existe déjà.
curl (Linux, macOS ou 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 '{ "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "writeDisposition": "WRITE_TRUNCATE" } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "writeDisposition": "WRITE_TRUNCATE" } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Autres exemples de requêtes SQL
Les exemples de code suivants présentent des requêtes SQL spécifiques que vous pouvez utiliser pour rechercher des composants. Ils vous aideront à créer vos propres requêtes.
Instances de VM Compute Engine dans une région spécifique
De plus, renvoie leur name
et la date de création.
SELECT
name,
resource.DATA.creationTimestamp
FROM
compute_googleapis_com_Instance
WHERE
resource.location LIKE '%asia%'
Détails d'une application exécutée dans un pod Kubernetes
Renvoie l'espace de noms, la version et le code temporel de l'application ingress-nginx
. En savoir plus sur les fonctions JSON utilisées dans BigQuery
SELECT
name AS pod_name,
JSON_EXTRACT_SCALAR(resource.data.metadata, '$.namespace') AS namespace,
resource.data.metadata.creationTimestamp AS creation_time,
JSON_EXTRACT_SCALAR(resource.data.metadata.labels, "$['app.kubernetes.io/name']") AS app_label,
resource.data.metadata.labels['app.kubernetes.io/version'] AS version
FROM
k8s_io_Pod
WHERE
JSON_EXTRACT_SCALAR(resource.data.metadata, '$.namespace') = "default"
AND JSON_EXTRACT_SCALAR(resource.data.metadata.labels, "$['app.kubernetes.io/name']") = "ingress-nginx"
Nombre d'ensembles de données BigQuery dans chaque projet
SELECT
ancestor AS project,
COUNT(*)
FROM
bigquery_googleapis_com_Dataset
CROSS JOIN
UNNEST (ancestors) AS ancestor
WHERE
ancestor LIKE '%project%'
GROUP BY
ancestor
ORDER BY
2 DESC
Nombre d'instances de VM Compute Engine dans chaque région
SELECT
resource.location,
COUNT(*)
FROM
compute_googleapis_com_Instance
GROUP BY
resource.location
Nom et assetType de toutes les ressources d'une région
SELECT
name,
assetType
FROM
STANDARD_METADATA
WHERE
resource.location LIKE '%asia%'
Buckets Cloud Storage accessibles publiquement
Rendez-lui également son name
.
SELECT
name
FROM
IAM_POLICY
CROSS JOIN
UNNEST(iamPolicy.bindings) AS binding
WHERE
('allUsers' IN UNNEST(binding.members)
OR 'allAuthenticatedUsers' IN UNNEST(binding.members))
AND assetType = 'storage.googleapis.com/Bucket'
Sous-réseaux sans instances de VM associées
SELECT
subnetwork_table.name
FROM
compute_googleapis_com_Subnetwork AS subnetwork_table
LEFT JOIN (
SELECT
interface.subnetwork AS subnetwork
FROM
compute_googleapis_com_Instance
CROSS JOIN
UNNEST(resource.DATA.networkInterfaces) AS interface) AS instance_table
ON
SUBSTR(subnetwork_table.name, 25) = SUBSTR(instance_table.subnetwork,38)
WHERE
instance_table.subnetwork IS NULL
AND NOT subnetwork_table.name LIKE '%default%'