Vous pouvez interroger les composants de votre projet, dossier ou organisation à l'aide d'un dialecte compatible avec le SQL BigQuery.
Avant de commencer
Activez l'API Cloud Asset Inventory dans le projet à partir duquel vous exécutez les commandes Cloud Asset Inventory.
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 la section Autorisations.
Limites
Les noms de type d'élément ont remplacé
.
et/
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 pris en charge.
Les résultats de requête supérieurs à 10 Go ne sont pas acceptés.
Les résultats de requêtes de plus de 10 Mo ou de plus de 1 000 lignes sont toujours paginés.
Le traitement des requêtes doit prendre moins de six heures.
Les résultats des requêtes ne peuvent être exportés que vers un ensemble de données BigQuery dans l'emplacement multirégional
US
.
Tables que vous pouvez interroger
Vous pouvez interroger les tables suivantes:
Pour les types de contenu
RESOURCE
, les noms de table de l'ensemble de données correspondent au nom du type d'élément, en supposant que ce 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 table de l'ensemble de données correspondent aux noms de type 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 d'un élément
Console
Pour interroger les métadonnées des éléments 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 de la page Inventaire des éléments.
Accéder à "Requête sur un élément"
Si l'onglet Requête d'élément ne s'affiche pas, vous devez accéder au niveau Premium ou Enterprise de Security Command Center ou à Gemini Cloud Assist.
- Accédez 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-en une:
- Pour utiliser un exemple, cliquez sur une entrée dans 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 à rédiger 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 créer 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 requête de téléchargement échoue, car la taille du fichier dépasse cette limite, un message s'affiche avec des instructions pour exporter les résultats complets.
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
est l'ID du dossier contenant les composants que vous souhaitez interroger.Trouver l'ID d'un Google Cloud dossier
Console Google Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur
--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 niveau supérieur:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=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 Google Cloud organisation
Console Google Cloud
Pour trouver l'ID d'une Google Cloud organisation, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 Google Cloud organisation à l'aide de la commande suivante:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: requêteSELECT
SQL. -
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 avant expiration 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 tâches.
Consultez la documentation de référence de la gcloud CLI pour 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 la 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 tâche et indique si la tâche est terminée (done: true
). Si la tâche est terminée, l'objet queryResult
est renseigné avec les données appropriées, et les résultats sont listés par la suite.
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 incomplète
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 la tâche n'est pas terminée (done: false
). Ces types de réponses contiennent une référence de tâche et un objet queryResult
non renseigné:
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 plus tard, 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
est le numéro du projet contenant les éléments que vous souhaitez interroger.Trouver un Google Cloud numéro de projet
Console Google Cloud
Pour trouver un numéro de projet Google Cloud , procédez comme suit:
-
Accédez à la page Bienvenue dans la console Google Cloud.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
-
Sélectionnez votre organisation dans la 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 peuvent être affichées. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.
CLI gcloud
Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de 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 Google Cloud dossier
Console Google Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur
--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 niveau supérieur:
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 Google Cloud organisation
Console Google Cloud
Pour trouver l'ID d'une Google Cloud organisation, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 Google Cloud organisation à l'aide de la commande suivante:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: requêteSELECT
SQL. -
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 avant expiration 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 tâches. -
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. LorsquepageToken
n'est pas spécifié, la première page est renvoyée. Les pages suivantes peuvent être appelées en utilisant l'nextPageToken
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'éléments 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 la 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 tâche et indique si la tâche est terminée ("done": true
). Si la tâche est terminée, 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 réduire 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 réduire au maximum les réponses.
{ "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 incomplète
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 la tâche n'est pas terminée ("done": false
). Ces types de réponses contiennent une référence de tâche 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 plus tard, une fois le job terminé et les données disponibles.
Récupérer les résultats de requête plus tard
Pour récupérer ultérieurement 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
est l'ID du dossier contenant les composants que vous souhaitez interroger.Trouver l'ID d'un Google Cloud dossier
Console Google Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur
--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 niveau supérieur:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=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 Google Cloud organisation
Console Google Cloud
Pour trouver l'ID d'une Google Cloud organisation, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 Google Cloud organisation à l'aide de la commande suivante:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: valeur de référence de l'offre d'emploi renvoyée dans une réponse précédente.
Exemple
Exécutez la commande suivante pour obtenir les résultats d'une requête précédemment exécutée 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
est le numéro du projet contenant les éléments que vous souhaitez interroger.Trouver un Google Cloud numéro de projet
Console Google Cloud
Pour trouver un numéro de projet Google Cloud , procédez comme suit:
-
Accédez à la page Bienvenue dans la console Google Cloud.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
-
Sélectionnez votre organisation dans la 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 peuvent être affichées. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.
CLI gcloud
Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de 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 Google Cloud dossier
Console Google Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur
--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 niveau supérieur:
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 Google Cloud organisation
Console Google Cloud
Pour trouver l'ID d'une Google Cloud organisation, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 Google Cloud organisation à l'aide de la commande suivante:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: valeur de référence de l'offre d'emploi 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. LorsquepageToken
n'est pas spécifié, la première page est renvoyée. Les pages suivantes peuvent être appelées en utilisant l'nextPageToken
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 précédemment exécutée.
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 de la requête 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'effectuer 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
est l'ID du projet contenant les métadonnées des éléments que vous souhaitez exporter avec une requête SQL. -
folder=FOLDER_ID
, oùFOLDER_ID
est l'ID du dossier contenant les métadonnées des éléments que vous souhaitez exporter avec une requête SQL.Trouver l'ID d'un Google Cloud dossier
Console Google Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur
--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 niveau supérieur:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, oùORGANIZATION_ID
est l'ID de l'organisation qui possède les métadonnées des éléments que vous souhaitez exporter avec une requête SQL.Trouver l'ID d'une Google Cloud organisation
Console Google Cloud
Pour trouver l'ID d'une Google Cloud organisation, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 Google Cloud organisation à l'aide de la commande suivante:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: requêteSELECT
SQL. -
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 d'éléments 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
est l'ID du projet contenant les métadonnées des éléments que vous souhaitez exporter avec une requête SQL. -
projects/PROJECT_NUMBER
, oùPROJECT_NUMBER
est le numéro du projet contenant les métadonnées des éléments que vous souhaitez exporter avec une requête SQL.Trouver un Google Cloud numéro de projet
Console Google Cloud
Pour trouver un numéro de projet Google Cloud , procédez comme suit:
-
Accédez à la page Bienvenue dans la console Google Cloud.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
-
Sélectionnez votre organisation dans la 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 peuvent être affichées. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.
CLI gcloud
Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de la commande suivante:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, oùFOLDER_ID
est l'ID du dossier contenant les métadonnées des éléments que vous souhaitez exporter avec une requête SQL.Trouver l'ID d'un Google Cloud dossier
Console Google Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur
--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 niveau supérieur:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, oùORGANIZATION_ID
est l'ID de l'organisation qui possède les métadonnées des éléments que vous souhaitez exporter avec une requête SQL.Trouver l'ID d'une Google Cloud organisation
Console Google Cloud
Pour trouver l'ID d'une Google Cloud organisation, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la 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 Google Cloud organisation à 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 d'inventaire des ressources Cloud par défaut, qui dispose des autorisations nécessaires pour gérer vos ensembles de données et vos tables BigQuery. Découvrez comment définir le projet de facturation. -
SQL_SELECT_QUERY
: requêteSELECT
SQL. -
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 d'éléments 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 afin de vous aider à créer vos propres requêtes.
Instances de VM Compute Engine dans une région spécifique
Renvoyer également leur name
et la date de leur création.
SELECT
name,
resource.DATA.creationTimestamp
FROM
compute_googleapis_com_Instance
WHERE
resource.location LIKE '%asia%'
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 publics
Renvoyer é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%'