Interroger des composants avec SQL

Vous pouvez interroger les composants de votre projet, dossier ou organisation à l'aide d'un dialecte compatible avec BigQuery SQL.

Avant de commencer

  1. Activez l'API Cloud Asset Inventory dans le projet à partir duquel vous exécutez les commandes inventaire des éléments cloud.

    Activer l'API Cloud Asset Inventory

  2. 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

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'asset, à condition que ce type d'asset existe. Par exemple, la table compute_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 des ressources pour tous les types de ressources, utilisez le nom de table STANDARD_METADATA. Cela inclut tous les champs, à l'exception de resource.DATA, qui est spécifique à chaque type de ressource.

Interroger les métadonnées d'un composant

Console

Pour interroger les métadonnées des composants de votre projet, dossier ou organisation, procédez comme suit :

  1. Dans la console Google Cloud , accédez à l'onglet Requête sur un élément de 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.

  2. Passez au projet, au dossier ou à l'organisation que vous souhaitez interroger.
  3. Cliquez sur l'onglet Requête sur un élément.
  4. 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 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.

  5. 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 :

      1. Accédez à la console Google Cloud .

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de liste.
      4. Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.

      gcloud CLI

      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)"

      TOP_LEVEL_FOLDER_NAME est une chaîne partielle ou complète correspondant au 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 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 :

      1. Accédez à la console Google Cloud .

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de liste.
      4. Cliquez sur l'onglet Tous. L'ID de l'organisation est indiqué à côté de son nom.

      gcloud CLI

      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 SQL SELECT.
  • 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.

Consultez la documentation de référence de gcloud CLI pour toutes les options.

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.

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 renseigné 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 assets 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 :

      1. Accédez à la page d'accueil de la console Google Cloud .

        Accéder à la page d'accueil

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. 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.

      gcloud CLI

      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 :

      1. Accédez à la console Google Cloud .

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de liste.
      4. Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.

      gcloud CLI

      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