Sécurité BigQuery
Google BigQuery offre de puissantes capacités d’entreposage de données, mais avec un grand pouvoir vient 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é BigQuery, depuis les contrôles d’accès réseaux jusqu’aux permissions granulaires 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 sont autorisés à y accéder. Cela ajoute une couche de protection supplémentaire contre les tentatives d’accès non autorisé.
Pour configurer les contrôles de service VPC pour BigQuery, vous devez créer une politique de niveau d’accès dans votre Google Cloud Console. Cette politique définit les plages d’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 en tant que service restreint.
Par exemple, vous pourriez créer une politique qui permet uniquement l’accès depuis la plage d’IP de votre réseau d’entreprise. Cela garantit que les requêtes BigQuery ne peuvent être exécutées qu’à partir du 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 considérer les différentes manières d’accéder à BigQuery, telles que les réseaux sur site, les VPN cloud et d’autres projets Google Cloud.
Ces méthodes offrent différentes options pour se connecter à BigQuery. Vous devez explorer toutes les options disponibles pour déterminer la meilleure approche pour vos besoins. Il est souvent utile de commencer par un périmètre d’essai pour tester votre configuration avant de l’appliquer.
Mise en œuvre des rôles et permissions IAM
La gestion des identités et des accès (IAM) est la colonne vertébrale de la sécurité BigQuery. Elle vous permet de contrôler qui a accès à 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’attribuer des rôles plus spécifiques. Par exemple, vous pourriez donner aux analystes de données le rôle de bigquery.user, qui leur permet de lancer des requêtes et de créer des ensembles de données, mais pas de modifier les permissions des ensembles de données existants.
Voici un exemple de l’utilisation de l’interface en ligne de commande BigQuery pour attribuer le rôle bigquery.user à un utilisateur :
bq add-iam-policy-binding --member=user:[email protected] --role=roles/bigquery.user project-id
Cette commande ajoute l’utilisateur spécifié au projet avec le rôle bigquery.user.
Il est important d’auditer régulièrement vos politiques IAM pour s’assurer qu’elles restent appropriées. Lorsque des employés changent de rôle ou quittent l’organisation, leurs permissions doivent être mises à jour ou révoquées en conséquence. Vous pouvez utiliser le recommander IAM de Google Cloud pour identifier et supprimer les rôles excessivement permissifs.
Créer et sécuriser des vues BigQuery
Les vues BigQuery sont un outil puissant pour mettre en œuvre une 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 afficher 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 ne montre que les données de vente pour une région spécifique :
CREATE VIEW `sales.northeast_sales` AS SELECT * FROM `sales.all_sales` WHERE region = 'Nord-Est';
Accordez aux utilisateurs l’accès à une vue spécifique plutôt qu’à la table, afin qu’ils ne voient que les données liées à leur rôle.
Vous pouvez également utiliser des vues pour mettre en œuvre des règles de sécurité plus complexes. Par exemple, vous pourriez créer une vue qui ne montre que les données 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 entre ensembles de données
Les vues autorisées dans BigQuery vous permettent de créer des vues dans un ensemble de données pouvant accéder aux données d’un autre ensemble de données. Le système accorde l’accès même si l’utilisateur n’a pas la permission de voir l’ensemble de données d’origine. Cela est particulièrement utile pour mettre en œuvre des contrôles d’accès détaillés.
Pour configurer une vue autorisée, vous devez d’abord créer la vue dans un ensemble de données, puis accorder à cette vue l’accès à l’ensemble de données source. Voici un exemple :
-- Créer la vue dans l'ensemble 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 l'ensemble de données B bq add-iam-policy-binding \ --member=serviceAccount:[email protected] \ --role=roles/bigquery.dataViewer \ projectB:datasetB
Cela crée une vue récapitulative dans l’ensemble de données A qui peut accéder aux données de vente détaillées dans l’ensemble de données B, sans donner aux utilisateurs un accès direct aux données détaillées.
Les vues autorisées puissantes doivent être utilisées avec parcimonie. Chaque fois que vous donnez à quelqu’un la permission de voir quelque chose, cela complique votre système de sécurité. Assurez-vous de suivre ces permissions et de les vérifier souvent.
Mise en œuvre 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 d’une table. Cela est particulièrement utile lorsqu’il s’agit d’informations sensibles comme les données personnelles identifiables.
Pour mettre en œuvre la sécurité au niveau des colonnes, vous pouvez utiliser la fonctionnalité des balises de politique de BigQuery. Tout d’abord, vous créez une taxonomie des 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 création d’une balise de politique à l’aide de l’API BigQuery Data Policy :
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 créer des catégories et des étiquettes sur des colonnes dans votre configuration BigQuery. Vous pouvez également contrôler l’accès avec des règles IAM.
La sécurité au niveau des colonnes peut considérablement améliorer la protection de vos données, mais cela 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 concerne pas seulement la prévention, mais aussi la détection et la réponse. BigQuery offre des capacités de journalisation et de surveillance robustes pour vous aider à suivre l’utilisation et à identifier les problèmes de sécurité potentiels.
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 de la dernière journée, vous pouvez 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 fournit des détails spécifiques sur chaque tâche, y compris 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 journaux d’audit de Cloud pour suivre l’activité BigQuery. Les journaux d’audit Cloud capturent une variété d’événements, y compris la création et la suppression d’ensembles de données, les mises à jour de tables et l’exécution de requêtes. Vous pouvez exporter ces journaux vers Cloud Storage ou BigQuery pour une rétention à long terme.
Mise en œuvre des politiques d’organisation GCP
Les politiques d’organisation GCP fournissent un moyen centralisé de gérer les contrôles de sécurité à l’échelle de toute votre organisation Google Cloud. Vous pouvez utiliser ces règles pour sécuriser BigQuery, comme en veillant à ce que toutes les tables aient une clé de cryptage.
Pour configurer une politique d’organisation, vous utilisez la console GCP ou l’outil en ligne de commande gcloud. Par exemple, pour exiger que tous les ensembles de données BigQuery soient restreints à une région spécifique :
gcloud resource-manager org-policies enable-enforce \ constraints/bigquery.restrictDatasetLocation \ --organization=IDENTIFIANT_DE_L'ORGANISATION
Cette règle garantit que tous les nouveaux ensembles de données ont un emplacement spécifié, empêchant la création accidentelle d’ensembles de données s’étendant sur plusieurs régions et enfreignant les règles de résidence des données.
Les politiques d’organisation peuvent être un outil puissant pour faire respecter des pratiques de sécurité cohérentes dans toute votre organisation. Toutefois, elles doivent être mises en œuvre avec précaution, car des politiques trop restrictives peuvent entraver le travail légitime. Il est souvent utile de commencer par des politiques en audit-only avant de les faire respecter.
Gestion des erreurs “Permission denied”
Même avec une sécurité robuste, les utilisateurs peuvent toujours recevoir des erreurs “permission denied” lorsqu’ils tentent d’accéder aux ressources BigQuery. Une erreur courante est “permission bigquery.datasets.update denied sur dataset”.
Cette erreur se produit souvent lorsqu’un utilisateur tente de modifier un ensemble de données pour lequel il ne dispose pas des permissions suffisantes. Pour résoudre ce problème, vous devez accorder à l’utilisateur le rôle bigquery.dataEditor (ou un rôle personnalisé avec des permissions équivalentes) sur l’ensemble de données.
Vous pouvez le faire en utilisant l’outil en ligne de commande bq :
bq add-iam-policy-binding \ --member=user:[email protected] \ --role=roles/bigquery.dataEditor \ project:dataset
Donnez aux utilisateurs ou aux comptes de service uniquement les permissions minimales nécessaires, suivant ainsi le principe du moindre privilège.
Lors du dépannage des problèmes de permission, il est souvent utile d’utiliser l’outil IAM Policy Troubleshooter dans la console Google Cloud. Cet outil peut vous aider à comprendre pourquoi un utilisateur dispose ou non d’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 de ces fonctionnalités est la possibilité d’utiliser des fonctions définies par l’utilisateur (UDF) pour mettre en œuvre le masquage dynamique des données.
Par exemple, vous pourriez créer une UDF pour masquer 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 les adresses e-mail pour les utilisateurs qui ne devraient pas voir les valeurs complètes.
Une autre technique avancée consiste à utiliser la fonctionnalité GROUP BY ALL de BigQuery pour l’accès aux données agrégées. Cette fonctionnalité permet de créer des vues récapitulatives qui regroupent les données par des colonnes non agrégées, simplifiant ainsi l’accès aux données agrégées sans afficher 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, simplifiant ainsi la gestion de la table à l’avenir.
Cryptage et gestion des clés
BigQuery crypte automatiquement toutes les données au repos, mais pour une sécurité supplémentaire, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK). Avec CMEK, vous gérez vos propres clés de chiffrement à l’aide du service de gestion de clés Cloud (KMS).
Pour utiliser CMEK avec BigQuery, vous devez d’abord créer un anneau de clés et une clé dans KMS, puis spécifier cette clé lors de la création d’un ensemble de données :
bq mk --dataset \ --default_kms_key projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING_NAME]/cryptoKeys/[KEY_NAME] \ [ID_PROJET]:[ENSEMBLE_DE_DONNÉES]
Utiliser CMEK vous donne plus de contrôle sur votre cryptage des données, mais comprend également des responsabilités de gestion supplémentaires. Vous devrez garantir la sécurité de vos clés et mettre en place des processus de rotation et de 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 RGPD, la HIPAA et la CCPA. BigQuery propose plusieurs fonctionnalités pour soutenir la gouvernance des données :
- Catalogue de données : Ce service de gestion de métadonnées entièrement géré et évolutif vous aide à découvrir, comprendre et gérer vos ensembles de données BigQuery.
- Prévention des pertes de données (DLP) : Vous pouvez utiliser Cloud DLP pour analyser vos tables BigQuery à la recherche d’informations sensibles et appliquer automatiquement des 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 à partir de diverses sources, garantissant que vos données restent à jour et précises.
Lors de la mise en œuvre de la gouvernance des données dans BigQuery, il est important de considérer tout le cycle de vie des données, de l’ingestion à la suppression. Vous devez disposer de politiques claires pour la rétention des données, le contrôle d’accès et la gestion de la qualité des données.
Conclusion
La sécurisation de BigQuery nécessite plusieurs couches de sécurité, y compris des contrôles réseau, des permissions avec des rôles IAM et des vues autorisées. En utilisant des balises de politique et en surveillant/journalisant, vous pouvez rendre votre environnement BigQuery plus sécurisé.
Rappelez-vous que la sécurité est un processus continu. Passez régulièrement en revue 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 maximiser les avantages de BigQuery tout en assurant la sécurité et la conformité des données.
Au fur et à mesure que votre utilisation de BigQuery croît, envisagez de mettre en œuvre des contrôles de sécurité automatisés et des audits de conformité. Des outils comme le Command Center de sécurité cloud peuvent vous aider à voir comment votre environnement Google Cloud est sécurisé, y compris BigQuery.
Enfin, n’oubliez pas l’aspect humain de la sécurité. Une formation régulière de votre équipe sur les bonnes pratiques de sécurité de BigQuery et sur les politiques spécifiques de votre entreprise est essentielle. Encourager une culture de sensibilisation à la sécurité aide tout le monde à protéger les données.