Restreindre l'accès avec la sécurité au niveau des colonnes de BigQuery

Cette page explique comment utiliser la sécurité au niveau des colonnes de BigQuery pour restreindre l'accès aux données BigQuery au niveau des colonnes. Pour obtenir des informations générales sur la sécurité au niveau des colonnes, consultez la page Présentation de la sécurité au niveau des colonnes de BigQuery.

Les instructions figurant sur cette page utilisent BigQuery et Data Catalog.

Mettez à jour le schéma de la table pour définir un tag avec stratégie sur une colonne. Vous pouvez utiliser Cloud Console, l'outil de ligne de commande bq et l'API BigQuery pour définir un tag avec stratégie sur une colonne. En outre, vous pouvez créer une table ainsi que spécifier le schéma et des tags avec stratégie en une seule opération,à l'aide des techniques suivantes :

  • Les commandes bq mk et bq load de l'outil de ligne de commande bq.
  • La méthode d'API tables.insert
  • Sur la page Créer une table de Cloud Console. Si vous utilisez Cloud Console, vous devez sélectionner Modifier sous forme de texte lorsque vous ajoutez ou modifiez le schéma.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Activez l'API Data Catalog.

    Activer l'API

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  7. Activez l'API Data Catalog.

    Activer l'API

  8. BigQuery est automatiquement activé dans les nouveaux projets. Pour activer BigQuery dans un projet préexistant, accédez à Activez l'API BigQuery.

    Activer l'API

    .

Rôles et autorisations

Il existe plusieurs rôles associés aux tags avec stratégie pour les utilisateurs et les comptes de service. Sur cette page, les rôles décrits correspondent aux rôles Administrateur de tags avec stratégie Data Catalog et Lecteur détaillé Data Catalog.

  • Les utilisateurs ou les comptes de service qui administrent les tags avec stratégie doivent disposer du rôle Administrateur de tags avec stratégie Data Catalog. Ce rôle permet de gérer les taxonomies et les tags avec stratégie, et d'accorder ou de supprimer des règles LCA.

  • Les utilisateurs ou les comptes de service qui interrogent des données protégées par la sécurité au niveau des colonnes doivent disposer du rôle Lecteur détaillé Data Catalog.

Pour plus d'informations sur tous les rôles associés aux tags avec stratégie, consultez la section Rôles utilisés avec la sécurité au niveau des colonnes.

Le rôle Administrateur de tags avec stratégie

Le rôle Administrateur de tags avec stratégie Data Catalog peut créer et gérer des tags avec stratégie de données.

Pour accorder le rôle Administrateur de tags avec stratégie Data Catalog, vous devez disposer des autorisations resourcemanager.projects.setIamPolicy sur le projet pour lequel vous accordez le rôle Administrateur de tags avec stratégie. Si vous ne disposez pas de l'autorisation resourcemanager.projects.setIamPolicy, demandez à un propriétaire de projet de vous l'accorder ou d'effectuer la procédure suivante.

  1. Dans Google Cloud Console, accédez à la page IAM.

    Ouvrir la page IAM

  2. Si l'adresse e-mail de l'utilisateur auquel attribuer le rôle figure dans la liste, sélectionnez-la et cliquez sur Modifier (icône en forme de crayon). Cliquez ensuite sur Ajouter un autre rôle.

    Si l'adresse e-mail de l'utilisateur ne figure pas dans la liste, cliquez sur Ajouter, puis saisissez l'adresse e-mail dans le champ Nouveaux comptes principaux.

  3. Cliquez sur la liste déroulante Sélectionner un rôle.

  4. Cliquez sur Data Catalog, puis sur Administrateur de tags avec stratégie.

  5. Cliquez sur Enregistrer.

Pour plus d'informations sur ce rôle, consultez la section Rôles utilisés avec la sécurité au niveau des colonnes.

Le rôle "Lecteur détaillé"

