Ce document vous explique comment effectuer les opérations suivantes dans Dataform :
- Accorder à Dataform l'accès requis
- Contrôler l'accès à Dataform avec IAM
- Contrôler l'accès à des tables individuelles avec IAM
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
Au niveau du dépôt, pour exécuter tous les workflows d'un dépôt donné.
Individuellement pour chaque configuration de workflow.
- Éditeur de données BigQuery 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 sur les projets auxquels Dataform doit avoir accès en lecture seule.
- Utilisateur de job BigQuery sur le projet hébergeant votre dépôt Dataform.
- Propriétaire des données BigQuery : 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.
Tout compte de service auquel les rôles requis sont attribués peut accéder à BigQuery ou Secret Manager dans le projet auquel il appartient, indépendamment de VPC Service Controls.
Pour en savoir plus, consultez Configurer VPC Service Controls pour Dataform.
Tout utilisateur disposant de l'autorisation IAM
dataform.repositories.create
peut exécuter du code à l'aide du compte de service Dataform par défaut et de toutes les autorisations accordées à ce compte de service.Pour en savoir plus, consultez Remarques sur la sécurité pour les autorisations Dataform.
- Pour modifier une configuration de workflow à laquelle sont associés les identifiants d'un autre utilisateur de compte Google, vous devez associer vos propres identifiants de compte Google à la configuration de workflow ou modifier la configuration de workflow pour vous authentifier avec un compte de service.
- 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 configurer un workflow pour qu'il s'authentifie avec les identifiants d'utilisateur d'un compte Google et référence 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.
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 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.
Dans la console Google Cloud , accédez à IAM > Comptes de service.
Sélectionnez un projet.
Sur la page Comptes de service pour le projet "PROJECT_NAME", sélectionnez votre compte de service Dataform personnalisé.
Accédez à Autorisations, puis cliquez sur Accorder l'accès.
Dans le champ Nouveaux comptes principaux, saisissez l'ID de votre compte de service Dataform par défaut.
L'ID de votre compte de service Dataform par défaut est au format suivant :
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Dans la liste Sélectionner un rôle, sélectionnez le rôle Créateur de jetons du compte de service.
Cliquez sur Enregistrer.
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.config.get
dataform.config.update
dataform.locations.get
dataform.locations.list
dataform.releaseConfigs.create
dataform.releaseConfigs.delete
dataform.releaseConfigs.get
dataform.releaseConfigs.list
dataform.releaseConfigs.update
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.
workflowConfigs. create dataform.
workflowConfigs. delete dataform.workflowConfigs.get
dataform.workflowConfigs.list
dataform.
workflowConfigs. update dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.locations.get
dataform.locations.list
- 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
) Accédez à la page IAM et administration> Rôles.
Dans le champ Filtrer, sélectionnez Utilisé dans, saisissez
Dataform
, puis appuyez sur Entrée.Cliquez sur l'un des rôles répertoriés pour afficher ses autorisations dans le volet de droite.
Par exemple, le rôle Administrateur Dataform permet d'accéder à toutes les ressources Dataform.
Dans le terminal, transmettez la requête
repositories.setIamPolicy
de l'API Dataform avec une règle d'accès.Dans la stratégie, associez un utilisateur, un groupe, un domaine 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 attribuer au dépôt.TYPE
:user
,group
,domain
ouserviceAccount
.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 grâce à 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 disposent du rôle Administrateur Dataform sur tous les dépôts.
Dans le terminal, transmettez la requête
repositories.setIamPolicy
de 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
ROLE
par un rôle IAM Dataform que vous souhaitez accorder à tous les utilisateurs authentifiés.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
.sqlx
de 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 :
TABLE
ouVIEW
.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
GRANT
du fichier de définition de table après la première exécution.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
.sqlx
de la table ou de la vue dont vous souhaitez révoquer l'accès.Dans le bloc
post_operations
, saisissez l'instructionREVOKE
suivante :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 :
TABLE
ouVIEW
. - USER_LIST : liste des utilisateurs (séparés par une virgule) 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
GRANT
du fichier, remplacez l'instructionGRANT
par 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
REVOKE
du fichier de définition de table après la première exécution.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 menuPlus.
Cliquez sur Créer un fichier.
Dans le champ Ajouter un chemin d'accès au fichier, saisissez le nom du fichier suivi de
.sqlx
aprèsdefinitions/
. Par 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.
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 :
TABLE
ouVIEW
. - 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 les instructions
GRANT
etREVOKE
si nécessaire.Pour révoquer l'accès accordé dans une instruction
GRANT
du fichier, remplacez l'instructionGRANT
par une instructionREVOKE
.Si vous supprimez l'instruction
GRANT
sans ajouter l'instructionREVOKE
, l'accès n'est pas révoqué.
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
GRANT
ouREVOKE
du 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
- Pour en savoir plus sur IAM, consultez la présentation d'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 d'identité de personnel, consultez Fédération d'identité de personnel.
- Pour en savoir plus sur les rôles et les autorisations IAM BigQuery, consultez Contrôle des accès avec IAM.
- Pour savoir comment accorder des autorisations précises aux ensembles de données BigQuery, consultez Contrôler l'accès aux ensembles de données.
Accorder à Dataform l'accès requis
Cette section explique comment attribuer les rôles Identity and Access Management (IAM) dont les comptes de service Dataform ont besoin pour exécuter des workflows dans BigQuery.
À propos des comptes de service dans Dataform
Lorsque vous créez votre premier dépôt Dataform, Dataform génère automatiquement un compte de service par défaut. Dataform utilise le compte de service par défaut pour interagir avec BigQuery en votre nom. Par défaut, aucun rôle ni aucune autorisation BigQuery ne sont accordés au compte de service Dataform par défaut. Vous devez accorder l'accès requis au compte de service Dataform par défaut.
L'ID de votre compte de service Dataform par défaut 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 Identifier des projets.
En plus du compte de service Dataform par défaut, vous pouvez utiliser d'autres comptes de service pour exécuter des workflows en votre nom. Vous pouvez configurer des comptes de service personnalisés de différentes manières :
Lorsque vous créez un dépôt ou une configuration de workflow Dataform, vous pouvez sélectionner n'importe quel compte de service associé à votre projet Google Cloud auquel vous avez accès. Vous devez configurer les autorisations requises pour tous les comptes de service associés à vos ressources Dataform.
Un compte de service personnalisé associé à un dépôt Dataform n'est utilisé que pour exécuter des workflows à partir de ce dépôt. Toutes les autres opérations sur le dépôt sont toujours effectuées par le compte de service Dataform par défaut.
Rôles requis pour les comptes de service Dataform et les comptes Google
Les comptes de service par défaut et personnalisés, ainsi que les identifiants utilisateur de 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 :
Vous devez également attribuer le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator
) au compte de service Dataform par défaut afin qu'il puisse accéder à tous les comptes de service personnalisés que vous souhaitez utiliser dans Dataform.
Si vous avez activé le mode strict "Agir en tant que" (aperçu) et configuré le paramètre Fréquence pour une configuration de workflow, attribuez le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser
) au compte de service Dataform par défaut sur le compte de service effectif pour la configuration du workflow.
Considérations de sécurité pour les comptes de service Dataform et les comptes Google
L'attribution des rôles requis par Dataform à un compte de service ou au compte Google d'un utilisateur (aperçu) implique les considérations de sécurité suivantes :
Pour restreindre 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 empêcher les utilisateurs d'effectuer des actions en utilisant les identifiants de compte Google d'un autre utilisateur, les restrictions suivantes sont appliquées :
Attribuer les rôles BigQuery requis à un compte de service ou à un compte Google utilisé dans Dataform
Pour accorder les rôles IAM BigQuery requis à votre compte de service Dataform par défaut, à 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 :
Accorder l'accès à la création de jetons à un compte de service personnalisé
Pour utiliser un compte de service personnalisé dans Dataform, le compte de service Dataform par défaut doit pouvoir accéder au compte de service personnalisé. Pour accorder cet accès, vous devez ajouter le compte de service Dataform par défaut en tant que compte principal au compte de service personnalisé avec le rôle Créateur de jetons de compte de service.
Pour accorder au compte de service Dataform par défaut l'accès à un compte de service personnalisé, procédez comme suit :
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 Comprendre les rôles et les autorisations.
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( Full 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 Viewer( Read-only access to all code resources. |
|
Dataform Editor( Edit access to Workspaces and Read-only access to Repositories. |
|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
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 qui incluent des autorisations permettant d'effectuer des opérations administratives spécifiques, comme créer des espaces de travail de développement ou créer des fichiers et des répertoires dans un espace de travail de développement. Pour créer des rôles personnalisés, consultez Créer et gérer les 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 du compte de service Dataform par défaut et de toutes les autorisations accordées à ce compte de service. Cela inclut l'exécution des workflows Dataform.
L'autorisation dataform.repositories.create
est incluse dans les rôles IAM suivants :
Pour restreindre 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 le compte de service Dataform par défaut, ainsi que sur les rôles et autorisations qu'il requiert, consultez Accorder l'accès requis à Dataform.
Afficher les rôles Dataform
Dans la console Google Cloud , procédez comme suit :
Pour en savoir plus sur l'attribution d'un rôle à un projet, consultez Attribuer un rôle. 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 :
La commande suivante transmet la requête de l'API Dataform repositories.setIamPolicy
qui accorde 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/v1beta1/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 sur le dépôt au compte principal allAuthenticatedUsers
.
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 l'accès public à un dépôt Dataform, procédez comme suit :
La commande suivante transmet la requête de l'API Dataform repositories.setIamPolicy
qui attribue le rôle 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/v1beta1/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 public n'est accordé à 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 d'identité 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 vous 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 accorder 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 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 DCL GRANT
au fichier de définition .sqlx
de la table ou de la vue sélectionnée.
Pour accorder des rôles BigQuery à une table ou une vue sélectionnée, procédez comme suit :
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 TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
Révoquer des rôles BigQuery pour une table ou 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 :
L'exemple de code suivant montre comment le rôle Lecteur BigQuery est 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 aux tables et vues individuelles à un seul endroit, 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 :