Autorisations Dataproc et rôles IAM

Aperçu

La gestion de l'authentification et des accès (IAM) vous permet de contrôler l'accès des utilisateurs et des groupes aux ressources de votre projet. Ce document met l'accent sur les autorisations IAM pertinentes pour Dataproc et sur les rôles IAM qui accordent ces autorisations.

Autorisations Dataproc

Les autorisations Dataproc permettent aux utilisateurs d'effectuer des actions spécifiques sur les clusters, les tâches, les opérations et les modèles de workflow Dataproc. Par exemple, l'autorisation dataproc.clusters.create permet à un utilisateur de créer des clusters Dataproc dans votre projet. Vous n'accordez pas directement des autorisations aux utilisateurs, mais vous leur attribuez des rôles auxquels sont associées une ou plusieurs autorisations.

Les tableaux ci-dessous répertorient les autorisations nécessaires pour appeler les API (méthodes) Dataproc. Ils sont organisés en fonction des API associées à chaque ressource Dataproc (clusters, tâches, opérations et modèles de workflow).

Autorisations de clusters

Méthode Autorisations requises
projects.regions.clusters.create 1, 2 dataproc.clusters.create
projects.regions.clusters.get dataproc.clusters.get
projects.regions.clusters.list dataproc.clusters.list
projects.regions.clusters.patch 1, 2, 3 dataproc.clusters.update
projects.regions.clusters.delete 1 dataproc.clusters.delete
projects.regions.clusters.getIamPolicy dataproc.clusters.getiamPolicy
projects.regions.clusters.setIamPolicy dataproc.clusters.setiamPolicy

Notes :

  1. L'autorisation dataproc.operations.get est également requise pour obtenir les mises à jour de l'état à partir de l'outil de ligne de commande gcloud.
  2. L'autorisation dataproc.clusters.get est également requise pour obtenir le résultat de l'opération à partir de l'outil de ligne de commande gcloud.
  3. L'autorisation dataproc.autoscalingPolicies.use est également requise pour activer une règle d'autoscaling sur un cluster.

Autorisations des tâches

Méthode Autorisations requises
projects.regions.jobs.submit 1, 2 dataproc.jobs.create
dataproc.clusters.use
projects.regions.jobs.get dataproc.jobs.get
projects.regions.jobs.list dataproc.jobs.list
projects.regions.jobs.cancel 1 dataproc.jobs.cancel
projects.regions.jobs.patch 1 dataproc.jobs.update
projects.regions.jobs.delete 1 dataproc.jobs.delete
projects.regions.jobs.getIamPolicy dataproc.jobs.getiamPolicy
projects.regions.jobs.setIamPolicy dataproc.jobs.setiamPolicy

Notes :

  1. L'outil de ligne de commande gcloud requiert également dataproc.jobs.get pour que les commandes jobs submit, jobs wait, jobs update, jobs delete et jobs kill fonctionnent correctement.

  2. L'outil de ligne de commande gcloud requiert également l'autorisation dataproc.clusters.get pour envoyer des tâches. Pour obtenir un exemple de définition des autorisations dont un utilisateur doit disposer pour pouvoir exécuter gcloud dataproc jobs submit sur un cluster spécifique avec l'IAM précise Dataproc, consultez la section Envoyer des tâches avec l'IAM précise.

Autorisations d'opérations

Méthode Autorisations requises
projects.regions.operations.get dataproc.operations.get
projects.regions.operations.list dataproc.operations.list
projects.regions.operations.cancel dataproc.operations.cancel
projects.regions.operations.delete dataproc.operations.delete
projects.regions.operations.getIamPolicy dataproc.operations.getiamPolicy
projects.regions.operations.setIamPolicy dataproc.operations.setiamPolicy

Autorisations des modèles de flux de travail

Méthode Autorisations requises
projects.regions.workflowTemplates.instantiate dataproc.workflowTemplates.instantiate
projects.regions.workflowTemplates.instantiateInline dataproc.workflowTemplates.instantiateInline
projects.regions.workflowTemplates.create dataproc.workflowTemplates.create
projects.regions.workflowTemplates.get dataproc.workflowTemplates.get
projects.regions.workflowTemplates.list dataproc.workflowTemplates.list
projects.regions.workflowTemplates.update dataproc.workflowTemplates.update
projects.regions.workflowTemplates.delete dataproc.workflowTemplates.delete
projects.regions.workflowTemplates.getIamPolicy dataproc.workflowTemplates.getiamPolicy
projects.regions.workflowTemplates.setIamPolicy dataproc.workflowTemplates.setiamPolicy

