
Mesures de Sécurité de BigQuery : Chiffrement, Contrôle d’Accès et Conformité

Google BigQuery offre de puissantes capacités d’entreposage de données, mais un grand pouvoir implique une grande responsabilité. Sécuriser votre environnement BigQuery est crucial pour protéger les informations sensibles et maintenir la conformité avec les réglementations sur les données. Cet article explorera divers aspects de la sécurité de BigQuery, des contrôles d’accès réseau aux permissions granulaire et à la surveillance.
Comprendre les Contrôles de Service VPC
Les Contrôles de Service VPC agissent comme un pare-feu virtuel pour vos ressources BigQuery. Vous pouvez protéger vos données dans BigQuery en choisissant quels réseaux et adresses IP ont l’autorisation d’y accéder. Cela ajoute une couche de protection supplémentaire contre les tentatives d’accès non autorisées.
Pour configurer les Contrôles de Service VPC pour BigQuery, vous devrez créer une politique de niveau d’accès dans votre Google Cloud Console. Cette politique définit les plages IP autorisées à interagir avec vos ressources BigQuery. Une fois la politique en place, vous pouvez créer un périmètre de service qui inclut BigQuery comme service restreint.
Par exemple, vous pourriez créer une politique qui n’autorise que l’accès depuis la plage d’IP de votre réseau d’entreprise. Cela garantit que les requêtes BigQuery peuvent être exécutées uniquement depuis le réseau de votre organisation, réduisant ainsi le risque de menaces externes.
La mise en œuvre des Contrôles de Service VPC nécessite une planification minutieuse. Vous devez prendre en compte les différents moyens d’accéder à BigQuery, tels que les réseaux sur site, les VPN en cloud, et d’autres projets Google Cloud.
Ces méthodes offrent diverses options pour se connecter à BigQuery. Vous devriez explorer toutes les options disponibles pour déterminer la meilleure approche en fonction de vos besoins. Il est souvent utile de commencer avec un périmètre de test à sec pour tester votre configuration avant de l’appliquer.