Les utilisateurs ayant besoin d'accéder à des données protégées par la sécurité au niveau des colonnes doivent disposer du rôle Lecteur détaillé Data Catalog. Ce rôle est généralement attribué dans le cadre de la définition d'un tag avec stratégie sur une colonne.

Pour pouvoir effectuer les étapes suivantes, vous devez disposer des autorisations resourcemanager.projects.setIamPolicy sur le projet pour lequel vous allez attribuer le rôle Lecteur détaillé. Si vous ne disposez pas de l'autorisation resourcemanager.projects.setIamPolicy, demandez à un propriétaire de projet de vous l'accorder ou d'effectuer la procédure suivante.

  1. Ouvrez la page IAM dans Cloud Console.

    Ouvrir la page IAM

  2. Si l'adresse e-mail de l'utilisateur auquel attribuer le rôle figure dans la liste, sélectionnez-la et cliquez sur Modifier (icône en forme de crayon). Cliquez ensuite sur Ajouter un autre rôle.

    Si l'adresse e-mail de l'utilisateur ne figure pas dans la liste, cliquez sur Ajouter, puis saisissez l'adresse e-mail dans le champ Nouveaux comptes principaux.

  3. Cliquez sur la liste déroulante Sélectionner un rôle.

  4. Cliquez sur Data Catalog, puis sur Lecteur détaillé.

  5. Cliquez sur Enregistrer.

Pour plus d'informations sur ce rôle, consultez la section Rôles utilisés avec la sécurité au niveau des colonnes.

Créer une taxonomie

Utilisez Data Catalog pour créer une taxonomie et ajouter des tags avec stratégie pour vos données.

Pour les étapes suivantes, le compte utilisateur doit disposer du rôle "Administrateur de tags avec stratégie Data Catalog".

  1. Ouvrez la page "Taxonomies Data Catalog" dans Cloud Console.

    Ouvrir la page "Taxonomies"

  2. Cliquez sur Créer une taxonomie.

  3. Sur la page New taxonomy (Nouvelle taxonomie) :

    1. Dans le champ Taxonomy name (Nom de la taxonomie), saisissez le nom de la taxonomie que vous souhaitez 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 Add child policy tag (Ajouter un tag avec stratégie enfant).
    7. Pour ajouter un tag avec stratégie au même niveau qu'un autre tag, cliquez sur l'icône +.

      Ci-dessous figure la page New taxonomy (Nouvelle taxonomie) pour un exemple de taxonomie.

      Page "Créer une taxonomie"

    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 Save (Enregistrer).

Afficher les tags avec stratégie

Pour afficher les tags avec stratégie que vous avez créés pour une taxonomie, procédez comme suit :

  1. Ouvrez la page "Taxonomies Data Catalog" dans Cloud Console.

    Ouvrir la page "Taxonomies"

  2. Cliquez sur la taxonomie dont vous souhaitez afficher les tags avec stratégie. La page Taxonomies affiche les tags avec stratégie de la taxonomie.

    Tags avec stratégie.

Afficher les autorisations sur les tags avec stratégie

  1. Ouvrez la page "Taxonomies Data Catalog" dans Cloud Console.

    Ouvrir la page "Taxonomies"

  2. Cliquez sur le nom de la taxonomie qui contient les tags avec stratégie pertinents.

  3. Sélectionnez les tags avec stratégie.

    Tag avec stratégie sélectionné.

  4. Si le panneau d'informations est masqué, cliquez sur Afficher le panneau d'informations.

  5. Dans le panneau d'informations, vous pouvez voir les comptes principaux et les autorisations pour les tags avec stratégie sélectionnés.

    Autorisations sur les tags avec stratégie.