Notes :

  1. Les autorisations des modèles de flux de travail sont indépendantes des autorisations de clusters et de tâches. Un utilisateur qui ne dispose pas des autorisations create cluster ou submit job peut créer et instancier un modèle de workflow.

  2. L'outil de ligne de commande gcloud requiert également l'autorisation dataproc.operations.get pour interroger l'achèvement du workflow.

  3. L'autorisation dataproc.operations.cancel est requise pour annuler un workflow en cours d'exécution.

Autorisations des règles d'autoscaling

Méthode Autorisations requises
projects.regions.autoscalingPolicies.create dataproc.autoscalingPolicies.create
projects.regions.autoscalingPolicies.get dataproc.autoscalingPolicies.get
projects.regions.autoscalingPolicies.list dataproc.autoscalingPolicies.list
projects.regions.autoscalingPolicies.update dataproc.autoscalingPolicies.update
projects.regions.autoscalingPolicies.delete dataproc.autoscalingPolicies.delete
projects.regions.autoscalingPolicies.getIamPolicy dataproc.autoscalingPolicies.getIamPolicy
projects.regions.autoscalingPolicies.setIamPolicy dataproc.autoscalingPolicies.setIamPolicy

Notes :

  1. L'autorisation dataproc.autoscalingPolicies.use est requise pour activer une règle d'autoscaling sur un cluster avec une requête de méthode clusters.patch.

Rôles Dataproc

Les rôles IAM Dataproc regroupent une ou plusieurs autorisations. Vous accordez des rôles à des utilisateurs ou à des groupes pour leur permettre d'effectuer des actions sur les ressources Dataproc dans votre projet. Par exemple, le rôle Lecteur Dataproc comporte les autorisations dataproc.*.get et dataproc.*.list, qui permettent à un utilisateur d'obtenir et de répertorier des clusters, des tâches et des opérations Dataproc dans un projet.

Le tableau suivant répertorie les rôles IAM Dataproc et les autorisations associées à chaque rôle :

ID de rôle Permissions
roles/dataproc.admin dataproc.*.getIamPolicy
dataproc.*.setIamPolicy
dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
dataproc.jobs.cancel
dataproc.workflowTemplates.instantiate
dataproc.workflowTemplates.instantiateInline
compute.machineTypes.get
compute.machineTypes.list
compute.networks.get
compute.networks.list
compute.projects.get
compute.regions.get
compute.regions.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.editor dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
dataproc.jobs.cancel
dataproc.workflowTemplates.instantiate
dataproc.workflowTemplates.instantiateInline
compute.machineTypes.get
compute.machineTypes.list
compute.networks.get
compute.networks.list
compute.projects.get
compute.regions.get
compute.regions.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.viewer dataproc.*.get
dataproc.*.list
compute.machineTypes.get
compute.regions.get
compute.regions.list
compute.zones.get
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.worker (pour les comptes de service uniquement) dataproc.agents.*
dataproc.tasks.*
logging.logEntries.create
monitoring.metricDescriptors.create
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.monitoredResourceDescriptors.get
monitoring.monitoredResourceDescriptors.list
monitoring.timeSeries.create
storage.buckets.get
storage.objects.create
storage.objects.get
storage.objects.list
storage.objects.update
storage.objects.delete
storage.objects.getIamPolicy
storage.objects.setIamPolicy

Notes :

  • "*" signifie "clusters", "tâches" ou "opérations", sauf que les seules autorisations associées à dataproc.operations. sont get, list et delete.
  • Les autorisations compute répertoriées ci-dessus sont nécessaires ou recommandées pour créer et afficher des clusters Dataproc en cas d'utilisation de Google Cloud Console ou de l'outil de ligne de commande gcloud du SDK Cloud.
  • Pour autoriser un utilisateur à télécharger des fichiers, accordez-lui le rôle Storage Object Creator (Créateur des objets de l'espace de stockage). Pour autoriser un utilisateur à afficher le résultat de la tâche, accordez-lui le rôle Storage Object Viewer (Lecteur des objets de l'espace de stockage). Notez que l'attribution de l'un de ces rôles de stockage offre à l'utilisateur la possibilité d'accéder à n'importe quel bucket du projet.
  • Un utilisateur doit disposer de l'autorisation monitoring.timeSeries.list pour pouvoir afficher les graphiques dans Google Cloud Console → Dataproc → Détails du cluster, onglet "Présentation".
  • Un utilisateur doit disposer de l'autorisation compute.instances.list pour pouvoir afficher l'état de l'instance et le menu SSH de l'instance maître dans Google Cloud Console → Dataproc → Détails du cluster, onglet "Instances de VM". Pour plus d'informations sur les rôles Google Compute Engine, consultez la section Compute Engine → Rôles IAM disponibles.
  • Pour créer un cluster avec un compte de service spécifié par l'utilisateur, le compte en question doit disposer de toutes les autorisations accordées par le rôle Dataproc Worker. Veuillez indiquer tous les rôles supplémentaires nécessaires aux fonctionnalités de configuration. Pour obtenir la liste des rôles supplémentaires, consultez la page Comptes de service.

