2
votes

Échec de l'opération Dataproc: INVALID_ARGUMENT: utilisateur non autorisé à agir en tant que compte de service

J'essaie d'exécuter un pipeline à partir de Cloud Data Fusion, mais je reçois l'erreur suivante:

io.cdap.cdap.runtime.spi.provisioner.dataproc.DataprocRuntimeException: Dataproc operation failure: INVALID_ARGUMENT: User not authorized to act as service account 'XXXXXXXX-compute@developer.gserviceaccount.com'. To act as a service account, user must have one of [Owner, Editor, Service Account Actor] roles. See https://cloud.google.com/iam/docs/understanding-service-accounts for additional details.

Quelqu'un a déjà rencontré cette erreur?


1 commentaires

Pour l'emprunt d'identité, il s'agit d'une erreur courante. La clé est l' Service Account Actor autorisation. Par exemple, une instance Compute Engine peut avoir un compte de service attribué à l'instance. Cela signifie que l'utilisateur qui accède à l'instance doit disposer de cette autorisation, car il peut utiliser le compte de service tout en étant connecté à l'instance. Ceci est une fonction de sécurité.


4 Réponses :


3
votes

Cette erreur est liée à l'absence de rôle d'utilisateur de compte de service ( roles/iam.serviceAccountUser ) associé au compte d'utilisateur / de service utilisé pour exécuter le travail DataProc.

Pour surmonter cette erreur, vous devez accéder à la console de stratégie IAM et attribuer le rôle d'utilisateur du compte de service , comme décrit ici , au compte utilisateur / service actuel que vous utilisez pour exécuter la tâche. Comme illustré ci-dessous:

  1. Accédez à IAM et à la console d'administration
  2. Cliquez sur IAM
  3. Sélectionnez le membre que vous utilisez pour exécuter votre travail
  4. Cliquez sur l'icône du stylo à droite des informations du membre
  5. Ajouter le rôle d'utilisateur du compte de service

Soulignant certains sujets importants, les comptes de service sont utilisés pour effectuer des appels d'API autorisés, via le compte de service lui-même ou via des utilisateurs délégués en son sein. De plus, à propos des comptes de service d'emprunt d'identité, un utilisateur disposant d'autorisations particulières peut agir comme un autre compte de service avec l'autorisation nécessaire pour exécuter une tâche spécifique.

Remarque : à l'étape 3, vous pouvez également donner à un utilisateur particulier (email) les roles/iam.serviceAccountUser en cliquant sur + AJOUTER (en haut de la console). Ensuite, rédigez l'e-mail et sélectionnez l'autorisation. Cependant, je dois souligner que cette autorisation serait donnée au niveau du projet. Ainsi, cet utilisateur pourra se faire passer pour l'un des comptes de service existants.


0 commentaires

3
votes

Je voudrais ajouter que le rôle d'utilisateur du compte de service doit être ajouté au compte de service Cloud Data Fusion qui a été automatiquement généré par Data Fusion lorsque l'API a été activée.

Dans mon cas, le membre s'appelle quelque chose comme:

service-############@gcp-sa-datafusion.iam.gserviceaccount.com

Et son nom est: Compte de service Cloud Data Fusion


0 commentaires

1
votes

Dans mon cas, l'erreur était trompeuse. Même si l'erreur indiquait que le problème était lié aux privilèges manquants pour l'utilisateur ' XXXXXXXX-compute@developer.gserviceaccount.com ', le problème réel n'a été résolu qu'après avoir accordé le rôle au service - ########## Utilisateur ##@gcp-sa-datafusion.iam.gserviceaccount.com . J'ai suivi les étapes fournies par @Alexandre Moraes pour accorder le niveau d'accès correct au compte de service Cloud Data Fusion.


0 commentaires

0
votes

Oui, le message d'erreur indique un compte de service incorrect (c'est-à-dire 5086XXXX8XXX-compute@developer.gserviceaccount.com '). En fait, le compte de service qui exécutait le processus était différent. Il peut être trouvé à partir des journaux ou de l'attribut authorisationInfo de la demande dans les journaux (comme indiqué dans l'image ci-jointe):

CreateCluster
us-west1:cdap-getmember-xxxxxxx-2fff-11eb-98ba-6a77bxxxx9dc
service-5086XXXX8XXX@gcp-sa-datafusion.iam.gserviceaccount.com

Vous devez ajouter un rôle (n'importe lequel parmi PROPRIÉTAIRE, ÉDITEUR, COMPTE DE SERVICE) à ce compte (c'est-à-dire service-5086XXXX8XXX@gcp-sa-datafusion.iam.gserviceaccount.com).

entrez la description de l'image ici


0 commentaires