Mettre à jour les autorisations sur les tags avec stratégie

  1. Ouvrez la page "Taxonomies Data Catalog" dans Cloud Console.

    Ouvrir la page "Taxonomies"

  2. Cliquez sur le nom de la taxonomie qui contient les tags avec stratégie pertinents.

  3. Sélectionnez les tags avec stratégie.

    Tag avec stratégie sélectionné.

  4. Si le panneau d'informations est masqué, cliquez sur Afficher le panneau d'informations.

  5. Dans le panneau d'informations, vous pouvez voir les comptes principaux et les autorisations pour les tags avec stratégie sélectionnés. Ajoutez le rôle Administrateur de tags avec stratégie aux comptes qui créeront et géreront des tags avec stratégie. Ajoutez le rôle Lecteur détaillé aux comptes qui doivent avoir accès aux données protégées par la sécurité au niveau des colonnes. Vous pouvez également utiliser ce panneau pour supprimer des rôles associés aux comptes ou modifier d'autres autorisations.

  6. Cliquez sur Enregistrer.

Rechercher des tags avec stratégie

Pour rechercher des tags avec stratégie dans Data Catalog, procédez comme suit :

  1. Ouvrez la page d'accueil de Data Catalog et recherchez des éléments de données à partir du champ Rechercher.

    Ouvrir la page d'accueil de Data Catalog

Pour plus d'informations sur la recherche d'éléments, tels que les tags avec stratégie dans Data Catalog, consultez la page Rechercher des éléments de données.

Récupérer le nom de ressource d'un tag avec stratégie

Vous avez besoin du nom de ressource d'un tag avec stratégie lorsque vous appliquez ce tag à une colonne.

Pour récupérer le nom de ressource du tag avec stratégie, procédez comme suit :

  1. Affichez les tags avec stratégie pour la taxonomie contenant le tag avec stratégie.

  2. Recherchez le tag avec stratégie dont vous souhaitez copier le nom de ressource.

  3. Cliquez sur l'icône Copier le nom de la ressource de tag avec stratégie.

    Copier le nom de la ressource.

Définir un tag avec stratégie sur une colonne

L'utilisateur ou le compte de service qui définit un tag avec stratégie a besoin de l'autorisation datacatalog.taxonomies.get. Cette autorisation est incluse dans le rôle Administrateur de tags avec stratégie et dans le rôle Lecteur de projet.

Console

Pour modifier un schéma à l'aide de Cloud Console, définissez le tag avec stratégie lorsque vous modifiez le schéma.

  1. Dans l'écran Current schema (Schéma actuel), sélectionnez votre colonne, puis cliquez sur Add policy tag (Ajouter un tag avec stratégie).
  2. 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.
  3. Cliquez sur Sélectionner. L'écran qui s'affiche devrait se présenter comme ceci :

    Modifier le schéma.

  4. Cliquez sur Enregistrer.

Sinon, lorsque vous créez une table ou modifiez un schéma à l'aide de Cloud Console, vous pouvez définir le tag avec stratégie au moment de la modification du schéma sous forme de texte.

  1. Pour Schema (Schéma), cliquez sur Edit as text (Modifier sous forme de texte).
  2. Modifiez le schéma 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.

    Modifier sous forme de texte.

bq

  1. Récupérez 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

Appelez tables.patch et utilisez la propriété schema 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.

Étant donné que la méthode tables.update remplace l'intégralité de la ressource de table, la méthode tables.patch est à privilégier.

Autres méthodes pour définir un tag avec stratégie sur une colonne

Vous pouvez également définir des tags avec stratégie dans les cas suivants :

  • Vous utilisez bq mk pour créer une table. Transmettez un schéma à utiliser pour créer la table.
  • Vous utilisez bq load pour charger des données dans une table. Transmettez un schéma à utiliser lorsque vous chargez la table.

Pour obtenir des informations générales sur le schéma, consultez la page Spécifier un schéma.

Afficher les tags avec stratégie dans le schéma

