Ce document vous explique comment effectuer les opérations suivantes dans Dataform :
- Accordez à Dataform l'accès requis.
- Contrôler l'accès à Dataform avec IAM
- Contrôler l'accès à des tables spécifiques 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.
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 accorder les rôles IAM (Identity and Access Management) 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 l'une des manières suivantes :
- 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 d'autorisations d'emprunt d'identité. Vous devez configurer les autorisations d'emprunt d'identité 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.
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, les comptes de service personnalisés et les comptes Google Dataform
Les agents de service Dataform, les comptes de service personnalisés et les identifiants utilisateur d'un compte Google utilisé 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 pour lesquels Dataform a besoin d'un accès 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 pour lesquels Dataform a besoin d'un 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 requis pour que le mode d'emprunt d'identité strict fonctionne.
- Utilisateur du compte de service (
roles/iam.serviceAccountUser) - Créateur de jetons du compte de service (
roles/iam.serviceAccountTokenCreator)
Pour les versions de dépôt automatiques et les exécutions de workflow automatiques, accordez à l'agent de service Dataform l'autorisation iam.serviceAccounts.actAs sur le compte de service effectif.
Pour activer l'enrichissement des métadonnées dans Knowledge Catalog et l'intégration du tableau de données sur la qualité des données, attribuez le rôle Éditeur de catalogue Dataplex (roles/dataplex.catalogEditor) sur le projet ou le groupe d'entrées @bigquery aux comptes de service personnalisés ou aux comptes Google utilisés pour l'exécution du workflow.
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 au compte Google d'un utilisateur s'accompagne des considérations de sécurité suivantes :
Tout compte de service personnalisé auquel les rôles requis ont été attribués peut accéder à BigQuery, Secret Manager ou Knowledge Catalog dans le projet auquel il appartient, indépendamment de 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 qui contient votre dépôt. Par conséquent, VPC Service Controls ne bloque pas la communication entre Dataform et d'autres services, tels que BigQuery, Secret Manager ou Knowledge Catalog, 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 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é, auditez régulièrement les liaisons de rôles 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 peut lire ou écrire dans BigQuery, vous pouvez accorder des autorisations IAM BigQuery précises à des ensembles de données ou des tables BigQuery sélectionnés. 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 lorsqu'ils utilisent les identifiants du compte Google d'un autre utilisateur, les restrictions suivantes sont appliquées :
- Pour modifier une configuration de workflow à laquelle sont associés les identifiants d'un autre compte Google, vous devez associer les identifiants de votre propre compte Google à la configuration du workflow ou modifier la configuration du workflow pour vous authentifier avec un compte de service personnalisé.
- Vous ne pouvez pas modifier un résultat de compilation pour une configuration de version si des configurations de workflow font référence à la configuration de version à laquelle sont associés les identifiants d'un autre utilisateur de compte Google.
Vous ne pouvez pas définir une configuration de workflow pour l'authentification avec les identifiants d'un compte Google et référencer une configuration de version avec une planification. Cette limitation a les conséquences suivantes :
- Vous ne pouvez pas mettre à jour une configuration de version pour utiliser une planification si des configurations de workflow faisant référence à la configuration de version sont configurées pour s'authentifier avec les identifiants d'un utilisateur du compte Google.
- Vous ne pouvez pas créer de configuration de workflow qui s'authentifie avec les identifiants d'un compte Google et qui pointe vers une configuration de version avec une planification.
- Vous ne pouvez pas créer ni mettre à jour une configuration de workflow pour utiliser les identifiants d'un compte Google et pointer vers une configuration de version avec une planification.
Pour interdire l'utilisation des identifiants d'utilisateur final d'un compte Google, un administrateur de l'organisation peut créer une contrainte de règle d'administration personnalisée qui refuse la définition de
end_user_auth_config. Pour en savoir plus, consultez Créer des contraintes de règles d'administration personnalisées.
Attribuer les rôles BigQuery requis
Pour attribuer les rôles IAM BigQuery requis à votre agent de service Dataform, à un compte de service personnalisé que vous souhaitez utiliser dans Dataform ou au compte Google d'un utilisateur que vous souhaitez utiliser pour vous authentifier dans Dataform, 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.
Dans la liste Sélectionner un rôle, choisissez le rôle Utilisateur de job BigQuery.
Cliquez sur Ajouter un autre rôle, puis choisissez le rôle Éditeur de données BigQuery dans la liste Sélectionner un rôle.
Cliquez sur Ajouter un autre rôle, puis choisissez 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é plutôt que 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 requis 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.Dans la liste Sélectionner un rôle, sélectionnez les rôles Créateur de jetons du 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 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 de manière appropriée. 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 un dépôt ou une configuration 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
Tout d'abord, identifiez les éléments dataform.Repository qui sont concernés par la planification et l'exécution de Dataform. Ensuite, vérifiez les configurations des comptes de service pour ces 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 concerné. Le chemin d'accès exact peut varier légèrement en fonction de votre format d'exportation.Identifiez les dépôts hors champ en inspectant la carte 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 ne disposant pas de cette clé ou 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 le résultat de l'inventaire des éléments cloud afin de 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, 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 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é.
Vérifier 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 le résultat de l'inventaire des éléments cloud afin de 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éfini 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. Vérifiez la configuration du dépôt parent pour trouver le compte de service effectif.
- Si le champ
Déterminez si un compte de service personnalisé est utilisé en comparant l'adresse e-mail du compte de service effectif à l'adresse e-mail de l'agent de service Dataform du projet. S'ils sont différents, 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 des agents 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 de détecter les résultats liés aux comptes de service et aux agents de service disposant de privilèges excessifs.
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 d'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 accorder 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 liste les rôles prédéfinis qui vous donnent accès aux ressources Dataform :
| Role | Permissions |
|---|---|
Dataform Admin( Full access to all Dataform resources. |
|
Dataform Editor( Edit access to Workspaces and Repositories. |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
Code Commenter Beta( Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources. |
|
Code Creator( Access only to private and shared code resources. The permissions in the Code Creator let you create and list code in Dataform, and access only the code that you created and code that was explicitly shared with you. |
|
Code Editor( Edit access code resources. |
|
Code Owner( Full access to code resources. |
|
Code Scheduler Beta( Access for scheduling workflows and releases. |
|
Code Viewer( Read-only access to all code resources. |
|
Team Folder Commenter Beta( View and comment access to a team folder and its contents. |
|
Team Folder Contributor( Edit access to a team folder and its contents. |
|
Team Folder Creator( Access to create new team folders. |
|
Team Folder Owner( Full access to a team folder and its contents. Can share the team folder and its contents. |
|
Team Folder Viewer( View access to a team folder and its contents. |
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Rôles Dataform personnalisés
Les rôles personnalisés peuvent inclure toutes les autorisations que vous spécifiez. Vous pouvez créer des rôles personnalisés incluant des autorisations permettant d'effectuer des opérations d'administration spécifiques, telles que la création d'espaces de travail de développement ou la création de fichiers et de répertoires dans un espace de travail de développement. Pour créer des rôles personnalisés, consultez Créer et gérer des rôles personnalisés.
Remarques sur la sécurité pour les autorisations Dataform
Tout utilisateur disposant de l'autorisation dataform.repositories.create peut exécuter du code dans BigQuery à l'aide d'un compte de service personnalisé et de toutes les autorisations accordées à ce compte de service. Cela inclut l'exécution de workflows Dataform et la possibilité de gérer les métadonnées dans Knowledge Catalog.
Étant donné que le mode d'emprunt d'identité strict est appliqué à tous les dépôts, l'autorisation dataform.repositories.create exige implicitement que l'utilisateur dispose d'autorisations d'emprunt d'identité sur le compte de service personnalisé pour l'exécution des workflows suivants. Cela garantit que seuls les utilisateurs disposant de droits d'emprunt d'identité explicites peuvent exécuter du code à l'aide de l'identité du compte de service.
L'autorisation dataform.repositories.create est incluse dans les rôles IAM suivants :
- Administrateur BigQuery (
roles/bigquery.admin) - Utilisateur de job BigQuery (
roles/bigquery.jobUser) - Utilisateur BigQuery Studio (
roles/bigquery.studioUser) - Utilisateur BigQuery (
roles/bigquery.user) - Créateur de code (
roles/dataform.codeCreator) - Éditeur de code (
roles/dataform.codeEditor) - Propriétaire de code (
roles/dataform.codeOwner) - Utilisateur Colab Enterprise (
roles/aiplatform.colabEnterpriseUser) - Administrateur Dataform (
roles/dataform.admin)
Pour limiter les données qu'un utilisateur ou un compte de service peut lire ou écrire dans BigQuery, vous pouvez accorder des autorisations IAM BigQuery précises à des ensembles de données ou des tables BigQuery spécifiques. 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 en savoir plus sur les comptes de service personnalisés ainsi que sur les rôles et les autorisations dont ils ont besoin, consultez Accorder l'accès requis à Dataform.
Accès aux secrets lors de l'installation du package
Si vous configurez des packages NPM privés à l'aide de secrets Secret Manager, ces secrets peuvent être accessibles aux utilisateurs autorisés à modifier le code ou à déclencher la compilation du code à partir d'un commit Git spécifique dans le dépôt.
Lors de l'installation du package (déclenchée lors de l'installation manuelle de packages dans un espace de travail ou lors de la compilation du code à partir d'un commit Git spécifique), le client NPM lit les identifiants du fichier .npmrc et transmet le jeton d'authentification au registre NPM configuré. Un utilisateur autorisé à modifier le fichier .npmrc dans son espace de travail peut configurer les paramètres d'accès aux secrets en redirigeant les requêtes de registre vers un serveur externe.
Cette installation et l'exposition potentielle des jetons peuvent se produire dans les scénarios suivants :
Installation de package d'espace de travail : déclenchée manuellement dans un espace de travail. Pour cela, vous devez disposer des autorisations de modification de l'espace de travail, qui se trouvent dans les rôles Éditeur Dataform (
roles/dataform.editor) ou Éditeur de code Dataform (roles/dataform.codeEditor).Compilation d'un commitish Git : déclenchée automatiquement lors de la création d'un résultat de compilation pour un commitish Git, tel qu'une branche, un tag ou un SHA de commit, dans le dépôt. Ce scénario nécessite l'autorisation
dataform.compilationResults.create.
Pour sécuriser vos identifiants, nous vous recommandons de procéder comme suit :
N'accordez des rôles avec des autorisations de modification de dépôt (comme "Éditeur de code Dataform") ou des autorisations de compilation (comme "Lecteur de code Dataform") qu'aux utilisateurs de confiance.
Limitez les dépôts Git distants auxquels Dataform peut se connecter à l'aide de règles d'administration. Pour en savoir plus, consultez Restreindre les dépôts distants.
Limitez l'accès de l'agent de service Dataform à Secret Manager aux seuls secrets nécessaires.
Interdire l'utilisation des identifiants de l'utilisateur final à l'aide de contraintes de règles d'administration personnalisées qui refusent de définir
end_user_auth_config. Pour en savoir plus, consultez Créer des contraintes de règles d'administration personnalisées.
Afficher les rôles Dataform
Dans la console Google Cloud , procédez comme suit :
Accédez à la page IAM et administration > Rôles.
Dans le champ Filtre, sélectionnez Utilisé dans, saisissez
Dataform, puis appuyez sur Entrée.Cliquez sur l'un des rôles listés pour afficher ses autorisations dans le volet de droite.
Par exemple, le rôle "Administrateur Dataform" dispose d'un accès complet à toutes les ressources Dataform.
Consultez la page Attribuer un rôle pour en savoir plus sur l'attribution d'un rôle à un projet. Cette procédure concerne aussi bien l'attribution de rôles prédéfinis que de rôles personnalisés.
Contrôler l'accès à un dépôt individuel
Pour contrôler l'accès à Dataform avec des autorisations précises, vous pouvez définir des rôles IAM Dataform sur des dépôts individuels à l'aide de la requête repositories.setIamPolicy de l'API Dataform.
Pour définir des rôles IAM Dataform sur un dépôt Dataform individuel, procédez comme suit :
Dans le terminal, transmettez la requête
repositories.setIamPolicyde l'API Dataform avec une règle d'accès.Dans la stratégie, associez un utilisateur, un groupe, un domaine, un agent de service ou un compte de service à un rôle sélectionné au format suivant :
{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "TYPE:IDENTIFIER", ] }, ], } }Remplacez les éléments suivants :
ROLE: rôle IAM Dataform que vous souhaitez accorder sur le dépôt.TYPE:user,group,domainouserviceAccount.IDENTIFIER: utilisateur, groupe, domaine ou compte de service auquel vous souhaitez attribuer le rôle.
Sur la page IAM, assurez-vous que tous les utilisateurs peuvent afficher la liste complète des dépôts Dataform via un rôle Dataform disposant de l'autorisation
dataform.repositories.list.Dans IAM, assurez-vous que seuls les utilisateurs qui ont besoin d'un accès complet à tous les dépôts Dataform se voient attribuer le rôle d'administrateur Dataform sur tous les dépôts.
La commande suivante transmet la requête API Dataform repositories.setIamPolicy qui attribue le rôle d'éditeur Dataform sur le dépôt sales à un seul utilisateur :
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.editor", "members": ["user:sasha@examplepetstore.com"]}] }}' "https://dataform.googleapis.com/v1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Accorder un accès public à un dépôt
Vous pouvez accorder un accès public à un dépôt Dataform en attribuant des rôles IAM au compte principal allAuthenticatedUsers, pour le dépôt.
Lorsque vous attribuez un rôle IAM au compte principal allAuthenticatedUsers, ce rôle est accordé aux comptes de service et à tous les utilisateurs sur Internet qui se sont authentifiés avec un compte Google. Cela englobe les comptes qui ne sont pas associés à un compte Google Workspace ou à un domaine Cloud Identity, tels que des comptes Gmail personnels. Les utilisateurs non authentifiés, tels que les visiteurs anonymes, ne sont pas pris en compte. Pour en savoir plus, consultez la section Tous les utilisateurs authentifiés.
Par exemple, lorsque vous attribuez le rôle Lecteur Dataform au compte principal allAuthenticatedUsers pour le dépôt sales, tous les comptes de service et tous les utilisateurs sur Internet qui se sont authentifiés avec un compte Google bénéficient d'un accès en lecture seule à toutes les ressources de code sales.
Pour accorder un accès public à un dépôt Dataform, procédez comme suit :
Dans le terminal, transmettez la requête
repositories.setIamPolicyde l'API Dataform avec une règle d'accès.Dans la stratégie, liez le compte principal
allAuthenticatedUsersà un rôle sélectionné au format suivant :{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }Remplacez
ROLEpar un rôle IAM Dataform que vous souhaitez attribuer à tous les utilisateurs authentifiés.
La commande suivante transmet la requête API Dataform repositories.setIamPolicy qui attribue le rôle de lecteur Dataform sur le dépôt sales à allAuthenticatedUsers :
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.viewer", "members": ["allAuthenticatedUsers"]}] }}' "https://dataform.googleapis.com/v1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Empêcher l'accès public aux dépôts
Pour vous assurer qu'aucun accès n'est accordé au public sur un dépôt Dataform, vous pouvez limiter le compte principal allAuthenticatedUsers dans votre projet.
Pour limiter allAuthenticatedUsers dans votre projet, vous pouvez définir la règle iam.allowedPolicyMemberDomains et supprimer allAuthenticatedUsers de la liste des valeurs autorisées (allowed_values).
Lorsque vous définissez une limitation de allAuthenticatedUsers dans la règle iam.allowedPolicyMemberDomains, le compte principal allAuthenticatedUsers ne peut être utilisé dans aucune règle IAM de votre projet, ce qui empêche d'accorder un accès public à toutes les ressources, y compris les dépôts Dataform.
Pour en savoir plus sur la règle iam.allowedPolicyMemberDomains et les instructions pour la définir, consultez la section Restreindre les identités par domaine.
Fédération d'identité de personnel dans Dataform
La fédération des identités des employés vous permet d'utiliser un fournisseur d'identité (IdP) externe pour authentifier et autoriser les utilisateurs à accéder aux services Google Cloud avec IAM.
Dataform est compatible avec la fédération d'identité de personnel sans aucune limite connue.
Contrôler l'accès à des tables individuelles avec IAM
Cette section explique comment accorder et révoquer des rôles IAM BigQuery pour des tables et des vues Dataform individuelles.
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'octroi et la révocation de l'accès aux ressources, consultez Accorder l'accès à une ressource.
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 LDD 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 :
Dans la console Google Cloud , accédez à la page Dataform.
Sélectionnez un dépôt, puis un espace de travail.
Dans le volet Fichiers, développez le répertoire
definitions/.Sélectionnez le fichier de définition
.sqlxde la table ou de la vue à laquelle vous souhaitez accorder l'accès.Dans le fichier, saisissez l'extrait de code suivant :
post_operations { GRANT "ROLE_LIST" ON "RESOURCE_TYPE" ${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 attribuer.
RESOURCE_TYPE :
TABLEouVIEW.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.
Facultatif : cliquez sur Format.
Exécutez la table ou la vue.
Si vous avez accordé l'accès à une table incrémentielle, supprimez l'instruction
GRANTdu fichier de définition de la table après la première exécution.
L'exemple de code suivant montre le rôle de lecteur BigQuery attribué à un utilisateur sur une table :
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
Révoquer des rôles BigQuery 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 des rôles BigQuery d'une table ou d'une vue sélectionnée, procédez comme suit :
Dans la console Google Cloud , accédez à la page Dataform.
Sélectionnez un dépôt, puis un espace de travail.
Dans le volet Fichiers, développez le répertoire
definitions/.Sélectionnez le fichier de définition
.sqlxde la table ou de la vue dont vous souhaitez révoquer l'accès.Dans le bloc
post_operations, saisissez l'instructionREVOKEsuivante :REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} FROM "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.
- RESOURCE_TYPE :
TABLEouVIEW. - USER_LIST : liste d'utilisateurs séparés par des virgules dont le rôle est révoqué. Pour obtenir la liste des formats valides, consultez user_list.
Pour révoquer l'accès accordé dans une instruction
GRANTdu fichier, remplacez l'instructionGRANTpar une instructionREVOKE.Facultatif : cliquez sur Format.
Exécutez la table ou la vue.
Si vous avez révoqué l'accès à une table incrémentielle, supprimez l'instruction
REVOKEdu fichier de définition de la table après la première exécution.
L'exemple de code suivant montre le rôle de lecteur BigQuery révoqué pour un utilisateur sur une table :
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
Gérer collectivement les rôles BigQuery pour les tables et les vues
Pour contrôler l'accès BigQuery à des tables et des vues individuelles à un seul emplacement, vous pouvez créer un fichier type: "operations" dédié avec les instructions LDC GRANT et REVOKE.
Pour gérer l'accès aux table BigQuery dans un seul fichier type: "operations", procédez comme suit :
Dans la console Google Cloud , accédez à la page Dataform.
Sélectionnez un dépôt, puis un espace de travail.
Dans le volet Fichiers, à côté de
definitions/, cliquez sur le menu
Plus.Cliquez sur Créer un fichier.
Dans le champ Ajouter un chemin d'accès au fichier, saisissez le nom du fichier suivi de
.sqlxaprèsdefinitions/. Par exemple,definitions/table-access.sqlx.Les noms de fichiers ne peuvent inclure que des chiffres, des lettres, des traits d'union et des traits de soulignement.
Cliquez sur Créer un fichier.
Dans le volet Fichiers, développez le répertoire
definitions/, puis sélectionnez le fichier que vous venez de créer.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 attribuer ou révoquer.
- RESOURCE_TYPE :
TABLEouVIEW. - RESOURCE_NAME : nom de la table ou de la vue.
- USER_LIST : liste d'utilisateurs séparés par une virgule auxquels le rôle est attribué ou révoqué. Pour obtenir la liste des formats valides, consultez user_list.
Ajoutez des instructions
GRANTetREVOKEsi nécessaire.Pour révoquer l'accès accordé dans une instruction
GRANTdu fichier, remplacez l'instructionGRANTpar une instructionREVOKE.La suppression de l'instruction
GRANTsans l'ajout de l'instructionREVOKEne révoque pas l'accès.
Facultatif : cliquez sur Format.
Exécutez le fichier après chaque mise à jour.
- Si vous avez accordé ou révoqué l'accès à une table incrémentielle, supprimez l'instruction
GRANTouREVOKEdu fichier après la première exécution de l'instruction.
- Si vous avez accordé ou révoqué l'accès à une table incrémentielle, supprimez l'instruction
Utiliser l'API Config pour personnaliser le comportement d'IAM
Vous pouvez utiliser la méthode d'API Dataform projects.locations.updateConfig pour personnaliser le comportement d'IAM et renforcer la sécurité.
Attribuer un rôle spécifique lors de la création de la ressource
Lorsque vous définissez le champ setAuthenticatedUserAdmin sur true dans la ressource projects.locations.repositories, Dataform attribue automatiquement le rôle d'administrateur Dataform (roles/dataform.admin) à l'utilisateur qui crée le dépôt. De plus, Dataform attribue le rôle d'administrateur Dataform sur le nouvel espace de travail à tout utilisateur qui crée un espace de travail dans ce dépôt.
Vous pouvez utiliser le champ creator_role (preview) dans la méthode projects.locations.updateConfig pour ignorer ce comportement. Si setAuthenticatedUserAdmin est défini sur true et que vous configurez le champ creator_role avec un rôle personnalisé, Dataform accorde le rôle personnalisé au lieu du rôle dataform.admin par défaut.
Implémenter des autorisations de planification améliorées
Pour exiger que les utilisateurs disposent d'autorisations explicites pour planifier des workflows Dataform, définissez le champ enable_project_checks_for_scheduling sur true dans la méthode projects.locations.updateConfig.
Lorsque vous activez ces vérifications pour la planification, l'utilisateur doit disposer des autorisations suivantes :
Pour créer une configuration de workflow :
- L'autorisation
dataform.workflowConfigs.createsur le projet, accordée par le rôle Planificateur de code (roles/dataform.codeScheduler). - L'autorisation
dataform.repositories.scheduleWorkflowsur le dépôt, accordée par le rôle Administrateur Dataform (roles/dataform.admin).
- L'autorisation
Pour créer une configuration de version :
- L'autorisation
dataform.releaseConfigs.createsur le projet, accordée par le rôle Planificateur de code (roles/dataform.codeScheduler). - L'autorisation
dataform.repositories.scheduleReleasesur le dépôt, accordée par le rôle Administrateur Dataform (roles/dataform.admin).
- L'autorisation
Activer les espaces de travail privés
Pour restreindre l'accès à l'espace de travail Dataform afin que seul le créateur de l'espace de travail puisse lire et écrire du code dans cet espace de travail, définissez le champ enable_private_workspace sur true dans la méthode projects.locations.updateConfig.
Cette restriction s'applique également à l'affichage des artefacts générés, tels que le code SQL compilé, les erreurs de compilation et les journaux d'exécution pour les compilations ou les appels de workflow de l'espace de travail.
Ce paramètre remplace les rôles IAM standards qui accordent l'accès à l'espace de travail aux autres utilisateurs du dépôt.
Étapes suivantes
- Consultez la page Présentation d'IAM pour en savoir plus sur IAM.
- Pour en savoir plus sur la gestion de l'accès aux ressources, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
- Pour en savoir plus sur les concepts clés de la fédération des identités des employés, consultez Fédération des identités des employés.
- Pour en savoir plus sur les rôles et les autorisations IAM BigQuery, consultez Contrôle des accès avec IAM.
- Pour en savoir plus sur l'attribution d'autorisations précises aux ensembles de données BigQuery, consultez Contrôler l'accès aux ensembles de données.