Rôles de projet

Il est possible d'obtenir des autorisations au niveau du projet en utilisant les rôles IAM Projet. Voici un aperçu des permissions correspondantes aux rôles de projet IAM.

Rôle de projet Autorisations
Lecteur de projets Toutes les autorisations de projet pour les actions en lecture seule préservant l'état (get, list)
Éditeur de projet Toutes les autorisations lecteur de projet, ainsi que toutes les autorisations de projet pour les actions qui modifient l'état (créer, supprimer, mettre à jour, utiliser, annuler)
Propriétaire du projet Toutes les autorisations de l'éditeur de projet, ainsi que celles permettant de gérer le contrôle d'accès au projet (get / set IamPolicy) et de configurer la facturation du projet

Récapitulatif des rôles IAM et des opérations Dataproc

Le tableau suivant récapitule les opérations Dataproc disponibles en fonction du rôle accordé à l'utilisateur, avec spécification de mises en garde.

Opération Éditeur de projet Lecteur de projet Administrateur Dataproc Éditeur Dataproc Lecteur Dataproc
Obtenir/Définir des autorisations IAM Dataproc Non Non Oui Non Non
Créer un cluster Oui Non Oui Oui Non
Répertorier les clusters Oui Oui Oui Oui Oui
Obtenir les détails du cluster Oui Oui Oui 1, 2 Oui 1, 2 Oui 1, 2
Mettre à jour le cluster Oui Non Oui Oui Non
Supprimer le cluster Oui Non Oui Oui Non
Envoyer une tâche Oui Non Oui 3 Oui 3 Non
Répertorier des tâches Oui Oui Oui Oui Oui
Obtenir les détails de la tâche Oui Oui Oui 4 Oui 4 Oui 4
Annuler la tâche Oui Non Oui Oui Non
Supprimer la tâche Oui Non Oui Oui Non
Répertorier les opérations Oui Oui Oui Oui Oui
Obtenir les détails de l'opération Oui Oui Oui Oui Oui
Supprimer une opération Oui Non Oui Oui Non

Notes :

  1. Le graphique de performances n'est pas disponible, à moins que l'utilisateur ne possède également un rôle doté de l'autorisation monitoring.timeSeries.list.
  2. La liste des VM du cluster n'inclut pas d'informations sur l'état ni de lien SSH pour l'instance maître, à moins que l'utilisateur ne dispose également d'un rôle doté de l'autorisation compute.instances.list.
  3. Les tâches qui incluent des fichiers à télécharger ne peuvent pas être envoyées à moins que l'utilisateur ait également le rôle de créateur d'objet de stockage ou qu'il ait obtenu un accès en écriture au compartiment de transfert pour le projet.
  4. Les résultats des tâches ne sont disponibles que si l'utilisateur dispose également du rôle Observateur d'objets de stockage ou s'il dispose d'un accès en lecture au compartiment de transfert pour le projet.

Comptes de service

Lorsque vous appelez des API Dataproc pour effectuer des actions dans le projet où se trouve votre cluster, comme la création d'instances de VM au sein du projet, Dataproc effectue ces actions en votre nom à l'aide d'un compte de service qui dispose des autorisations requises. Les comptes de service répertoriés ci-dessous disposent des autorisations requises pour effectuer des actions Dataproc dans le projet où se trouve votre cluster :

  • Dataproc essaie d'abord d'utiliser service-[project-number]@dataproc-accounts.iam.gserviceaccount.com.
  • Si ce compte de service n'existe pas, Dataproc utilise le compte de service des API Google [project-number]@cloudservices.gserviceaccount.com.

Si le cluster utilise un réseau VPC partagé, un administrateur de VPC partagé doit attribuer aux deux comptes de service ci-dessus le rôle d'utilisateur réseau pour le projet hôte de VPC partagé. Pour plus d'informations, reportez-vous à :

Gestion de l'IAM

Vous pouvez obtenir et définir des stratégies IAM à l'aide de la console Google Cloud, de l'API IAM ou de l'outil de ligne de commande gcloud.

Étape suivante