Vous pouvez afficher les tags avec stratégie appliqués à une table lorsque vous examinez le schéma de celle-ci. Vous pouvez afficher le schéma à l'aide de Cloud Console, de l'outil de ligne de commande bq, de l'API BigQuery et des bibliothèques clientes. Pour en savoir plus sur l'affichage du schéma, consultez la section Obtenir des informations sur la table.

Interroger les données avec la sécurité au niveau des colonnes

Si un utilisateur dispose d'un accès à un ensemble de données et possède le rôle "Lecteur détaillé Data Catalog", il peut accéder aux données des colonnes. L'utilisateur exécute une requête selon la procédure habituelle.

Si un utilisateur dispose d'un accès à un ensemble de données, mais ne possède pas le rôle "Lecteur détaillé Data Catalog", il ne peut pas accéder aux données des colonnes. Si cet utilisateur exécute SELECT *, il reçoit une erreur qui répertorie la ou les colonnes auxquelles il ne peut pas accéder. Pour résoudre cette erreur, vous pouvez procéder comme suit :

  • Modifier la requête pour exclure la ou les colonnes auxquelles l'utilisateur n'a pas accès. Par exemple, si l'utilisateur n'a pas accès à la colonne ssn, mais a accès aux colonnes restantes, il peut exécuter la requête suivante :

    SELECT * EXCEPT (ssn) FROM ...
    

    Dans l'exemple ci-dessus, la clause EXCEPT exclut la colonne ssn.

  • demander à un administrateur Data Catalog d'ajouter l'utilisateur en tant que lecteur détaillé Data Catalog à la classe de données correspondante. Le message d'erreur fournit le nom complet du tag avec stratégie auquel l'utilisateur aurait besoin d'accéder.

Supprimer un tag avec stratégie

Mettez à jour le schéma de la table pour supprimer un tag avec stratégie d'une colonne. Vous pouvez utiliser Cloud Console, l'outil de ligne de commande bq et la méthode d'API BigQuery pour supprimer un tag avec stratégie d'une colonne.

Console

Sur la page Current schema (Schéma actuel), sous Policy tags (Tags avec stratégie), cliquez sur X.

Supprimer le tag avec stratégie.

bq

  1. Récupérez le schéma et enregistrez-le 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 supprimer un tag avec stratégie d'une colonne.

    [
     ...
     {
       "name": "ssn",
       "type": "STRING",
       "mode": "REQUIRED",
       "policyTags": {
         "names": []
       }
     },
     ...
    ]
    
  3. Mettez à jour le schéma.

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

API

Appelez tables.patch et utilisez la propriété schema pour supprimer 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 supprimer un tag avec stratégie.

Étant donné que la méthode tables.update remplace l'intégralité de la ressource de table, la méthode tables.patch est à privilégier.

Appliquer le contrôle des accès

Pour appliquer le contrôle des accès, procédez comme suit :

  1. Ouvrez la page "Taxonomies Data Catalog" dans Cloud Console.

    Ouvrir la page "Taxonomies"

  2. Cliquez sur la taxonomie pour laquelle vous souhaitez appliquer la sécurité au niveau des colonnes.

  3. Si l'option Appliquer le contrôle des accès n'est pas déjà activée, cliquez sur Appliquer le contrôle des accès.

Désactiver le contrôle des accès

  1. Ouvrez la page "Taxonomies Data Catalog" dans Cloud Console.

    Ouvrir la page "Taxonomies"

  2. Cliquez sur la taxonomie pour laquelle vous souhaitez désactiver la sécurité au niveau des colonnes.

  3. Si l'option Appliquer le contrôle des accès est activée, cliquez sur Appliquer le contrôle des accès pour la désactiver.

Questions fréquentes

La sécurité au niveau des colonnes de BigQuery fonctionne-t-elle pour les vues ?

Oui. Les vues sont dérivées d'une table sous-jacente. La même sécurité au niveau des colonnes sur la table s'applique lorsque les colonnes protégées sont accessibles via une vue.

