Contrôler l'accès à des tables individuelles avec IAM

Ce document explique comment accorder et révoquer des rôles IAM (Identity and Access Management) pour BigQuery pour des tables et des vues Dataform individuelles.

Dataform et BigQuery utilisent IAM pour le contrôle des accès. Pour en savoir plus sur les rôles et les autorisations Dataform dans IAM, consultez la page Contrôler les accès avec IAM.

Lorsque Dataform exécute une table ou une vue, il crée la ressource dans BigQuery. Lors du développement dans Dataform, vous pouvez attribuer des rôles BigQuery à des tables et des vues individuelles pour contrôler leur accès dans BigQuery après l'exécution.

Pour en savoir plus sur l'attribution et la révocation des accès à des ressources, consultez la section Accorder l'accès à une ressource.

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. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activer les API BigQuery and Dataform.

    Activer les 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. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  7. Activer les API BigQuery and Dataform.

    Activer les API

Attribuer des rôles BigQuery à une table ou une vue

Vous pouvez attribuer des rôles BigQuery à une table ou à une vue dans Dataform en ajoutant un bloc post_operations avec l'instruction DCL GRANT au fichier de définition .sqlx de la table ou de la vue sélectionnée.

Pour attribuer des rôles BigQuery à une table ou une vue sélectionnée, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Dataform.

    Accéder à la page Dataform

  2. Sélectionnez un dépôt, puis un espace de travail.

  3. Dans le volet Fichiers, développez le répertoire definitions/.

  4. Sélectionnez le fichier de définition .sqlx de la table ou de la vue à laquelle vous souhaitez accorder l'accès.

  5. Dans le fichier, saisissez l'extrait de code suivant :

    post_operations {
        GRANT "ROLE_LIST"
        ON ${self()}
        TO "USER_LIST"
    }
    

    Remplacez les éléments suivants :

    • ROLE_LIST: rôle BigQuery ou liste de rôles BigQuery séparés par une virgule que vous souhaitez accorder
    • USER_LIST: liste d'utilisateurs séparés par une virgule auxquels le rôle est attribué

      Pour obtenir la liste des formats valides, consultez user_list.

  6. (Facultatif) Cliquez sur Format.

  7. Exécuter la table ou la vue

  8. Si vous avez accordé l'accès à une table incrémentielle, supprimez l'instruction GRANT du fichier de définition de table après la première exécution.

L'exemple de code suivant montre le rôle Lecteur BigQuery attribué à un utilisateur sur une table:

config { type: "table" }

SELECT ...

post_operations {
  GRANT `roles/bigquery.dataViewer` ON ${self()} TO "user:222larabrown@gmail.com"
}

Révoquer des rôles BigQuery à partir d'une table ou d'une vue

Vous pouvez révoquer des rôles BigQuery d'une table ou d'une vue en ajoutant un bloc post_operations avec l'instruction DCL REVOKE au fichier de définition .sqlx de la table ou de la vue sélectionnée.

Pour révoquer les rôles BigQuery d'une table ou d'une vue sélectionnée, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Dataform.

    Accéder à la page Dataform

  2. Sélectionnez un dépôt, puis un espace de travail.

  3. Dans le volet Fichiers, développez le répertoire definitions/.

  4. Sélectionnez le fichier de définition .sqlx de la table ou de la vue pour laquelle vous souhaitez révoquer l'accès.

  5. Dans le bloc post_operations, saisissez l'instruction REVOKE suivante:

        REVOKE "ROLE_LIST"
        ON ${self()}
        TO "USER_LIST"
    

    Remplacez les éléments suivants :

    • ROLE_LIST: rôle BigQuery ou liste de rôles BigQuery séparés par une virgule que vous souhaitez révoquer.
    • USER_LIST: liste d'utilisateurs séparés par une virgule pour lesquels le rôle est révoqué. Pour obtenir la liste des formats valides, consultez user_list.
  6. Pour révoquer l'accès accordé dans une instruction GRANT du fichier, remplacez l'instruction GRANT par une instruction REVOKE.

    Removing the `GRANT` statement without adding the `REVOKE` statement
    does not revoke access.
    
  7. (Facultatif) Cliquez sur Format.

  8. Exécuter la table ou la vue

  9. Si vous avez révoqué l'accès à une table incrémentielle, supprimez l'instruction REVOKE du fichier de définition de table après la première exécution.

L'exemple de code suivant montre le rôle Lecteur BigQuery révoqué pour un utilisateur sur une table:

config { type: "table" }

SELECT ...

post_operations {
  REVOKE `roles/bigquery.dataViewer` ON ${self()} FROM "user:222larabrown@gmail.com"
}

Gérez collectivement les rôles BigQuery pour les tables et les vues

Pour contrôler l'accès de BigQuery à des tables et des vues individuelles dans un emplacement unique, vous pouvez créer un fichier type: "operations" dédié avec des instructions DCL GRANT et REVOKE.

Pour gérer l'accès aux table BigQuery dans un seul fichier type: "operations", procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Dataform.

    Accéder à la page Dataform

  2. Sélectionnez un dépôt, puis un espace de travail.

  3. Dans le volet Fichiers, à côté de definitions/, cliquez sur le menu Plus.

  4. Cliquez sur Créer un fichier.

  5. Dans le champ Ajouter un chemin d'accès au fichier, saisissez le nom du fichier suivi de .sqlx après definitions/. Exemple : definitions/table-access.sqlx.

    Les noms de fichiers ne peuvent contenir que des chiffres, des lettres, des traits d'union et des traits de soulignement.

  6. Cliquez sur Créer un fichier.

  7. Dans le volet Fichiers, développez le répertoire definitions/, puis sélectionnez le fichier que vous venez de créer.

  8. Dans le fichier, saisissez l'extrait de code suivant :

      config { type: "operations" }
    
      GRANT "ROLE_LIST" ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
    
      REVOKE "ROLE_LIST" ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
    

    Remplacez les éléments suivants :

    • ROLE_LIST: rôle BigQuery ou liste de rôles BigQuery séparés par une virgule que vous souhaitez accorder ou révoquer.
    • RESOURCE_TYPE : type de la ressource (TABLE ou VIEW).
    • RESOURCE_NAME: nom de la table ou de la vue.
    • USER_LIST: liste des utilisateurs, séparés par une virgule, auxquels le rôle est accordé ou révoqué. Pour obtenir la liste des formats valides, consultez user_list.
  9. Ajoutez les instructions GRANT et REVOKE si nécessaire.

    1. Pour révoquer l'accès accordé dans une instruction GRANT du fichier, remplacez l'instruction GRANT par une instruction REVOKE.

      Supprimer l'instruction GRANT sans ajouter l'instruction REVOKE ne révoque pas l'accès.

  10. (Facultatif) Cliquez sur Format.

  11. Exécutez le fichier après chaque mise à jour.

    1. Si vous avez accordé ou révoqué l'accès à une table incrémentielle, supprimez l'instruction GRANT ou REVOKE du fichier après sa première exécution.

Étapes suivantes