Optimiser une grande table BigQuery pour le coĂ»t et la performance des requĂȘtes.
Partitionner la table par une colonne d'unité de temps fréquemment filtrée (par exemple, date de transaction). Regrouper la table par d'autres colonnes à forte cardinalité et fréquemment filtrées (par exemple, `customer_id`).
Pourquoi: Le partitionnement est le moyen le plus efficace de réduire les coûts et la latence en élaguant la quantité de données analysées. Le regroupement améliore encore les performances en triant les données au sein des partitions.
Référence
EmpĂȘcher la copie de donnĂ©es d'un ensemble de donnĂ©es BigQuery sensible vers une destination non autorisĂ©e (par exemple, un bucket GCS public), mĂȘme par un utilisateur ayant des identifiants valides.
Utiliser les ContrÎles de Service VPC pour créer un périmÚtre de service autour du projet contenant l'ensemble de données BigQuery.
Pourquoi: Les ContrĂŽles de Service VPC agissent comme un "pare-feu virtuel" pour les services GCP, empĂȘchant les donnĂ©es de quitter le pĂ©rimĂštre. C'est un contrĂŽle essentiel de dĂ©fense en profondeur contre l'exfiltration de donnĂ©es.
Référence
Restreindre l'accÚs aux colonnes sensibles (par exemple, PII) dans une table BigQuery aux groupes autorisés, tout en permettant aux autres d'interroger les colonnes restantes.
Utiliser Data Catalog pour créer une taxonomie et des tags de stratégie (policy tags). Appliquer les tags de stratégie aux colonnes sensibles et accorder le rÎle "Fine-Grained Reader" aux groupes autorisés.
Pourquoi: C'est la méthode native et évolutive pour la sécurité au niveau des colonnes dans BigQuery. Elle offre une gouvernance centralisée sans avoir besoin de créer et de gérer des vues distinctes.
Filtrer une table afin que les utilisateurs ne puissent voir que les lignes qui les concernent (par exemple, les directeurs des ventes ne voient que les données de leur propre région).
Créer une politique de sécurité au niveau des lignes (Row-Level Security Policy) sur la table qui filtre les lignes en fonction de `SESSION_USER()` .
Pourquoi: Fournit un filtrage dynamique basĂ© sur des prĂ©dicats au moment de la requĂȘte. C'est plus sĂ©curisĂ© et gĂ©rable que de crĂ©er une vue autorisĂ©e pour chaque utilisateur ou rĂŽle.
Supprimer automatiquement les données d'une table BigQuery aprÚs une période de rétention spécifiée pour se conformer aux réglementations (par exemple, supprimer les données de plus de 7 ans).
Pour les données de séries temporelles, définir une expiration de partition sur la table partitionnée par temps. Pour les autres tables, définir l'expiration par défaut de la table.
Pourquoi: C'est une fonctionnalité intégrée "définir et oublier" qui assure la conformité sans scripts de nettoyage manuels ni orchestration externe.
Une table BigQuery a été accidentellement modifiée ou supprimée.
Utiliser BigQuery Time Travel pour interroger la table telle qu'elle existait à un instant précis avant l'incident, en utilisant `FOR SYSTEM_TIME AS OF`.
Pourquoi: BigQuery maintient automatiquement un historique de 7 jours des donnĂ©es de table. Cela permet une rĂ©cupĂ©ration instantanĂ©e dans la fenĂȘtre de voyage dans le temps sans avoir besoin de restaurer Ă partir de sauvegardes.
Référence
Découvrir, gérer, sécuriser et surveiller les actifs de données (BigQuery, GCS) à l'échelle d'une organisation entiÚre.
Utiliser Dataplex.
Pourquoi: Dataplex agit comme un "data fabric" intelligent, offrant un panneau unifié pour la gouvernance des données, la qualité, la lignée, la découverte et la gestion du cycle de vie à travers des silos de données disparates.
Comprendre et visualiser comment les données circulent depuis les systÚmes sources, à travers les tùches de transformation, jusqu'aux tables de reporting finales.
Utiliser Dataplex Data Lineage.
Pourquoi: Capture automatiquement les informations de lignée à partir des journaux BigQuery, Data Fusion et Composer pour fournir une vue interactive basée sur des graphes des dépendances de données pour l'analyse d'impact et l'audit.
Assurer des performances et des coĂ»ts de requĂȘte prĂ©visibles pour les charges de travail critiques, en Ă©vitant la "contention de slots" des autres utilisateurs.
Acheter des éditions BigQuery (tarification basée sur la capacité). Créer des réservations pour dédier un pool de slots à des projets ou dossiers spécifiques.
Pourquoi: Passe d'un pool partagé et à la demande à une capacité de calcul dédiée, garantissant les ressources pour les tùches critiques et offrant une facturation prévisible.
Analyser tous les actifs de données dans BigQuery et Cloud Storage pour identifier et classer automatiquement les PII et autres données sensibles.
Configurer une tùche d'analyse de découverte Cloud Data Loss Prevention (DLP).
Pourquoi: Cloud DLP utilise des centaines de détecteurs prédéfinis pour trouver des données sensibles à grande échelle. Il peut s'intégrer à Data Catalog pour appliquer automatiquement des tags de stratégie pour la gouvernance.
Une application conteneurisée (sur GKE ou Cloud Run) doit s'authentifier en toute sécurité auprÚs de BigQuery sans gérer les clés de compte de service.
Utiliser Workload Identity.
Pourquoi: La meilleure pratique recommandée pour l'authentification de service à service. Elle mappe un compte de service Kubernetes à un compte de service IAM GCP, en utilisant des jetons de courte durée et automatiquement renouvelés.
Pour la conformité, générer un rapport de tous les utilisateurs ayant interrogé une table BigQuery sensible au cours des 90 derniers jours.
Activer et interroger les journaux d'audit d'accĂšs aux donnĂ©es de BigQuery, qui peuvent ĂȘtre acheminĂ©s vers un ensemble de donnĂ©es BigQuery pour analyse.
Pourquoi: Les journaux d'accĂšs aux donnĂ©es fournissent un enregistrement immuable de qui a accĂ©dĂ© Ă quelles donnĂ©es et quand. Ils sont essentiels pour les audits de sĂ©curitĂ© et de conformitĂ©, mais doivent ĂȘtre explicitement activĂ©s.
Identifier quels utilisateurs ou quelles requĂȘtes sont responsables des coĂ»ts Ă©levĂ©s de BigQuery.
Interroger la vue `INFORMATION_SCHEMA.JOBS`.
Pourquoi: Cette vue de mĂ©tadonnĂ©es contient des informations dĂ©taillĂ©es pour chaque exĂ©cution de requĂȘte, y compris l'utilisateur, les octets facturĂ©s et les slots consommĂ©s, permettant une attribution et une analyse prĂ©cises des coĂ»ts.