Présentation des journaux d'audit dans BigQuery

Vous pouvez utiliser les journaux d'audit BigQuery pour surveiller les activités d'administration et d'accès aux données dans vos projets. Les journaux sont des fichiers texte créés automatiquement qui enregistrent qui a effectué des actions spécifiques, comme créer des tables ou exécuter des jobs, pour vous aider à maintenir la sécurité et à assurer la conformité. Ce document explique quand utiliser les journaux d'audit et fournit une présentation de leur format.

Cloud de Confiance by S3NS é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 Cloud de Confiance . Pour en savoir plus sur la manière dont Cloud de Confiance 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 Cloud de Confiance ne contiennent des journaux d'audit que pour les ressources directement intégrées au projet Cloud de Confiance . Les autres ressources Cloud de Confiance , 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 Cloud de Confiance . 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 Cloud de Confiance , consultez Types de journaux d'audit.

Format des journaux d'audit

Les servicesCloud de Confiance écrivent des journaux d'audit au format JSON structuré. Le type de données de base pour les entrées de journal Cloud de Confiance 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.

Carte de télémétrie

Le tableau suivant met en correspondance les fonctionnalités et les ressources BigQuery avec leur télémétrie de surveillance opérationnelle, les services et ressources d'API audités, et la documentation de référence sur les journaux d'audit. Vous pouvez l'utiliser pour trouver la télémétrie dont vous avez besoin pour résoudre les problèmes, optimiser les performances, contrôler les coûts, auditer l'utilisation et assurer la conformité.

Contrairement à de nombreux services Cloud de Confiance by S3NS qui écrivent des journaux de jobs opérationnels dans Cloud Logging, BigQuery écrit la télémétrie des jobs opérationnels dans des vues de schéma d'informations telles que INFORMATION_SCHEMA.JOBS. Ces vues capturent les étapes d'exécution des requêtes, l'utilisation des emplacements, les octets facturés et tous les jobs envoyés, y compris les jobs en cours et ceux ayant échoué.

BigQuery utilise Logging principalement pour émettre des journaux d'audit Cloud, qui enregistrent les activités d'administration et d'accès aux données. Lorsque vous auditez cette activité, vous pouvez déterminer qui a accédé aux ressources ou aux données, où et quand.

Les journaux d'audit ne sont pas émis pour chaque interruption ou échec de job. Par exemple, les jobs ayant échoué ne génèrent pas d'événements TableDataRead ou TableDataChange, et jobCompletedEvent n'enregistre que les jobs terminés avec succès. Pour en savoir plus sur les scénarios qui n'émettent pas de journaux d'audit, consultez Accès aux données dans la présentation des journaux d'audit BigQuery.

Dans le tableau suivant, un astérisque (*) dans un nom de vue INFORMATION_SCHEMA indique des variantes de vue spécifiques à un champ d'application, telles que _BY_PROJECT, _BY_USER, _BY_FOLDER et _BY_ORGANIZATION.

Fonctionnalité ou ressource Surveillance opérationnelle Cloud Audit Logs
Requêtes et jobs

Vues de schéma d'informations :

  • JOBS* : exécution des jobs en temps réel et historique, millisecondes d'emplacements, octets facturés, étapes d'exécution et tous les jobs envoyés, quel que soit l'état d'achèvement.
  • JOBS_TIMELINE* : état du job et utilisation des emplacements par intervalle de temps

Console :

Métriques : métriques Cloud Monitoring, telles que query/count, query/execution_times et job/num_in_flight.

Service d'API : bigquery.googleapis.com.

Ressources auditées : jobs dans JobService (ressource surveillée : bigquery_project).

Journaux d'audit : journaux d'accès aux données utilisant BigQueryAuditMetadata (événements JobInsertion et JobChange), enregistrant qui a envoyé ou annulé un job, l'état du job, le type d'instruction et les tables ou vues référencées. Consultez la présentation des journaux d'audit BigQuery.

Tables et vues

