Analyser des journaux d'audit à l'aide de BigQuery

Les journaux d'audit Cloud constitue une collection de journaux fournis par Google Cloud Platform, qui vous permet de disposer d'une trace de l'utilisation de vos projets Google Cloud. Il existe deux journaux d'audit pour BigQuery, : Activité administrative et Accès aux données. Tous deux sont activés automatiquement.

Les journaux d'audit sont disponibles via Google Cloud Logging, où ils peuvent être immédiatement filtrés pour fournir des informations sur des tâches ou des requêtes spécifiques, ou être exportés vers Google Cloud Pub/Sub, Google Cloud Storage ou BigQuery.

Utiliser Cloud Logging pour rechercher des requêtes volumineuses dans BigQuery

Vous pouvez utiliser Cloud Logging pour filtrer vos journaux d'audit afin de rechercher des tâches spécifiques correspondant à vos critères, qu'il s'agisse de requêtes coûteuses, de modes de défaillance spécifiques ou de schémas d'accès non intentionnels.

Les exemples suivants vous montrent comment filtrer les requêtes volumineuses et complexes.

  1. Accédez à la visionneuse de journaux dans la console GCP.

  2. Sur la page de Stackdriver Logging, cliquez sur Sélectionner pour Sélectionner une ressource, puis choisissez le projet approprié.

  3. Si nécessaire, sélectionnez BigQuery dans la liste des ressources à filtrer.

    Capture d'écran de la visionneuse de journaux – sélection de BigQuery

  4. Accédez à la section Advanced Filtering (Filtrage avancé) en cliquant sur la flèche du menu déroulant dans la zone Filter (Filtre), puis en sélectionnant Convert to advanced filter (Convertir en filtre avancé). Capture d'écran de la visionneuse de journaux – sélection d'un filtre avancé

  5. Entrez des instructions de filtre pour rechercher des schémas d'utilisation particuliers.

    1. Exemple 1 : Afficher les événements des utilisateurs ayant lancé des requêtes supérieures à 5 Go.

      Entrez les instructions de filtrage suivantes dans la zone Filter by (Filtrer par) et cliquez sur Submit filter (Envoyer le filtre).

      resource.type="bigquery_resource"
      protoPayload.serviceData.jobCompletedEvent.job.jobStatistics.totalBilledBytes > 5000000000
      

      Capture d'écran de la visionneuse de journaux – exemple de déclaration de filtre

    2. Exemple 2 : Afficher les événements liés à des requêtes complexes (nécessitant un niveau de facturation plus élevé).

      Entrez les instructions de filtrage suivantes dans la zone Filter by (Filtrer par) et cliquez sur Submit filter (Envoyer le filtre).

      resource.type="bigquery_resource"
      protoPayload.serviceData.jobCompletedEvent.job.jobStatistics.billingTier > 1
      

Interroger des journaux d'audit à l'aide de BigQuery

Pour analyser vos données d'utilisation agrégées à l'aide de SQL, transmettez vos journaux d'audit à BigQuery. Pour plus d'informations sur la configuration des exportations à partir de Cloud Logging, consultez la section Présentation des exportations de journaux dans la documentation Cloud Logging.

Configurer la transmission en continu des journaux d'audit vers BigQuery

  1. Accédez à la visionneuse de journaux dans la console GCP.

  2. Cliquez sur Créer une exportation.

  3. Dans la fenêtre Modifier l'exportation :

    1. Saisissez une valeur telle que bigquery_audit_logs dans le champ Sink Name (Nom du récepteur).
    2. Choisissez BigQuery dans le champ Sink Service (Service du récepteur).
    3. Sous Sink Destination (Destination du récepteur), choisissez l'ensemble de données dans lequel seront stockés vos journaux d'audit. Vous pouvez également choisir Créer un nouvel ensemble de données BigQuery pour créer un ensemble de données afin d'y stocker vos journaux d'audit.
    4. Cliquez sur Create Sink (Créer un récepteur).

      Créer une page de récepteur

  4. Lorsque vous y êtes invité, cliquez sur Fermer pour fermer la boîte de dialogue de confirmation.

  5. Accédez à l'ensemble de données dans l'interface utilisateur Web de BigQuery pour exécuter des requêtes sur vos journaux d'audit. Toute activité ultérieure effectuée dans BigQuery génère des tables de journalisation d'audit dans l'ensemble de données que vous avez choisi. Les tables sont nommées :

    • cloudaudit_googleapis_com_activity_[DATE]
    • cloudaudit_googleapis_com_data_access_[DATE]

    Où :

    • [DATE] est la date à laquelle l'activité a eu lieu.

    Tables de journal d'audit

Exemples de requêtes d'audit dans BigQuery

Les exemples de requêtes suivants montrent comment récupérer les données relatives au coût des requêtes et à l'utilisation des accès aux données.

Exemple 1 : Répartition horaire des coûts de requête

#standardSQL
SELECT
  TIMESTAMP_TRUNC(protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.endTime, HOUR) as time_window,
  FORMAT('%9.2f',5.0 * (SUM(protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.totalBilledBytes)/POWER(2, 40))) as Estimated_USD_Cost
FROM
  `AuditLogsDataSet.cloudaudit_googleapis_com_data_access_YYYYMMDD`
WHERE
  protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.eventName = 'query_job_completed'
GROUP BY time_window
ORDER BY time_window DESC

Voici un exemple de résultats pour cette requête.

Capture d'écran de l'interface utilisateur Web de BigQuery – exemple de résultats de requête par heure

Exemple 2 : Répartition des coûts par utilisateur

#standardSQL
WITH data as
(
  SELECT
    protopayload_auditlog.authenticationInfo.principalEmail as principalEmail,
    protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent as jobCompletedEvent
  FROM
    `AuditLogsDataSet.cloudaudit_googleapis_com_data_access_YYYYMMDD`
)
SELECT
  principalEmail,
  FORMAT('%9.2f',5.0 * (SUM(jobCompletedEvent.job.jobStatistics.totalBilledBytes)/POWER(2, 40))) as Estimated_USD_Cost
FROM
  data
WHERE
  jobCompletedEvent.eventName = 'query_job_completed'
GROUP BY principalEmail
ORDER BY Estimated_USD_Cost DESC

Pour plus d'informations sur les éléments pouvant être interrogés dans les journaux d'audit, consultez la section Données des journaux d'audit dans la documentation de Cloud Logging.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.