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. Pour comprendre les commandes spécifiques du Google Cloud CLI activées par chaque rôle IAM précis Dataproc, consultez Commandes SDK activées par IAM précise.
Rôles et autorisations IAM précises 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 du poste
| 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 workflow
| 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. Pour en savoir plus sur la mise à jour et la suppression des rôles Identity and Access Management (IAM), consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
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 précédent pour ajouter un objet de liaison (en gras dans l'exemple suivant). Remarque : Assurez-vous de renvoyer la valeuretagque vous avez reçue degcloud dataproc resource-type get-iam-policy. Consultez la documentation sur les etags.{ "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
Cette section décrit les commandes gcloud dataproc activées sur les ressources Dataproc pour chaque rôle IAM précis.
Clusters
| Rôle IAM | Commande |
|---|---|
| Lecteur | gcloud dataproc clusters describe cluster-name |
| Éditeur | gcloud dataproc clusters describe cluster-namegcloud dataproc clusters listgcloud dataproc clusters delete cluster-namegcloud dataproc clusters diagnose cluster-namegcloud dataproc clusters update cluster-namegcloud beta dataproc clusters start cluster-namegcloud beta dataproc clusters stop cluster-name |
| Propriétaire | gcloud dataproc clusters describe cluster-namegcloud dataproc clusters listgcloud dataproc clusters delete cluster-namegcloud dataproc clusters diagnose cluster-namegcloud dataproc clusters update cluster-namegcloud beta dataproc clusters start cluster-namegcloud beta dataproc clusters stop cluster-namegcloud dataproc clusters get-iam-policy cluster-namegcloud 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-idgcloud dataproc jobs describe job-idgcloud dataproc jobs kill job-idgcloud dataproc jobs update job-idgcloud dataproc jobs wait job-id |
| Propriétaire | gcloud dataproc jobs delete job-idgcloud dataproc jobs describe job-idgcloud dataproc jobs kill job-idgcloud dataproc jobs update job-idgcloud dataproc jobs wait job-idgcloud dataproc jobs get-iam-policy job-idgcloud 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-idgcloud dataproc operations describe operation-idgcloud dataproc operations cancel operation-id |
| Propriétaire | gcloud dataproc operations delete operation-idgcloud dataproc operations describe operation-idgcloud dataproc operations cancel operation-idgcloud dataproc operations get-iam-policy operation-idgcloud dataproc operations set-iam-policy operation-id |
Modèles de workflows
| Rôle IAM | Commande |
|---|---|
| Lecteur | gcloud dataproc workflow-templates describe template-id |
| Éditeur | gcloud dataproc workflow-templates delete template-idgcloud dataproc workflow-templates describe template-idgcloud dataproc workflow-templates remove-job template-idgcloud dataproc workflow-templates run template-id |
| Propriétaire | gcloud dataproc workflow-templates delete template-idgcloud dataproc workflow-templates describe template-idgcloud dataproc workflow-templates remove-job template-idgcloud dataproc workflow-templates run template-idgcloud dataproc workflow-templates get-iam-policy template-idgcloud 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-idgcloud dataproc autoscaling-policies describe policy-idgcloud dataproc autoscaling-policies update policy-idgcloud dataproc clusters create cluster-name --autoscaling-policy policy-id |
| Propriétaire | gcloud dataproc autoscaling-policies delete policy-idgcloud dataproc autoscaling-policies describe policy-idgcloud dataproc autoscaling-policies update policy-idgcloud dataproc clusters create cluster-name --autoscaling-policy policy-idgcloud dataproc autoscaling-policies get-iam-policy policy-idgcloud dataproc autoscaling-policies set-iam-policy policy-id |
Envoyer 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.getstorage.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(consultezgcloud 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 Utiliser l'IAM précise de Dataproc).
- Créez un rôle personnalisé d'IAM avec les autorisations suivantes :
dataproc.jobs.createdataproc.jobs.get
- Sélectionnez ou ajoutez le compte principal sur la page IAM de la console Google Cloud , puis sélectionnez le rôle personnalisé à appliquer au compte principal.