Ce document vous explique comment effectuer les opérations suivantes dans Dataform :
- Accordez à Dataform l'accès requis.
- Contrôlez l'accès à Dataform avec IAM.
- Contrôler l'accès aux tables individuelles avec IAM
Avant de commencer
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Roles required to enable APIs
To enable APIs, you need the serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Roles required to enable APIs
To enable APIs, you need the serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles.
Accorder à Dataform l'accès requis
Cette section explique comment attribuer les rôles Identity and Access Management (IAM) dont les agents de service Dataform et les comptes de service personnalisés ont besoin pour exécuter des workflows dans BigQuery.
À propos des comptes de service personnalisés et des agents de service Dataform
Vous pouvez configurer des comptes de service personnalisés pour exécuter des workflows en votre nom de différentes manières :
- Au niveau du dépôt, pour exécuter tous les workflows d'un dépôt donné.
- Individuellement pour chaque configuration de workflow.
Lorsque vous créez un dépôt ou une configuration de workflow Dataform, vous pouvez sélectionner n'importe quel compte de service pour lequel vous disposez des autorisations d'usurpation d'identité. Vous devez configurer les autorisations "Agir en tant que" requises pour tous les comptes de service associés à vos ressources Dataform.
Lorsque vous créez votre premier dépôt Dataform, Dataform génère automatiquement un agent de service. Dataform utilise l'agent de service pour interagir avec BigQuery en votre nom.
L'ID de votre agent de service Dataform est au format suivant :
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Remplacez PROJECT_NUMBER par l'ID numérique de votre projetGoogle Cloud . Vous trouverez l'ID de votre projet Google Cloud dans le tableau de bord de la consoleGoogle Cloud . Pour en savoir plus, consultez Trouver le nom, le numéro et l'ID du projet.
Rôles requis pour les agents de service Dataform, les comptes de service personnalisés et les comptes Google
Les agents de service Dataform, les comptes de service personnalisés et les identifiants utilisateur d'un compte Google (aperçu) utilisés pour s'authentifier dans Dataform nécessitent les rôles IAM BigQuery suivants pour pouvoir exécuter des workflows dans BigQuery :
- Éditeur de données BigQuery (
roles/bigquery.dataEditor) sur les projets auxquels Dataform a besoin d'accéder en lecture et en écriture. Il s'agit généralement du projet hébergeant votre dépôt Dataform. - Lecteur de données BigQuery (
roles/bigquery.dataViewer) sur les projets auxquels Dataform doit avoir accès en lecture seule. - Utilisateur de job BigQuery (
roles/bigquery.jobUser) sur le projet hébergeant votre dépôt Dataform. - Propriétaire de données BigQuery (
roles/bigquery.dataOwner) si vous souhaitez interroger des ensembles de données BigQuery. - Rôles BigQuery pour le contrôle des accès au niveau des colonnes si vous souhaitez utiliser des tags avec stratégie BigQuery.
Attribuez également les rôles suivants à l'agent de service Dataform sur le compte de service effectif pour la configuration du workflow. Ces rôles sont nécessaires au fonctionnement du mode strict "Agir en tant que".
- Utilisateur du compte de service
(
roles/iam.serviceAccountUser) - Créateur de jetons du compte de service
(
roles/iam.serviceAccountTokenCreator)
Pour les versions automatiques du dépôt et les exécutions automatiques de workflows, accordez à l'agent de service Dataform l'autorisation iam.serviceAccounts.actAs sur le compte de service effectif.
Points à noter concernant la sécurité
L'attribution des rôles requis par Dataform à un agent de service Dataform, à un compte de service personnalisé ou à un compte Google d'utilisateur (aperçu) implique les considérations de sécurité suivantes :
Tout compte de service personnalisé auquel les rôles requis ont été attribués peut accéder à BigQuery ou Secret Manager dans le projet auquel il appartient, quels que soient les VPC Service Controls. Lorsque Dataform utilise un compte de service personnalisé pour exécuter des workflows, les requêtes Dataform sont traitées comme provenant du périmètre VPC Service Controls du projet contenant votre dépôt. Par conséquent, VPC Service Controls ne bloque pas la communication entre Dataform et d'autres services, tels que BigQuery ou Secret Manager, si ces ressources se trouvent dans le même périmètre de service.
Pour en savoir plus sur la gestion de ces limites de sécurité, consultez Configurer VPC Service Controls.
Tout utilisateur disposant de l'autorisation IAM
dataform.repositories.createpeut exécuter du code à l'aide de l'agent de service Dataform et de toutes les autorisations accordées à cet agent de service ou compte de service.Pour en savoir plus, consultez Remarques sur la sécurité pour les autorisations Dataform.
Pour maintenir un modèle d'autorisations sécurisé, vérifiez régulièrement les liaisons de rôle de l'agent de service Dataform. Pour obtenir des instructions de surveillance détaillées, consultez Surveiller les autorisations des agents de service avec Security Command Center.
Pour limiter les données qu'un utilisateur, un agent de service ou un compte de service peuvent lire ou écrire dans BigQuery, vous pouvez accorder des autorisations IAM BigQuery précises à certains ensembles de données ou tables BigQuery. Pour en savoir plus, consultez Contrôler l'accès aux ensembles de données et Contrôler l'accès aux tables et aux vues.
Pour empêcher les utilisateurs d'effectuer des actions en utilisant les identifiants d'un autre utilisateur pour son compte Google, les restrictions suivantes sont appliquées :
- Pour modifier une configuration de workflow avec les identifiants utilisateur d'un autre compte Google qui y est associé, vous devez associer les identifiants utilisateur de votre propre compte Google à la configuration de workflow ou modifier la configuration de workflow pour vous authentifier avec un compte de service personnalisé.
- Vous ne pouvez pas modifier le résultat de la compilation pour une configuration de version si des configurations de workflow référencent la configuration de version et que les identifiants d'un autre utilisateur de compte Google y sont associés.
Vous ne pouvez pas définir une configuration de workflow pour vous authentifier avec les identifiants d'utilisateur d'un compte Google et référencer une configuration de version avec un calendrier. Cette limite a les conséquences suivantes :
- Vous ne pouvez pas mettre à jour une configuration de version pour utiliser un calendrier si des configurations de workflow référencent la configuration de version et sont définies pour s'authentifier avec les identifiants utilisateur d'un compte Google.
- Vous ne pouvez pas créer de configuration de workflow qui s'authentifie avec les identifiants d'utilisateur d'un compte Google et pointe vers une configuration de version avec un calendrier.
- Vous ne pouvez pas créer ni mettre à jour une configuration de workflow pour utiliser les identifiants d'utilisateur d'un compte Google et pointer vers une configuration de version avec un calendrier.
Attribuer les rôles BigQuery requis
Pour accorder les rôles IAM BigQuery requis à votre agent de service Dataform, à un compte de service personnalisé que vous souhaitez utiliser dans Dataform ou à un compte Google d'utilisateur que vous souhaitez utiliser pour vous authentifier dans Dataform (aperçu), procédez comme suit :
Dans la console Google Cloud , accédez à la page Dataform.
Sélectionnez ou créez un dépôt.
Dans la console Google Cloud , accédez à la page IAM.
Cliquez sur Accorder l'accès.
Dans le champ Nouveaux comptes principaux, saisissez l'ID de l'agent de service, l'ID du compte de service ou l'adresse e-mail du compte Google de l'utilisateur (Aperçu).
Dans la liste Sélectionner un rôle, sélectionnez le rôle Utilisateur de job BigQuery.
Cliquez sur Ajouter un autre rôle, puis sélectionnez le rôle Éditeur de données BigQuery dans la liste Sélectionner un rôle.
Cliquez sur Ajouter un autre rôle, puis sélectionnez le rôle Lecteur de données BigQuery dans la liste Sélectionner un rôle.
Cliquez sur Enregistrer.
Attribuer les rôles requis pour les workflows automatiques
Pour utiliser un compte de service personnalisé dans Dataform, l'agent de service Dataform doit pouvoir accéder au compte de service personnalisé. Cela permet à Dataform d'exécuter vos workflows à l'aide des autorisations définies sur votre compte de service personnalisé au lieu de celles définies sur le compte de l'agent de service.
Pour accorder cet accès, vous devez attribuer le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) à l'agent de service Dataform en tant que compte principal. Cela permet à l'agent de service Dataform d'emprunter l'identité du compte de service en créant des identifiants éphémères appelés jetons. Ces jetons sont nécessaires pour que Dataform exécute des workflows à l'aide de l'identité du compte de service personnalisé.
Vous devez également attribuer le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) à l'agent de service Dataform. Cela permet à l'agent de service Dataform de démarrer de nouvelles exécutions de workflow automatiques pour les configurations de workflow exécutées par le compte de service personnalisé.
Pour accorder à l'agent de service Dataform l'accès à un compte de service personnalisé, procédez comme suit :
Dans la console Google Cloud , accédez à IAM > Comptes de service.
Sélectionnez le projet Google Cloud dans lequel se trouve votre compte de service personnalisé.
Sur la page Comptes de service pour le projet "PROJECT_NAME", sélectionnez votre compte de service personnalisé.
Accédez à Comptes principaux avec accès, puis cliquez sur Accorder l'accès.
Dans le champ Nouveaux comptes principaux, saisissez l'ID de votre agent de service Dataform.
L'ID de votre agent de service Dataform est au format suivant :
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.comDans la liste Sélectionner un rôle, sélectionnez les rôles Créateur de jetons de compte de service et Utilisateur du compte de service.
Cliquez sur Enregistrer.
Le compte de service personnalisé est maintenant prêt à être configuré dans votre dépôt Dataform.
Auditer les configurations des comptes de service
Cette section vous explique comment auditer vos ressources Dataform pour vous assurer que les comptes de service sont utilisés correctement et que les autorisations sont accordées comme il se doit. L'audit est particulièrement important lorsque vous utilisez des comptes de service personnalisés, car ils nécessitent des autorisations spécifiques pour que l'agent de service Dataform puisse fonctionner.
Lorsque vous utilisez un compte de service personnalisé pour une configuration de dépôt ou de workflow Dataform, vous devez vérifier que l'agent de service Dataform dispose du rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) sur le compte de service personnalisé. Ce rôle accorde l'autorisation iam.serviceAccounts.actAs, qui permet aux exécutions planifiées initiées par l'agent de service Dataform d'emprunter l'identité du compte de service personnalisé. Vérifiez également que l'agent de service Dataform dispose du rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) sur le compte de service effectif.
Vérifier les comptes de service du dépôt
Commencez par identifier les ressources dataform.Repository qui sont incluses dans la planification et l'exécution de Dataform. Vérifiez ensuite les configurations des comptes de service pour les dépôts concernés.
Utilisez l'inventaire des éléments cloud pour lister toutes les ressources de type
dataform.Repository. Pour en savoir plus, consultez Afficher vos composants.Pour chaque dépôt dans le résultat de l'inventaire des éléments cloud, vérifiez le champ
resource.data.labelspour déterminer s'il est dans le champ d'application. Le chemin d'accès exact peut varier légèrement en fonction du format d'exportation.Identifiez les dépôts hors champ en inspectant le mappage des libellés pour la clé
single-file-asset-type. La présence de cette clé indique que le dépôt est utilisé par une fonctionnalité BigQuery. Si la valeur estsqloudata_canvas, le dépôt peut être exclu des vérifications des autorisations du compte de service.Les dépôts restants qui ne disposent pas de cette clé ni de ces valeurs sont inclus dans le champ d'application des vérifications des autorisations du compte de service.
Pour chaque dépôt concerné, vérifiez le champ
resource.data.serviceAccountdans la sortie inventaire des éléments cloud pour déterminer si un compte de service personnalisé est configuré :- Si le champ
resource.data.serviceAccountest présent et que sa valeur est différente de l'adresse e-mail de l'agent de service Dataform du projet, cela signifie que le dépôt utilise un compte de service personnalisé. Si le champ
resource.data.serviceAccountest absent ou si sa valeur correspond à l'agent de service Dataform du projet, le dépôt utilise l'agent de service.
- Si le champ
Si un compte de service personnalisé est utilisé, vérifiez que l'agent de service Dataform dispose des rôles Utilisateur de compte de service (
roles/iam.serviceAccountUser) et Créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator) sur ce compte de service personnalisé.
Valider les comptes de service de configuration de workflow
L'utilisation de comptes de service personnalisés dédiés pour les configurations de workflow Dataform est une bonne pratique de sécurité, conforme au principe du moindre privilège.
Pour vérifier l'utilisation du compte de service pour dataform.WorkflowConfig resources, procédez comme suit :
Utilisez l'inventaire des éléments cloud pour lister toutes les ressources de type
dataform.WorkflowConfig.Pour chaque configuration de workflow, examinez la sortie de l'inventaire des éléments Cloud pour déterminer le compte de service effectif :
- Si le champ
resource.data.serviceAccountest présent, cette valeur correspond à l'adresse e-mail du compte de service explicitement définie dans la configuration du workflow. - Si le champ
resource.data.serviceAccountest absent, la configuration du workflow hérite du compte de service de son dépôt parent. Consultez la configuration du dépôt parent pour trouver le compte de service effectif.
- Si le champ
Pour savoir si un compte de service personnalisé est utilisé, comparez l'adresse e-mail du compte de service effectif à celle de l'agent de service Dataform du projet. Si elles sont différentes, cela signifie qu'un compte de service personnalisé est utilisé.
Si un compte de service personnalisé est utilisé, assurez-vous que l'agent de service Dataform dispose des rôles Utilisateur du compte de service (
roles/iam.serviceAccountUser) et Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) sur ce compte de service personnalisé. Ces autorisations permettent à l'agent de service Dataform de lancer des exécutions de workflow en empruntant l'identité du compte de service personnalisé.
Surveiller les autorisations de l'agent de service avec Security Command Center
Pour garantir le respect continu du principe du moindre privilège, surveillez activement votre projet dans Security Command Center afin d'identifier les résultats liés aux comptes de service et aux agents de service disposant de trop de droits d'accès.
Pour savoir comment examiner et appliquer les résultats de correction dans Security Command Center, consultez Résultats de l'outil de recommandation IAM et Examiner les résultats concernant l'identité dans la console.
Lorsque vous corrigez un résultat SERVICE_AGENT_GRANTED_BASIC_ROLE pour un agent de service Dataform, remplacez le rôle trop permissif par un rôle prédéfini disposant des autorisations minimales requises, limité à la ressource spécifique. Par exemple, attribuez le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) sur un compte de service spécifique.
Contrôler l'accès à Dataform avec IAM
Cette section décrit les options de contrôle des accès pour Dataform et vous explique comment afficher et attribuer des rôles Dataform. Dataform utilise Identity and Access Management (IAM) pour le contrôle des accès. Pour en savoir plus sur les rôles et les autorisations dans IAM, consultez l'index des rôles et autorisations IAM.
Rôles Dataform prédéfinis
Le tableau suivant répertorie les rôles prédéfinis qui vous donnent accès aux ressources Dataform :
| Role | Permissions |
|---|---|
Dataform Admin( |