Vues de schéma d'informations :

  • TABLES : métadonnées de la table
  • VIEWS : afficher les définitions et les métadonnées
  • TABLE_STORAGE* : octets logiques et physiques, et facturation du stockage
  • PARTITIONS : nombre de lignes et taille de stockage de la partition
  • STREAMING_TIMELINE* : débit et erreurs d'insertion en flux continu
  • WRITE_API_TIMELINE* : débit et erreurs du flux d'écriture

Métriques : métriques Monitoring, telles que storage/stored_bytes et storage/table_count.

Services d'API : bigquery.googleapis.com et bigquerystorage.googleapis.com. Les journaux d'accès aux données pour l'API BigQuery Storage utilisent bigquery.googleapis.com, tandis que les journaux de refus de stratégie utilisent bigquerystorage.googleapis.com.

Ressources auditées : tables, vues et vues matérialisées dans TableService et TableDataService, et sessions de lecture et flux d'écriture de stockage dans BigQueryRead et BigQueryWrite (ressources surveillées : bigquery_dataset et bigquery_table).

Journaux d'audit : journaux d'accès aux données utilisant BigQueryAuditMetadata (événements TableDataRead et TableDataChange pour les lectures, les modifications, les champs référencés, les jobs sources et les lectures et écritures de flux de l'API BigQuery Storage), ainsi que les journaux d'activité d'administration, d'accès aux données et les journaux des événements système pour les événements TableCreation, TableChange et TableDeletion, y compris les modifications de stratégie IAM (Identity and Access Management) et les expirations de tables. Consultez la présentation des journaux d'audit BigQuery.

Ensembles de données

Vues de schéma d'informations :

  • SCHEMATA : métadonnées de l'ensemble de données et expiration par défaut
  • SCHEMATA_OPTIONS : options et étiquettes de l'ensemble de données
  • SCHEMATA_REPLICAS : état de la réplication interrégionale

Service d'API : bigquery.googleapis.com.

Ressources auditées : ensembles de données, stratégies IAM d'ensembles de données et LCA d'ensembles de données dans DatasetService et IAMPolicy (ressource surveillée : bigquery_dataset).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données utilisant BigQueryAuditMetadata (événements DatasetCreation, DatasetChange et DatasetDeletion), y compris les modifications apportées aux stratégies IAM de l'ensemble de données dans bindingDeltas et les mises à jour des LCA dans accessChanges. Consultez la présentation des journaux d'audit BigQuery.

Emplacements et réservations

Vues de schéma d'informations :

Console :

Métriques : métriques Monitoring, telles que slots/allocated et slots/total_available.

Service d'API : bigqueryreservation.googleapis.com pour l'API BigQuery Reservation.

Ressources auditées : réservations, engagements de capacité et attributions de réservations dans ReservationService (ressource surveillée : bigquery_project).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour la création, la modification, la suppression et l'affichage des réservations, des engagements de capacité et des attributions de projets ou de dossiers. Consultez Journaux d'audit de l'API BigQuery Reservation.

Sécurité au niveau des colonnes et masquage des données

Vues de schéma d'informations :

  • COLUMN_FIELD_PATHS : chemins d'accès aux colonnes imbriquées, tags avec stratégie et attributions de stratégies de données
  • COLUMNS : schémas de colonnes et types de données

Services d'API : datacatalog.googleapis.com pour les tags avec stratégie Data Catalog, bigquerydatapolicy.googleapis.com pour l'API BigQuery Data Policy et bigquery.googleapis.com.

Ressources auditées : taxonomies et tags avec stratégie dans PolicyTagManager, stratégies de données dans DataPolicyService et colonnes de table avec tag avec stratégie (ressources surveillées : audited_resource et bigquery_dataset).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour la gestion des taxonomies et des tags avec stratégie, et les modifications de stratégie IAM (Auditer les tags avec stratégie) ; gestion des stratégies de données et mises à jour des bénéficiaires (Journalisation d'audit des stratégies de données BigQuery) ; et journaux TableDataRead.fields pour les lectures sur les colonnes protégées (Présentation des journaux d'audit BigQuery).

Routines, y compris les fonctions définies par l'utilisateur et les procédures stockées

Vues de schéma d'informations :

  • ROUTINES : définitions et métadonnées de routine
  • ROUTINE_OPTIONS : options de routine
  • PARAMETERS : paramètres d'entrée et de sortie de la routine
  • JOBS* : jobs d'exécution de routine

Service d'API : bigquery.googleapis.com.

Ressources auditées : fonctions définies par l'utilisateur (UDF), fonctions de table et procédures stockées dans RoutineService (ressources surveillées : bigquery_dataset et bigquery_project).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données à l'aide de BigQueryAuditMetadata (événements RoutineCreation, RoutineChange et RoutineDeletion), ainsi que des événements de job enfant pour les exécutions de procédures stockées. Consultez la présentation des journaux d'audit BigQuery.

Connexions externes

Vues de schéma d'informations :

  • OBJECT_PRIVILEGES : droits de connexion
  • JOBS* : requêtes fédérées et jobs de fonction distante qui utilisent des connexions

Service d'API : bigqueryconnection.googleapis.com pour l'API BigQuery Connection.

Ressources auditées : connexions et stratégies IAM de connexion dans ConnectionService (ressource surveillée : audited_resource).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour la création de connexions, les mises à jour d'identifiants, la suppression, la liste et les modifications de stratégies IAM. Consultez Journaux d'audit de l'API BigQuery Connection.

BigQuery Sharing

Vues de schéma d'informations :

  • SHARED_DATASET_USAGE : utilisation par les abonnés des tables d'ensembles de données partagés
  • SCHEMATA_LINKS : ensembles de données associés et ressources partagées

Tableau de bord : tableau de bord des métriques d'utilisation du partage.

Service d'API : analyticshub.googleapis.com.

Ressources auditées : échanges de données, fiches, abonnements et stratégies IAM d'échange ou de fiche dans AnalyticsHubService (ressource surveillée : audited_resource).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour l'échange de données et la création, la mise à jour et la suppression de fiches, les modifications de règles IAM et les opérations des abonnés. Consultez Journalisation d'audit du partage.

Service de transfert de données BigQuery

Métriques et journaux :

Service d'API : bigquerydatatransfer.googleapis.com pour l'API Service de transfert de données BigQuery.

Ressources auditées : configurations de transfert, exécutions de transfert et sources de données dans DataTransferService (ressource surveillée : audited_resource).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour la création, la mise à jour, la suppression, la liste et le démarrage des configurations et des exécutions de transfert. Consultez Journaux d'audit du service de transfert de données BigQuery.

Catalogues et tables BigLake

Vues de schéma d'informations :

  • TABLES : métadonnées de la table
  • JOBS* : statistiques de requête de stockage d'objets externes (metadata_cache_statistics et object_storage_stats)

Services d'API : biglake.googleapis.com et bigquery.googleapis.com.

Ressources auditées : catalogues, bases de données, tables et partitions de métastore dans MetastoreService et HiveMetastoreService, et catalogues, espaces de noms et tables Apache Iceberg dans IcebergCatalogService (ressources surveillées : audited_resource et bigquery_dataset).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour les opérations de stratégie IAM de catalogue, de base de données, d'espace de noms, de table, de partition et de catalogue. Consultez Journaux d'audit BigLake.

Service de migration BigQuery

État et rapports :

  • État du job de traduction SQL par lot dans la console Cloud de Confiance
  • État du workflow et des tâches secondaires dans l'API BigQuery Migration
  • Rapports récapitulatifs de traduction dans Cloud Storage

Service d'API : bigquerymigration.googleapis.com pour l'API BigQuery Migration.

Ressources auditées : workflows de migration, sous-tâches de migration et requêtes de traduction SQL dans MigrationService et SqlTranslationService (ressource surveillée : audited_resource).

Journaux d'audit : journaux d'accès aux données pour la création, le démarrage, l'affichage, la consultation et la suppression des workflows et des sous-tâches de migration, ainsi que pour la traduction des requêtes SQL. Consultez Journaux d'audit du service de migration BigQuery.

Étapes suivantes