Présentation des journaux d'audit dans BigQuery

Les journaux sont des enregistrements textuels générés en réponse à des événements ou actions particuliers. Par exemple, BigQuery crée des entrées de journal pour des actions telles que la création ou la suppression d'une table, l'achat d'emplacements ou l'exécution d'un job de chargement.

Google Cloud écrit également des journaux, y compris des journaux d'audit qui fournissent des insights sur les problèmes opérationnels liés à votre utilisation des services Google Cloud. Pour en savoir plus sur la manière dont Google Cloud gère la journalisation, consultez la documentation de Cloud Logging et la présentation de Cloud Audit Logs.

Journaux d'audit et vues INFORMATION_SCHEMA

Vos projets Google Cloud ne contiennent des journaux d'audit que pour les ressources directement intégrées au projet Google Cloud. Les autres ressources Google Cloud, telles que les dossiers, les organisations et les comptes de facturation, contiennent leurs propres journaux d'audit.

Les journaux d'audit vous aident à répondre à des questions telles que "Qui a fait quoi, où et quand ?" pour vos ressources Google Cloud. Les journaux d'audit sont la source d'information définitive sur l'activité du système par utilisateur et les modèles d'accès. Ils représentent votre principale source d'information pour les questions d'audit ou de sécurité.

Les vues INFORMATION_SCHEMA dans BigQuery sont une autre source d'insights que vous pouvez utiliser avec les métriques et les journaux. Ces vues contiennent des métadonnées sur les jobs, les ensembles de données, les tables et d'autres entités BigQuery. Par exemple, vous pouvez obtenir des métadonnées en temps réel sur les jobs BigQuery exécutés pendant une période donnée. Vous pouvez ensuite regrouper ou filtrer les résultats par projet, utilisateur, tables référencées et d'autres dimensions.

Les vues INFORMATION_SCHEMA vous fournissent des informations pour effectuer une analyse plus détaillée concernant vos charges de travail BigQuery, par exemple :

  • Quelle est l'utilisation moyenne des emplacements pour toutes les requêtes effectuées au cours des sept derniers jours sur un projet donné ?
  • Quels codes d'erreurs de flux continu ont été le plus vus au cours des 30 dernières minutes ?

Les journaux d'audit BigQuery contiennent des entrées de journal pour les appels d'API, mais ils ne décrivent pas l'impact des appels d'API. Un sous-ensemble d'appels d'API crée des jobs (tels que des requêtes et des chargements) dont les informations sont capturées par les vues INFORMATION_SCHEMA. Par exemple, vous pouvez trouver des informations sur l'heure et les emplacements utilisés par une requête spécifique dans les vues INFORMATION_SCHEMA, mais pas dans les journaux d'audit.

Pour obtenir des insights sur les performances de vos charges de travail BigQuery en particulier, consultez les sections Métadonnées de jobs, Métadonnées de streaming et Métadonnées de réservation.

Pour en savoir plus sur les types de journaux d'audit écrits par les services Google Cloud, consultez la section Types de journaux d'audit.

Format des journaux d'audit

Les services Google Cloud écrivent des journaux d'audit au format JSON structuré. Le type de données de base pour les entrées de journal Google Cloud est la structure LogEntry. Cette structure contient le nom du journal, la ressource ayant généré l'entrée de journal, le code temporel (UTC) et d'autres informations de base.

Les journaux incluent les détails de l'événement consigné dans un sous-champ appelé champ de charge utile. Pour les journaux d'audit, le champ de charge utile est nommé protoPayload. Le type de ce champ (protoPayload.@type) est défini sur type.googleapis.com/google.cloud.audit.AuditLog, ce qui indique que le champ utilise la structure de journal AuditLog.

Pour les opérations sur des ensembles de données, des tables et des jobs, BigQuery écrit des journaux d'audit dans deux formats différents, bien qu'ils partagent tous deux le type de base AuditLog.

L'e format le plus ancien inclut les champs et valeurs suivants :

  • La valeur pour le champ resource.type est bigquery_resource.
  • BigQuery écrit les détails concernant une opération dans le champ protoPayload.serviceData. La valeur de ce champ utilise la structure de journal AuditData.

Le format le plus récent inclut les champs et valeurs suivants :

  • La valeur pour le champ resource.type est bigquery_project ou bigquery_dataset. La ressource bigquery_project contient des entrées de journal concernant les jobs, tandis que la ressource bigquery_dataset contient des entrées de journal concernant le stockage.
  • BigQuery écrit les détails concernant une opération dans le champ protoPayload.metadata. La valeur de ce champ utilise la structure BigQueryAuditMetadata.

Nous vous recommandons de consulter les journaux dans un format plus récent. Pour en savoir plus, consultez le guide de migration des journaux d'audit.

Voici un exemple d'entrée de journal abrégé illustrant une opération ayant échoué :

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 5,
      "message": "Not found: Dataset myproject:mydataset was not found in location US"
    },
    "authenticationInfo": { ... },
    "requestMetadata":  { ... },
    "serviceName": "bigquery.googleapis.com",
    "methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
    "metadata": {
  },
  "resource": {
    "type": "bigquery_project",
    "labels": { .. },
  },
  "severity": "ERROR",
  "logName": "projects/myproject/logs/cloudaudit.googleapis.com%2Fdata_access",
  ...
}

Pour les opérations sur des réservations BigQuery, le champ protoPayload utilise la structure AuditLog, et les champs protoPayload.request et protoPayload.response contiennent plus d'informations. Vous pouvez voir les définitions des champs dans l'API BigQuery Reservation. Pour en savoir plus, consultez la page Surveiller les réservations BigQuery.

Pour en savoir plus sur le format des journaux d'audit, consultez la page Comprendre les journaux d'audit.

Limites

La taille des messages de journal est limitée à 100 000 octets. Pour en savoir plus, consultez la section Entrée de journal tronquée.

Visibilité et contrôle des accès

Les journaux d'audit BigQuery peuvent inclure des informations que les utilisateurs pourraient considérer comme sensibles, telles que du texte SQL, des définitions de schéma et des identifiants pour des ressources telles que des tables et des ensembles de données. Pour en savoir plus concernant la gestion des accès à ces informations, consultez la documentation sur le contrôle des accès de Cloud Logging.

Étapes suivantes