Implémentation des Rôles et Permissions IAM
La Gestion de l’Identité et de l’Accès (IAM) est la colonne vertébrale de la sécurité de BigQuery. Elle vous permet de contrôler qui peut accéder à vos ressources BigQuery et quelles actions ils peuvent effectuer. Le rôle le plus puissant dans BigQuery est roles/bigquery.admin, qui accorde un contrôle total sur toutes les ressources BigQuery dans un projet.
Cependant, il est généralement préférable de suivre le principe du moindre privilège et d’assigner des rôles plus spécifiques. Par exemple, vous pouvez donner aux analystes de données le rôle bigquery.user, qui leur permet d’exécuter des requêtes et de créer des jeux de données, mais pas de modifier les permissions existantes des jeux de données.
Voici un exemple de la façon dont vous pourriez utiliser le CLI BigQuery pour accorder à un utilisateur le rôle bigquery.user :
bq add-iam-policy-binding --member=user:analyst@example.com --role=roles/bigquery.user project-id
Cette commande ajoute l’utilisateur spécifié au projet avec le rôle bigquery.user.
L’audit régulier de vos politiques IAM est important pour s’assurer qu’elles restent appropriées. À mesure que les employés changent de rôle ou quittent l’organisation, leurs permissions devraient être mises à jour ou révoquées en conséquence. Vous pouvez utiliser le conseiller IAM dans Google Cloud pour identifier et supprimer les rôles trop permissifs.
Création et Sécurisation des Vues BigQuery
Les vues BigQuery sont un outil puissant pour implémenter la sécurité au niveau des lignes et des colonnes. Vous pouvez utiliser des tables virtuelles pour filtrer ou modifier les données avant de les montrer aux utilisateurs.
Pour créer une vue dans BigQuery, vous pouvez utiliser la syntaxe SQL suivante :
CREATE VIEW `project.dataset.view_name` AS SELECT column1, column2 FROM `project.dataset.table_name` WHERE condition;
Par exemple, vous pourriez créer une vue qui n’affiche que les données de ventes pour une région spécifique :
CREATE VIEW `sales.northeast_sales` AS SELECT * FROM `sales.all_sales` WHERE region = 'Northeast';
Accordez aux utilisateurs un accès à une vue spécifique au lieu de la table, afin qu’ils ne voient que les données liées à leur rôle.
Vous pouvez également utiliser des vues pour implémenter des règles de sécurité plus complexes. Par exemple, vous pourriez créer une vue qui n’affiche les données que pour l’utilisateur actuel :
CREATE VIEW `project.dataset.my_data` AS SELECT * FROM `project.dataset.all_data` WHERE user_email = SESSION_USER();
Cette vue filtrera automatiquement les données en fonction de l’email de l’utilisateur exécutant la requête.
Vues Autorisées pour l’Accès Inter-Jeu de Données
Les vues autorisées dans BigQuery vous permettent de créer des vues dans un jeu de données. Ces vues peuvent accéder aux données d’un autre jeu de données. Le système accorde l’accès même si l’utilisateur n’a pas la permission de voir le jeu de données original. Cela est particulièrement utile pour implémenter des contrôles d’accès granulaire.
Pour configurer une vue autorisée, vous créez d’abord la vue dans un jeu de données, puis accordez à cette vue l’accès au jeu de données source. Voici un exemple :
-- Créer la vue dans le set de données A CREATE VIEW `projectA.datasetA.sales_summary` AS SELECT date, SUM(amount) as total_sales FROM `projectB.datasetB.detailed_sales` GROUP BY date; -- Autoriser la vue à accéder aux données dans le set de données B bq add-iam-policy-binding \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquery.iam.gserviceaccount.com \ --role=roles/bigquery.dataViewer \ projectB:datasetB
Cela crée une vue de résumé dans le jeu de données A capable d’accéder aux données détaillées des ventes dans le jeu de données B, sans accorder aux utilisateurs un accès direct aux données détaillées.
Les vues autorisées puissantes doivent être utilisées avec discernement. Chaque fois que vous accordez à quelqu’un l’autorisation de visualiser quelque chose, cela complexifie votre système de sécurité. Assurez-vous de suivre ces permissions et de les vérifier souvent.
Implémentation de la Sécurité au Niveau des Colonnes
La sécurité au niveau des colonnes dans BigQuery vous permet de restreindre l’accès à des colonnes spécifiques dans une table. Cela est particulièrement utile lorsqu’on traite des informations sensibles telles que les informations personnellement identifiables.
Pour implémenter la sécurité au niveau des colonnes, vous pouvez utiliser la fonctionnalité de balises de politique de BigQuery. Tout d’abord, vous créez une taxonomie de balises de politique, puis appliquez ces balises à des colonnes spécifiques. Enfin, vous accordez aux utilisateurs ou groupes l’accès à des balises de politique spécifiques.
Voici un exemple de la façon dont vous pourriez créer une balise de politique en utilisant l’API de Politique de Données de BigQuery :
POST https://datacatalog.googleapis.com/v1/projects/{project}/locations/{location}/taxonomies { "displayName": "Données Sensibles", "description": "Balises pour les colonnes de données sensibles", "activatedPolicyTypes": ["FINE_GRAINED_ACCESS_CONTROL"] }
Vous pouvez utiliser les catégories et les étiquettes que vous créez sur les colonnes dans votre configuration BigQuery. Vous pouvez également contrôler l’accès avec les règles IAM.
La sécurité au niveau des colonnes peut améliorer significativement votre protection des données, mais elle ajoute également de la complexité à votre modèle de données. Il est important d’avoir une stratégie claire sur les colonnes nécessitant une protection et sur la manière dont l’accès à ces colonnes sera géré.
Surveillance et Journalisation dans BigQuery
Une sécurité efficace ne se limite pas à la prévention ; elle concerne également la détection et la réponse. BigQuery fournit des capacités robustes de journalisation et de surveillance pour vous aider à suivre l’utilisation et identifier les problèmes potentiels de sécurité.
Vous pouvez utiliser les vues INFORMATION_SCHEMA de BigQuery pour interroger les métadonnées sur vos ressources BigQuery. Par exemple, pour voir toutes les requêtes exécutées au cours des dernières 24 heures, vous pourriez utiliser :
SELECT * FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time == TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND job_type = 'QUERY' ORDER BY creation_time DESC;
Cette requête donne des détails spécifiques sur chaque tâche. Elle inclut l’utilisateur qui a exécuté la tâche, le texte de la requête utilisée, et le volume de données traitées.
En plus des vues INFORMATION_SCHEMA, vous pouvez également utiliser les Journalisation d’Audit du Cloud pour suivre l’activité à BigQuery. Les journaux d’audit du cloud capturent une variété d’événements, y compris la création et la suppression de jeux de données, les mises à jour de tables, et les exécutions de requêtes. Vous pouvez exporter ces journaux vers Cloud Storage ou BigQuery pour une conservation à long terme.
Implémentation des Politiques d’Organisation GCP
Les politiques d’organisation GCP fournissent un moyen centralisé de gérer les contrôles de sécurité à travers toute votre organisation Google Cloud. Vous pouvez utiliser ces règles pour assurer la sécurité de BigQuery, comme vous assurer que toutes les tables ont une clé de chiffrement.
Pour configurer une politique d’organisation, vous utilisez la Console GCP ou l’outil de ligne de commande gcloud. Par exemple, pour exiger que tous les jeux de données BigQuery soient restreints par région :
gcloud resource-manager org-policies enable-enforce \ constraints/bigquery.restrictDatasetLocation \ --organization=ORGANIZATION_ID
Cette règle garantit que tous les nouveaux jeux de données ont une localisation listée. Elle empêche la création accidentelle de jeux de données qui couvrent plusieurs régions. Elle prévient également la violation des règles de résidence des données.
Les politiques d’organisation peuvent être un outil puissant pour appliquer des pratiques de sécurité cohérentes à travers votre organisation. Cependant, les organisations devraient les implémenter avec soin, car des politiques trop restrictives peuvent entraver le travail légitime. Il est souvent utile de commencer par des politiques de type audit uniquement avant de les appliquer.
Gestion des Erreurs de Permission Refusée
Même avec une sécurité forte, les utilisateurs peuvent toujours recevoir des erreurs de type “permission refusée” lorsqu’ils essaient d’accéder aux ressources BigQuery. Une erreur courante est “permission bigquery.datasets.update refusée sur le jeu de données”.
Cette erreur se produit souvent lorsqu’un utilisateur tente de modifier un jeu de données pour lequel il n’a pas les permissions suffisantes. Pour résoudre cela, vous devez accorder à l’utilisateur le rôle bigquery.dataEditor (ou un rôle personnalisé avec des permissions équivalentes) sur le jeu de données.
Vous pouvez le faire en utilisant l’outil de ligne de commande bq :
bq add-iam-policy-binding \ --member=user:username@example.com \ --role=roles/bigquery.dataEditor \ project:dataset
N’accordez aux utilisateurs ou comptes de service que le minimum de permissions nécessaires pour suivre le principe du moindre privilège.
Lors du dépannage des problèmes de permission, il est souvent utile d’utiliser le dépannage des politiques IAM dans la Console Google Cloud. Cet outil peut vous aider à comprendre pourquoi un utilisateur a ou n’a pas une permission particulière.
Techniques Avancées de Sécurité BigQuery
Pour des exigences de sécurité plus complexes, BigQuery offre plusieurs fonctionnalités avancées. Une telle fonctionnalité est la possibilité d’utiliser des fonctions définies par l’utilisateur (UDF) pour implémenter le masquage dynamique des données.
Par exemple, vous pourriez créer une UDF qui masque les adresses e-mail :
CREATE FUNCTION `project.dataset.mask_email`(email STRING) RETURNS STRING AS ( CASE WHEN email IS NULL THEN NULL ELSE CONCAT(LEFT(email, 1), '***@', SPLIT(email, '@')[OFFSET(1)]) END );
Vous pouvez ensuite utiliser cette fonction dans des vues ou des requêtes pour masquer automatiquement des adresses e-mails pour les utilisateurs qui ne devraient pas voir les valeurs complètes.
Une autre technique avancée est d’utiliser la fonctionnalité GROUP BY ALL de BigQuery pour l’accès aux données agrégées. Cette fonctionnalité vous permet de créer des vues de synthèse qui regroupent les données par colonnes non agrégées. Ceci simplifie l’accès aux données agrégées sans montrer les enregistrements individuels.
CREATE VIEW `project.dataset.sales_summary` AS SELECT DATE_TRUNC(date, MONTH) as month, SUM(amount) as total_sales FROM `project.dataset.detailed_sales` GROUP BY ALL;
Cette vue affichera automatiquement toutes les nouvelles colonnes ajoutées à la table detailed_sales. Cette fonctionnalité facilite la gestion de la table à l’avenir.
Chiffrement et Gestion des Clés
BigQuery chiffre automatiquement toutes les données au repos, mais pour plus de sécurité, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK). Avec CMEK, vous gérez vous-même vos clés de chiffrement en utilisant le Service de Gestion des Clés Cloud (KMS).
Pour utiliser CMEK avec BigQuery, vous créez d’abord un anneau de clés et une clé dans KMS, puis spécifiez cette clé lors de la création d’un jeu de données :
bq mk --dataset \ --default_kms_key projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING_NAME]/cryptoKeys/[KEY_NAME] \ [PROJECT_ID]:[DATASET]
Utiliser CMEK vous donne plus de contrôle sur votre chiffrement de données, mais cela implique également des responsabilités de gestion supplémentaires. Vous devrez vous assurer que vos clés sont correctement sécurisées et que vous avez des processus en place pour la rotation et la récupération des clés.
Gouvernance des Données et Conformité
Une gouvernance efficace des données est cruciale pour maintenir la conformité avec des réglementations comme le GDPR, la HIPAA, et la CCPA. BigQuery offre plusieurs fonctionnalités pour soutenir la gouvernance des données :
- Catalogage des Données : Ce service de gestion des métadonnées entièrement géré et évolutif peut vous aider à découvrir, comprendre et gérer vos jeux de données BigQuery.
- Prévention de Perte de Données (DLP) : Vous pouvez utiliser le Cloud DLP pour analyser vos tables BigQuery à la recherche d’informations sensibles et appliquer automatiquement les contrôles appropriés.
- Service de Transfert de Données BigQuery : Ce service vous aide à configurer et gérer des chargements de données réguliers depuis diverses sources. Cela garantit que vos données restent à jour et précises.
Lors de l’implémentation de votre gouvernance des données dans BigQuery, il est important de considérer l’ensemble du cycle de vie des données, de l’ingestion jusqu’à la suppression. Vous devriez avoir des politiques claires en place pour la rétention des données, le contrôle d’accès et la gestion de la qualité des données.
Conclusion
Sécuriser BigQuery nécessite plusieurs couches de sécurité, y compris des contrôles réseau et des permissions avec des rôles IAM et des vues autorisées. En utilisant des balises de politique et une surveillance/journalisation, vous pouvez rendre votre environnement BigQuery plus sécurisé.
Rappelez-vous que la sécurité est un processus continu. Examinez régulièrement vos paramètres de sécurité, surveillez les activités inhabituelles et restez à jour sur les dernières fonctionnalités de sécurité BigQuery pour garantir la protection de vos données. En utilisant les bonnes méthodes, vous pouvez tirer le meilleur parti de BigQuery tout en assurant la sécurité et la conformité des données.
À mesure que votre utilisation de BigQuery augmente, envisagez de mettre en œuvre des contrôles de sécurité automatisés et des audits de conformité. Des outils comme le Centre de Commande de Sécurité Cloud peuvent vous aider à voir à quel point votre environnement Google Cloud est sécurisé, notamment BigQuery.
Enfin, n’oubliez pas l’élément humain de la sécurité. Une formation régulière pour votre équipe sur les meilleures pratiques de sécurité BigQuery et les politiques spécifiques à votre entreprise est essentielle. Encourager une culture de sensibilisation à la sécurité aide tout le monde à garantir la sécurité des données.
Suivant