Notez qu'il existe deux types de vues dans BigQuery : les vues logiques et les vues autorisées. Les deux types de vues sont dérivés d'une table source et sont cohérents avec la sécurité au niveau des colonnes de la table.

La sécurité au niveau des colonnes fonctionne-t-elle sur les colonnes STRUCT ou RECORD ?

Oui. Vous ne pouvez appliquer des tags avec stratégie qu'à des champs feuille, et seuls ces champs seront protégés.

Puis-je utiliser l'ancien SQL et le SQL standard ?

Vous pouvez utiliser le langage SQL standard pour interroger des tables protégées par la sécurité au niveau des colonnes.

Toutes les requêtes en ancien SQL sont rejetées s'il existe des tags avec stratégie dans les tables cibles.

Les requêtes sont-elles journalisées dans Cloud Logging ?

La vérification des tags avec stratégie Cloud IAM est journalisée dans Logging. Pour en savoir plus, consultez la page Journaux d'audit pour une sécurité au niveau des colonnes.

La copie d'une table est-elle affectée par la sécurité au niveau des colonnes ?

Oui. Vous ne pouvez pas copier de colonnes si vous n'y avez pas accès.

Les opérations suivantes vérifient les autorisations au niveau des colonnes.

Lorsque je copie des données dans une nouvelle table, les tags avec stratégie sont-ils automatiquement propagés ?

Dans la plupart des cas, non. Si vous copiez les résultats d'une requête dans une nouvelle table, aucun tag avec stratégie n'est attribué automatiquement à la nouvelle table. La sécurité au niveau des colonnes n'est donc pas appliquée à la nouvelle table. Il en va de même si vous exportez des données vers Cloud Storage.

La seule exception est si vous utilisez une tâche de copie de table. Étant donné que les tâches de copie de table n'appliquent aucune transformation de données, les tags avec stratégie sont automatiquement propagés vers les tables cibles.

La sécurité au niveau des colonnes est-elle compatible avec le cloud privé virtuel ?

Oui, la sécurité au niveau des colonnes et le cloud privé virtuel sont compatibles et complémentaires.

Le cloud privé virtuel exploite Cloud IAM pour contrôler les accès aux services, tels que BigQuery et Cloud Storage. La sécurité au niveau des colonnes offre une sécurité précise des colonnes individuelles au sein de BigQuery.

Dépannage

Je ne vois pas les rôles Data Catalog

Si vous ne voyez pas les rôles tels que "Lecteur détaillé Data Catalog", il est possible que vous n'ayez pas activé l'API Data Catalog dans votre projet. Pour en savoir plus sur l'activation de l'API Data Catalog, consultez la section Avant de commencer. Les rôles Data Catalog doivent apparaître quelques minutes après l'activation de l'API Data Catalog.

Je ne peux pas afficher la page "Taxonomies"

Vous devez disposer d'autorisations supplémentaires pour afficher la page Taxonomies. Par exemple, le rôle Administrateur de tags avec stratégie Data Catalog a accès à la page Taxonomies.

J'ai appliqué des tags avec stratégie, mais cela ne semble pas fonctionner

Si vous continuez à recevoir des résultats de requête pour un compte qui ne devrait pas disposer d'un accès, il est possible que ce compte reçoive des résultats mis en cache. Plus précisément, si vous avez précédemment exécuté la requête avec succès, puis appliqué des tags avec stratégie, vous pouvez obtenir des résultats provenant du cache des résultats de requête. Par défaut, les résultats de requête sont mis en cache pendant 24 heures. La requête devrait échouer immédiatement si vous désactivez le cache des résultats. Pour plus d'informations sur la mise en cache, consultez la section Impact de la sécurité au niveau des colonnes.

En règle générale, la propagation des mises à jour de Cloud IAM prend environ 30 secondes. La propagation des modifications apportées à la hiérarchie des tags avec stratégie peut prendre jusqu'à 30 minutes.