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.