L'IAM précise de Dataproc est une fonctionnalité qui vous permet d'accorder des autorisations au niveau du cluster, des tâches, des opérations, du modèle de workflow ou de la stratégie d'autoscaling.
Exemple : vous pouvez attribuer à un utilisateur un rôle de lecteur de cluster, ce qui lui permet d'afficher un cluster au sein d'un projet. Vous pouvez aussi attribuer à un autre utilisateur un rôle d'éditeur de tâches, ce qui lui permet de mettre à jour, d'annuler, ainsi que de visualiser une tâche. Consultez la page Commandes SDK activées par l'IAM précise pour comprendre les commandes spécifiques de la Google Cloud CLI activées par chaque rôle de l'IAM précise Dataproc.
Rôles et autorisations de l'IAM précise de Dataproc
L'IAM précise de Dataproc peut définir les rôles et autorisations sur les ressources Dataproc, tels qu'ils sont répertoriés ci-dessous :
Rôles de cluster
Rôle | Autorisations |
---|---|
Lecteur | dataproc.clusters.get |
Éditeur | dataproc.clusters.get dataproc.clusters.list dataproc.clusters.delete dataproc.clusters.update dataproc.clusters.use dataproc.clusters.start dataproc.clusters.stop |
Propriétaire | dataproc.clusters.get dataproc.clusters.list dataproc.clusters.delete dataproc.clusters.update dataproc.clusters.use dataproc.clusters.start dataproc.clusters.stop dataproc.clusters.setIamPolicy dataproc.clusters.getIamPolicy |
Rôles de tâche
Rôle | Autorisations |
---|---|
Lecteur | dataproc.jobs.get |
Éditeur | dataproc.jobs.get dataproc.jobs.cancel dataproc.jobs.delete dataproc.jobs.update |
Propriétaire | dataproc.jobs.get dataproc.jobs.cancel dataproc.jobs.delete dataproc.jobs.update dataproc.jobs.setIamPolicy dataproc.jobs.getIamPolicy |
Rôles d'opération
Rôle | Autorisations |
---|---|
Lecteur | dataproc.operations.get |
Éditeur | dataproc.jobs.get dataproc.operations.cancel dataproc.operations.delete |
Propriétaire | dataproc.jobs.get dataproc.operations.cancel dataproc.operations.delete dataproc.operations.setIamPolicy dataproc.operations.getIamPolicy |
Rôles de modèles de flux de travail
Rôle | Autorisations |
---|---|
Lecteur | dataproc.workflowTemplates.get |
Éditeur | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update |
Propriétaire | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update dataproc.workflowTemplates.setIamPolicy dataproc.workflowTemplates.getIamPolicy |
Rôles de stratégie d'autoscaling
Rôle | Autorisations |
---|---|
Lecteur | dataproc.autoscalingPolicies.get |
Éditeur | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update |
Propriétaire | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update dataproc.autoscalingPolicies.setIamPolicy dataproc.autoscalingPolicies.getIamPolicy |
Utiliser l'IAM précise de Dataproc
Cette section explique comment utiliser l'IAM précise de Dataproc pour attribuer des rôles aux utilisateurs sur une ressource Dataproc existante. Consultez la page Accorder, modifier et révoquer les accès pour obtenir des informations générales sur la mise à jour et la suppression des rôles IAM (Identity and Access Management).
Commande gcloud
- Récupérez la stratégie IAM de la ressource, puis enregistrez-la dans un fichier JSON. Le paramètre resource-type prend l'une des valeurs suivantes : "clusters", "jobs" (tâches), "operations", "workflow-templates" (modèles de workflow) ou "autoscaling-policies" (stratégies d'autoscaling) :
gcloud dataproc resource-type get-iam-policy resource-id \ --region=region \ --format=json > iam.json
- Le fichier JSON affiche un contenu identique au texte ci-dessous :
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] } ], "etag": "string" }
- À l'aide d'un éditeur de texte, ajoutez un nouvel Objet de liaison au tableau de liaisons qui définit les utilisateurs et le rôle d'accès aux ressources de ces derniers. Par exemple, pour accorder le rôle de lecteur (
roles/viewer
) à l'utilisateursean@example.com
, vous devez modifier l'exemple ci-dessus pour ajouter un objet de liaison (en gras), ci-dessous. Remarque : Assurez-vous de renvoyer la valeuretag
que vous avez reçue degcloud dataproc resource-type get-iam-policy
(consultez la documentation etag).{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "value-from-get-iam-policy" }
- Mettez à jour la stratégie du cluster avec le nouveau tableau de liaisons en exécutant la commande ci-dessous. Le paramètre resource-type prend l'une des valeurs suivantes : "clusters", "jobs" (tâches), "operations", "workflow-templates" (modèles de workflow) ou "autoscaling-policies" (stratégies d'autoscaling) :
gcloud dataproc resource-type set-iam-policy resource-name \ --region=region \ --format=json iam.json
- La commande génère la règle mise à jour :
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "string" }
API REST
- Envoyez une requête getIamPolicy resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") pour obtenir la stratégie IAM de la ressource.
Exemple de cluster getIamPolicy :
GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
- Le fichier JSON affiche un contenu identique au texte ci-dessous :
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] } ], "etag": "string" }
- A l'aide d'un éditeur de texte, créez l'objet de stratégie JSON suivant pour inclure le tableau de liaisons que vous venez de recevoir du service Dataproc. Assurez-vous d'indiquer la valeur "etag" que vous avez reçue dans la réponse getIamPolicy (consultez la Documentation sur etag).
Ajoutez maintenant un nouvel objet de liaison au tableau de liaisons qui définit les utilisateurs et le rôle d'accès au cluster pour ces derniers. Par exemple, pour accorder le rôle de lecteur (
roles/viewer
) à l'utilisateursean@example.com
, vous devez modifier l'exemple ci-dessus pour ajouter un objet de liaison (en gras), ci-dessous.{ "policy": { "version": "", "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "value-from-getIamPolicy" } }
- Définissez la stratégie mise à jour sur la ressource en émettant une requête setIamPolicy.
Exemple de cluster setIamPolicy :
POST https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:setIamPolicy Request body
{ "policy": { "version": "", "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "value-from-getIamPolicy" } }
- La réponse JSON affiche un contenu identique au texte ci-dessous :
Réponse
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "string" }
Console
Accédez à la page Clusters Dataproc dans la console Google Cloud, puis cochez la case située à gauche du nom du cluster pour ouvrir le panneau Autorisations/Libellés. Si le panneau ne s'affiche pas, cliquez sur AFFICHER LE TABLEAU D'INFORMATIONS en haut à droite de la page. Sous l'onglet "Autorisations", sélectionnez le rôle Dataproc, ajoutez une ou plusieurs adresses de compte dans le champ Ajouter des comptes principaux, puis cliquez sur Ajouter.
Commandes SDK activées par l'IAM précise
Les tableaux ci-dessous présentent les commandes gcloud dataproc
activées sur les ressources Dataproc pour chaque rôle IAM précise.
Clusters
Rôle IAM | Commande |
---|---|
Lecteur | gcloud dataproc clusters describe cluster-name |
Éditeur | gcloud dataproc clusters describe cluster-name gcloud dataproc clusters list gcloud dataproc clusters delete cluster-name gcloud dataproc clusters diagnose cluster-name gcloud dataproc clusters update cluster-name gcloud beta dataproc clusters start cluster-name gcloud beta dataproc clusters stop cluster-name |
Propriétaire | gcloud dataproc clusters describe cluster-name gcloud dataproc clusters list gcloud dataproc clusters delete cluster-name gcloud dataproc clusters diagnose cluster-name gcloud dataproc clusters update cluster-name gcloud beta dataproc clusters start cluster-name gcloud beta dataproc clusters stop cluster-name gcloud dataproc clusters get-iam-policy cluster-name gcloud dataproc clusters set-iam-policy cluster-name |
Tâches
Rôle IAM | Commande |
---|---|
Lecteur | gcloud dataproc jobs describe job-id |
Éditeur | gcloud dataproc jobs delete job-id gcloud dataproc jobs describe job-id gcloud dataproc jobs kill job-id gcloud dataproc jobs update job-id gcloud dataproc jobs wait job-id |
Propriétaire | gcloud dataproc jobs delete job-id gcloud dataproc jobs describe job-id gcloud dataproc jobs kill job-id gcloud dataproc jobs update job-id gcloud dataproc jobs wait job-id gcloud dataproc jobs get-iam-policy job-id gcloud dataproc jobs set-iam-policy job-id |
Opérations
Rôle IAM | Commande |
---|---|
Lecteur | gcloud dataproc operations describe operation-id |
Éditeur | gcloud dataproc operations delete operation-id gcloud dataproc operations describe operation-id gcloud dataproc operations cancel operation-id |
Propriétaire | gcloud dataproc operations delete operation-id gcloud dataproc operations describe operation-id gcloud dataproc operations cancel operation-id gcloud dataproc operations get-iam-policy operation-id gcloud dataproc operations set-iam-policy operation-id |
Modèles de processus
Rôle IAM | Commande |
---|---|
Lecteur | gcloud dataproc workflow-templates describe template-id |
Éditeur | gcloud dataproc workflow-templates delete template-id gcloud dataproc workflow-templates describe template-id gcloud dataproc workflow-templates remove-job template-id gcloud dataproc workflow-templates run template-id |
Propriétaire | gcloud dataproc workflow-templates delete template-id gcloud dataproc workflow-templates describe template-id gcloud dataproc workflow-templates remove-job template-id gcloud dataproc workflow-templates run template-id gcloud dataproc workflow-templates get-iam-policy template-id gcloud dataproc workflow-templates set-iam-policy template-id |
Stratégies d'autoscaling
Rôle IAM | Commande |
---|---|
Lecteur | gcloud dataproc autoscaling-policies describe policy-id |
Éditeur | gcloud dataproc autoscaling-policies delete policy-id gcloud dataproc autoscaling-policies describe policy-id gcloud dataproc autoscaling-policies update policy-id gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id |
Propriétaire | gcloud dataproc autoscaling-policies delete policy-id gcloud dataproc autoscaling-policies describe policy-id gcloud dataproc autoscaling-policies update policy-id gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id gcloud dataproc autoscaling-policies get-iam-policy policy-id gcloud dataproc autoscaling-policies set-iam-policy policy-id |
Soumettre des tâches avec l'IAM précise
Pour permettre à un compte principal (utilisateur, groupe ou compte de service) d'envoyer des tâches à un cluster donné à l'aide de l'IAM précise de Dataproc, il est non seulement nécessaire d'accorder à l'utilisateur le rôle d'éditeur sur le cluster, mais aussi de définir des autorisations supplémentaires au niveau du projet. Voici les étapes à suivre pour permettre à un compte principal d'envoyer des tâches sur un cluster Dataproc donné :
- Créez un bucket Cloud Storage que votre cluster peut utiliser pour se connecter à Cloud Storage.
- Ajoutez le compte principal à la stratégie au niveau du bucket en sélectionnant le rôle Lecteur d'objets de stockage pour le compte principal (voir
roles/storage.objectViewer
), qui comprend les autorisations suivantes :storage.objects.get
storage.objects.list
- Lorsque vous créez le cluster, transmettez le nom du bucket que vous venez de créer à l'aide du paramètre
--bucket
(consultez la section gcloud dataproc clusters create --bucket). - Une fois le cluster créé, définissez une stratégie qui attribue au compte principal un rôle d'éditeur ou de propriétaire (consultez la section Utiliser l'IAM précise de Dataproc).
- Créez un rôle personnalisé d'IAM avec les autorisations suivantes :
dataproc.jobs.create
dataproc.jobs.get
- Sélectionner ou ajouter le compte principal dans la console Google Cloud IAM, puis sélectionnez le rôle personnalisé et l'appliquer au compte principal.