Masquer les données de colonne

Ce document explique comment implémenter le masquage des données afin d'obscurcir de manière sélective des données sensibles. En implémentant le masquage de données, vous pouvez fournir différents niveaux de visibilité à différents groupes d'utilisateurs. Pour obtenir des informations générales, consultez la page Présentation du masquage des données.

Vous mettez en œuvre le masquage de données en ajoutant une stratégie de données à une colonne. Pour ajouter une règle de masquage de données à une colonne, procédez comme suit :

  1. Créez une taxonomie avec au moins un tag avec stratégie.
  2. Facultatif : attribuez le rôle "Lecteur détaillé Data Catalog" à un ou plusieurs comptes principaux sur un ou plusieurs tags avec stratégie que vous avez créés.
  3. Créez jusqu'à trois stratégies de données pour le tag avec stratégie, afin de mapper les règles de masquage et les comptes principaux (qui représentent des utilisateurs ou des groupes) à ce tag.
  4. Définissez le tag avec stratégie sur une colonne. Cela mappe les stratégies de données associées au tag avec stratégie à la colonne sélectionnée.
  5. Attribuez le rôle Lecteur masqué BigQuery aux utilisateurs qui doivent avoir accès aux données masquées. Nous vous recommandons d'attribuer le rôle de lecteur masqué BigQuery au niveau de la stratégie de données. L'attribution du rôle au niveau du projet ou à un niveau supérieur accorde aux utilisateurs des autorisations sur toutes les stratégies de données du projet, ce qui peut entraîner des problèmes en raison d'autorisations en excès.

Vous pouvez utiliser la console Trusted Cloud ou l'API BigQuery Data Policy pour travailler avec les règles relatives aux données.

Une fois ces étapes terminées, les utilisateurs exécutant des requêtes sur la colonne obtiennent des données non masquées, des données masquées ou une erreur d'accès refusé, en fonction des groupes auxquels ils appartiennent et des rôles qui leur ont été attribués. Pour en savoir plus, consultez la section Interaction des rôles Lecteur masqué et Lecteur détaillé.

Vous pouvez également appliquer des règles de données directement à une colonne (aperçu). Pour en savoir plus, consultez Masquer des données avec des règles de données directement dans une colonne.

Masquer des données avec des tags avec stratégie

Utilisez des tags avec stratégie pour masquer sélectivement les données sensibles.

Avant de commencer

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

  3. Enable the Data Catalog and BigQuery Data Policy APIs.

    Enable the APIs

  4. BigQuery est automatiquement activé dans les nouveaux projets, mais vous devrez peut-être l'activer dans un projet préexistant.
  5. Enable the BigQuery API.

    Enable the API

  6. Si vous créez une stratégie de données qui fait référence à une routine de masquage personnalisée, créez la fonction de masquage définie par l'utilisateur associée afin qu'elle soit disponible dans les étapes suivantes.
  7. Créer des catégories

    L'utilisateur ou le compte de service qui crée une taxonomie doit disposer du rôle "Administrateur de tags avec stratégie Data Catalog".

    Console

    1. Ouvrez la page Catégories de tags avec stratégie dans la consoleTrusted Cloud .

      Ouvrir la page Catégories de tags avec stratégie

    2. Cliquez sur Créer une taxonomie.
    3. Sur la page Nouvelle taxonomie :

      1. Dans le champ Nom de la taxonomie, saisissez le nom de la taxonomie à créer.
      2. Dans le champ Description, saisissez une description.
      3. Si nécessaire, modifiez le projet répertorié sous Project (Projet).
      4. Si nécessaire, modifiez l'emplacement répertorié sous Location (Emplacement).
      5. Sous Policy Tags (Tags avec stratégie), saisissez un nom et une description de tag avec stratégie.
      6. Pour ajouter un tag avec stratégie enfant à un tag avec stratégie, cliquez sur Ajouter un sous-tag.
      7. Pour ajouter un tag avec stratégie au même niveau qu'un autre tag, cliquez sur + Ajouter un tag avec stratégie.
      8. Continuez à ajouter des tags avec stratégie et des tags avec stratégie enfant selon les besoins de votre taxonomie.
      9. Lorsque vous avez fini de créer des tags avec stratégie pour votre hiérarchie, cliquez sur Enregistrer.

    API

    Pour utiliser les taxonomies existantes, appelez taxonomies.import à la place des deux premières étapes de la procédure suivante.

    1. Appelez taxonomies.create pour créer une taxonomie.
    2. Appelez taxonomies.policytag.create pour créer un tag avec stratégie.

    Utiliser des tags avec stratégie

    Pour en savoir plus sur l'utilisation des tags avec stratégie, comme leur affichage ou leur mise à jour, consultez la section Utiliser des tags avec stratégie. Pour en savoir plus sur les bonnes pratiques, consultez la page Bonnes pratiques d'utilisation des tags avec stratégie dans BigQuery.

    Créer des stratégies de données

    L'utilisateur ou le compte de service qui crée une stratégie de données doit disposer des autorisations bigquery.dataPolicies.create, bigquery.dataPolicies.setIamPolicy et datacatalog.taxonomies.get.

    Les autorisations bigquery.dataPolicies.create et bigquery.dataPolicies.setIamPolicy sont incluses dans les rôles "Administrateur de stratégies de données BigQuery", "Administrateur BigQuery" et "Propriétaire de données BigQuery". L'autorisation datacatalog.taxonomies.get est incluse dans les rôles "Administrateur Data Catalog" et "Lecteur Data Catalog".

    Si vous créez une stratégie de données qui fait référence à une routine de masquage personnalisée, vous avez également besoin d'autorisations de routine.

    En cas de masquage personnalisé, accordez aux utilisateurs les rôles Administrateur BigQuery ou Propriétaire de données BigQuery pour vous assurer qu'ils disposent des autorisations nécessaires pour les routines et les règles de données.

    Vous pouvez créer jusqu'à neuf stratégies de données pour un tag avec stratégie. L'une de ces stratégies est réservée aux paramètres de contrôle des accès au niveau des colonnes.

    Console

    1. Ouvrez la page Catégories de tags avec stratégie dans la consoleTrusted Cloud .

      Ouvrir la page Catégories de tags avec stratégie

    2. Cliquez sur le nom de la taxonomie à ouvrir.
    3. Sélectionnez un tag avec stratégie.
    4. Cliquez sur Gérer les stratégies des données.
    5. Dans Nom de la stratégie de données, saisissez un nom pour la stratégie de données. Le nom de la stratégie de données doit être unique dans le projet dans lequel se trouve la stratégie de données.
    6. Pour Règle de masquage, choisissez une règle de masquage prédéfinie ou une routine de masquage personnalisée. Si vous sélectionnez une routine de masquage personnalisée, assurez-vous de disposer des autorisations bigquery.routines.get et bigquery.routines.list au niveau du projet.
    7. Pour Compte principal, saisissez le nom d'un ou de plusieurs utilisateurs ou groupes auxquels vous souhaitez accorder un accès masqué à la colonne. Notez que tous les utilisateurs et groupes que vous saisissez ici se voient attribuer le rôle de lecteur masqué BigQuery.
    8. Cliquez sur Envoyer.

    API

    1. Appelez la méthode create. Transmettez une ressource DataPolicy qui répond aux exigences suivantes :

      • Le champ dataPolicyType est défini sur DATA_MASKING_POLICY.
      • Le champ dataMaskingPolicy identifie la stratégie ou la routine de masquage de données à utiliser.
      • Le champ dataPolicyId fournit un nom pour la stratégie de données qui est unique dans le projet dans lequel se trouve la stratégie de données.
    2. Appelez la méthode setIamPolicy et transmettez un objet Policy. Policy doit identifier les comptes principaux autorisés à accéder aux données masquées et spécifier roles/bigquerydatapolicy.maskedReader pour le champ role.

    Définir des tags avec stratégie sur des colonnes

    Définissez une stratégie de données sur une colonne en associant la colonne au tag avec stratégie associé à la stratégie de données.

    L'utilisateur ou le compte de service qui définit un tag avec stratégie a besoin des autorisations datacatalog.taxonomies.get et bigquery.tables.setCategory. datacatalog.taxonomies.get est inclus dans les rôles "Administrateur de tags avec stratégie Data Catalog" et "Lecteur de projet". bigquery.tables.setCategory est inclus dans les rôles Administrateur BigQuery (roles/bigquery.admin) et Propriétaire de données BigQuery (roles/bigquery.dataOwner).

    Pour afficher les taxonomies et les tags avec stratégie de tous les projets d'une organisation dans la consoleTrusted Cloud , les utilisateurs doivent disposer de l'autorisation resourcemanager.organizations.get, qui est incluse dans le rôle Lecteur de l'organisation.

    Console

    Définissez le tag avec stratégie en modifiant un schéma à l'aide de la consoleTrusted Cloud .

    1. Ouvrez la page BigQuery dans la console Trusted Cloud .

      Accéder à la page "BigQuery"

    2. Dans l'explorateur BigQuery, localisez et sélectionnez la table que vous souhaitez mettre à jour. Le schéma de la table s'ouvre.

    3. Cliquez sur Modifier le schéma.

    4. Dans l'écran Current schema (Schéma actuel), sélectionnez la colonne cible, puis cliquez sur Add policy tag (Ajouter un tag avec stratégie).

    5. Dans l'écran Add policy tag (Ajouter un tag avec stratégie), sélectionnez le tag avec stratégie que vous souhaitez appliquer à la colonne.

    6. Cliquez sur Sélectionner. L'écran qui s'affiche devrait se présenter comme ceci :

      Modifier le schéma.

    7. Cliquez sur Enregistrer.

    bq

    1. Enregistrez le schéma dans un fichier local.

      bq show --schema --format=prettyjson \
         project-id:dataset.table > schema.json

      où :

      • project-id est l'ID de votre projet.
      • dataset est le nom de l'ensemble de données contenant la table que vous mettez à jour.
      • table est le nom de la table que vous mettez à jour.
    2. Modifiez le fichier schema.json pour définir un tag avec stratégie sur une colonne. Pour la valeur du champ names de policyTags, utilisez le nom de ressource du tag avec stratégie.

      [
       ...
       {
         "name": "ssn",
         "type": "STRING",
         "mode": "REQUIRED",
         "policyTags": {
           "names": ["projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id"]
         }
       },
       ...
      ]
    3. Mettez à jour le schéma.

      bq update \
         project-id:dataset.table schema.json

    API

    Pour les tables existantes, appelez tables.patch ou, pour les nouvelles tables, appelez tables.insert. Utilisez la propriété schema de l'objet Table que vous transmettez pour définir un tag avec stratégie dans votre définition de schéma. Consultez l'exemple de schéma de ligne de commande pour savoir comment définir un tag avec stratégie.

    Lorsque vous utilisez une table existante, la méthode tables.patch est préférable, car la méthode tables.update remplace l'intégralité de la ressource de table.

    Appliquer le contrôle des accès

    Lorsque vous créez une stratégie de données pour un tag avec stratégie, le contrôle des accès est automatiquement appliqué. Toutes les colonnes auxquelles ce tag avec stratégie est appliqué renvoient des données masquées en réponse aux requêtes des utilisateurs disposant du rôle "Lecteur masqué".

    Pour arrêter l'application du contrôle des accès, vous devez d'abord supprimer toutes les stratégies de données associées aux tags avec stratégie de la taxonomie. Pour en savoir plus, consultez la section Appliquer le contrôle des accès.

    Vérifier les autorisations IAM sur une stratégie de données

    Pour connaître les autorisations dont vous disposez sur une stratégie de données, appelez la méthode testIamPermissions.

    Mettre à jour les stratégies des données

    L'utilisateur ou le compte de service qui met à jour une stratégie de données doit disposer de l'autorisation bigquery.dataPolicies.update. Si vous mettez à jour le tag avec stratégie associé à la stratégie de données, vous devez également disposer de l'autorisation datacatalog.taxonomies.get.

    Si vous mettez à jour les comptes principaux associés à la stratégie de données, vous devez disposer de l'autorisation bigquery.dataPolicies.setIamPolicy.

    Les autorisations bigquery.dataPolicies.update et bigquery.dataPolicies.setIamPolicy sont incluses dans les rôles "Administrateur de stratégies de données BigQuery", "Administrateur BigQuery" et "Propriétaire de données BigQuery". L'autorisation datacatalog.taxonomies.get est incluse dans les rôles "Administrateur Data Catalog" et "Lecteur Data Catalog".

    Console

    1. Ouvrez la page Catégories de tags avec stratégie dans la consoleTrusted Cloud .

      Ouvrir la page Catégories de tags avec stratégie

    2. Cliquez sur le nom de la taxonomie à ouvrir.
    3. Sélectionnez un tag avec stratégie.
    4. Cliquez sur Gérer les stratégies des données.
    5. Vous pouvez également modifier la stratégie de masquage.
    6. Facultatif : ajoutez ou supprimez des comptes principaux.
    7. Cliquez sur Envoyer.

    API

    Pour modifier la stratégie de masquage de données, appelez la méthode patch et transmettez une ressource DataPolicy avec un champ dataMaskingPolicy mis à jour.

    Pour modifier les comptes principaux associés à une stratégie de données, appelez la méthode setIamPolicy et transmettez un objet Policy qui met à jour les comptes principaux autorisés à accéder aux données masquées.

    Supprimer les stratégies de données

    L'utilisateur ou le compte de service qui crée une stratégie de données doit disposer de l'autorisation bigquery.dataPolicies.delete. Cette autorisation est incluse dans les rôles d'administrateur de stratégies de données BigQuery, d'administrateur BigQuery et de propriétaire de données BigQuery.

    Console

    1. Ouvrez la page Catégories de tags avec stratégie dans la consoleTrusted Cloud .

      Ouvrir la page Catégories de tags avec stratégie

    2. Cliquez sur le nom de la taxonomie à ouvrir.
    3. Sélectionnez un tag avec stratégie.
    4. Cliquez sur Gérer les stratégies des données.
    5. Cliquez sur à côté de la stratégie de données à supprimer.
    6. Cliquez sur Envoyer.
    7. Cliquez sur Confirmer.

    API

    Pour supprimer une stratégie de données, appelez la méthode delete.

    Masquer des données en appliquant des stratégies de données à une colonne

    Au lieu de créer des tags avec stratégie, vous pouvez créer des stratégies de données et les appliquer directement à une colonne.

    Utiliser les règles relatives aux données

    Vous pouvez créer, modifier et supprimer des règles de données à l'aide de l'API BigQuery Data Policy. Pour appliquer une règle de données directement à une colonne, vous ne pouvez pas utiliser la page Catégories de tags avec stratégie dans la console Trusted Cloud .

    Pour utiliser des règles de données, utilisez la ressource v2.projects.locations.datapolicies.

    Créer des stratégies de données

    L'utilisateur ou le compte de service qui crée une stratégie de données doit disposer de l'autorisation bigquery.dataPolicies.create.

    L'autorisation bigquery.dataPolicies.create est incluse dans les rôles "Administrateur de stratégies de données BigQuery", "Administrateur BigQuery" et "Propriétaire de données BigQuery". L'autorisation datacatalog.taxonomies.get est incluse dans les rôles "Administrateur Data Catalog" et "Lecteur Data Catalog".

    Si vous créez une stratégie de données qui fait référence à une routine de masquage personnalisée, vous avez également besoin d'autorisations de routine.

    Si vous utilisez le masquage personnalisé, accordez aux utilisateurs le rôle Propriétaire de données BigQuery pour vous assurer qu'ils disposent des autorisations nécessaires pour les routines et les règles de données.

    Pour créer une stratégie de données, appelez la méthode create. Transmettez une ressource DataPolicy qui répond aux exigences suivantes :

    • Le champ dataPolicyType est défini sur DATA_MASKING_POLICY ou RAW_DATA_ACCESS_POLICY.
    • Le champ dataMaskingPolicy identifie la stratégie ou la routine de masquage de données à utiliser.
    • Le champ dataPolicyId fournit un nom pour la stratégie de données qui est unique dans le projet dans lequel se trouve la stratégie de données.

    Mettre à jour les stratégies des données

    L'utilisateur ou le compte de service qui met à jour une stratégie de données doit disposer de l'autorisation bigquery.dataPolicies.update.

    L'autorisation bigquery.dataPolicies.update est incluse dans les rôles "Administrateur de stratégies de données BigQuery", "Administrateur BigQuery" et "Propriétaire de données BigQuery".

    Pour modifier la stratégie de masquage de données, appelez la méthode patch et transmettez une ressource DataPolicy avec un champ dataMaskingPolicy mis à jour.

    Vous pouvez également accorder un contrôle précis des accès aux stratégies de données.

    Les autorisations permettant d'accorder un contrôle des accès précis aux règles relatives aux données et de les gérer sont différentes. Pour contrôler les autorisations de contrôle des accès précis, vous devez mettre à jour le champ grantees de la stratégie de données. Pour contrôler l'accès aux règles relatives aux données, définissez les rôles IAM à l'aide de la méthode setIamPolicy.

    Pour définir des bénéficiaires sur une règle de données, utilisez la méthode v2 patch . Pour gérer les autorisations de la stratégie de données, utilisez la méthode v1 setIamPolicy.

    Pour accorder contrôle des accès précis aux règles de données, appelez la méthode patch et transmettez une ressource DataPolicy avec un champ grantees mis à jour.

    Supprimer les stratégies de données

    L'utilisateur ou le compte de service qui crée une stratégie de données doit disposer de l'autorisation bigquery.dataPolicies.delete. Cette autorisation est incluse dans les rôles d'administrateur de stratégies de données BigQuery, d'administrateur BigQuery et de propriétaire de données BigQuery.

    Pour supprimer une stratégie de données, appelez la méthode delete.

    Attribuer une règle de données directement à une colonne

    Vous pouvez attribuer une règle de données directement à une colonne sans utiliser de tags avec stratégie.

    Avant de commencer

    Pour obtenir les autorisations nécessaires pour attribuer une règle de données directement à une colonne, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de règles de données BigQuery (roles/bigquerydatapolicy.admin) sur votre table. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

    Ce rôle prédéfini contient les autorisations requises pour attribuer une règle de données directement à une colonne. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

    Autorisations requises

    Les autorisations suivantes sont requises pour attribuer une règle de données directement à une colonne :

    • bigquery.tables.update
    • bigquery.tables.setColumnDataPolicy
    • bigquery.dataPolicies.get

    Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

    Attribuer une règle de données

    Pour attribuer une règle de données directement à une colonne, procédez comme suit :

    SQL

    Pour associer une stratégie de données à une colonne, utilisez les instructions LDD CREATE TABLE, ALTER TABLE ADD COLUMN ou ALTER COLUMN SET OPTIONS.

    L'exemple suivant utilise l'instruction CREATE TABLE et définit des règles de données sur une colonne :

        CREATE TABLE myproject.table1 (
        name INT64 OPTIONS (data_policies=["{'name':'myproject.region-us.data_policy_name1'}",
                                          "{'name':'myproject.region-us.data_policy_name2'}"])
        );

    L'exemple suivant utilise ALTER COLUMN SET OPTIONS pour ajouter une règle de données à une colonne existante d'une table :

    ALTER TABLE myproject.table1
    ALTER COLUMN column_name SET OPTIONS (
      data_policies += ["{'name':'myproject.region-us.data_policy_name1'}",
                        "{'name':'myproject.region-us.data_policy_name2'}"]);

    API

    Pour attribuer une stratégie de données à une colonne, appelez la méthode patch sur la table et mettez à jour le schéma de la table avec les stratégies de données applicables.

    Limites

    L'attribution d'une stratégie de données directement à une colonne est soumise aux limites suivantes :

    • Vous devez utiliser la ressource v2.projects.locations.datapolicies.
    • Vous ne pouvez pas appliquer à la fois des tags avec stratégie et des règles relatives aux données à la même colonne.
    • Vous pouvez associer jusqu'à huit stratégies de données à une colonne.
    • Une table peut faire référence à un maximum de 1 000 règles de données uniques via ses colonnes.
    • Vous ne pouvez pas appliquer à la fois des tags avec stratégie et des règles relatives aux données à la même colonne.
    • Une requête peut faire référence à un maximum de 2 000 règles de données.
    • Vous ne pouvez supprimer une règle de données que si aucune colonne de table ne la référence.
    • Si un utilisateur ne dispose que du rôle maskedAccess, l'appel d'API tabledata.list échoue.
    • Les opérations de copie de tables protégées par des règles de données de colonne échouent si l'utilisateur n'a pas accès aux données brutes.
    • Les opérations de copie de tables interrégionales ne sont pas compatibles avec les tables protégées par des règles de données au niveau des colonnes.
    • Les règles de données au niveau des colonnes ne sont pas disponibles dans les régions BigQuery Omni.
    • L'ancien SQL échoue si la table cible comporte des règles de données au niveau des colonnes.
    • Les jobs de chargement ne sont pas compatibles avec les schémas spécifiés par l'utilisateur qui comportent des règles de données pour les colonnes.
    • Si vous écrasez une table de destination, le système supprime tous les tags avec stratégie existants de la table, sauf si vous utilisez l'option --destination_schema pour spécifier un schéma avec des règles de données de colonne.
    • Par défaut, le masquage des données n'est pas compatible avec les colonnes partitionnées ou en cluster. Il s'agit d'une limite générale du masquage des données, et non d'une limite spécifique aux règles relatives aux données de colonne. Le masquage de données sur des colonnes partitionnées ou en cluster peut augmenter considérablement les coûts des requêtes.