Comptes de service Dataproc

Cette page décrit les comptes de service et les niveaux d'accès aux VM, ainsi que leur utilisation avec Dataproc.

Que sont les comptes de service ?

Un compte de service est un compte spécial qui permet aux services et applications exécutés sur une instance de machine virtuelle (VM) Compute Engine d'interagir avec d'autres API Google Cloud. Les applications peuvent utiliser les identifiants de compte de service pour obtenir les autorisations d'accès à un ensemble d'API et effectuer des actions sur la VM dans les autorisations accordées au compte de service.

Comptes de service Dataproc

Les comptes de service suivants disposent des autorisations requises pour effectuer des actions Dataproc dans le projet où se trouve votre cluster.

  • Compte de service de l'agent de service Dataproc : Dataproc crée ce compte de service avec le rôle Agent de service Dataproc dans un Projet Google Cloud de l'utilisateur Dataproc. Il ne peut pas être remplacé par un compte de service spécifié par l'utilisateur lors de la création d'un cluster. Ce compte d'agent de service permet d'effectuer des opérations de plan de contrôle Dataproc, telles que la création, la mise à jour et la suppression de VM de cluster (consultez la section Agent de service Dataproc (identité de plan de contrôle)).

    Par défaut, Dataproc utilise service-[project-number]@dataproc-accounts.iam.gserviceaccount.com en tant que compte d'agent de service. Si ce compte de service n'existe pas, Dataproc utilise le compte d'agent de service des API Google, [project-number]@cloudservices.gserviceaccount.com, pour les opérations du plan de contrôle.

Réseaux VPC partagé : 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 en savoir plus, consultez :

Niveaux d'accès aux VM Dataproc

Les niveaux d'accès aux VM permettent d'accorder ou de limiter l'accès des instances de VM aux API. Ils fonctionnent avec le compte de service de la VM pour déterminer l'accès à l'API. Par exemple, si les VM de cluster ne disposent que du champ d'application https://www.googleapis.com/auth/storage-full, les applications exécutées sur les VM de cluster peuvent appeler les API Cloud Storage, mais elles ne peuvent pas envoyer de requêtes à BigQuery, même si le compte de service de la VM qu'elles exécutent dispose d'un rôle BigQuery doté d'autorisations étendues.

Champs d'application des VM Dataproc par défaut. Si les champs d'application ne sont pas spécifiés lors de la création d'un cluster (consultez la commande gcloud dataproc cluster create --scopes), les VM Dataproc disposent de l'ensemble de champs d'application par défaut suivant :

https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Si vous spécifiez des champs d'application lors de la création d'un cluster, les VM de cluster disposeront des champs d'application que vous spécifiez et l'ensemble minimal de champs d'application requis suivants (même si vous ne les spécifiez pas) :

https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Créer un cluster avec un compte de service de VM géré par l'utilisateur

Vous pouvez spécifier un compte de service de VM lorsque vous créez un cluster. Une fois le cluster créé, Dataproc ne permet pas de spécifier ni de modifier le compte de service de VM.

Pourquoi spécifier un compte de service de VM géré par l'utilisateur ? Les comptes de service sont dotés de rôles IAM. Spécifier un compte de service de VM géré par l'utilisateur lors de la création d'un cluster Dataproc vous permet de créer des clusters avec des droits d'accès et un contrôle précis sur les ressources du projet. L'utilisation de différents comptes de service de VM gérés par les utilisateurs avec différents clusters Dataproc vous permet de configurer des clusters avec différents accès aux ressources Cloud.

Avant de créer le cluster, créez le compte de service dans le projet dans lequel le cluster sera créé. Attribuez au compte de service le rôle Nœud de calcul Dataproc et tous les rôles supplémentaires nécessaires à vos tâches, par exemple pour autoriser la lecture et l'écriture de données depuis et vers des ressources Google Cloud, telles que BigQuery.

Commande gcloud

Utilisez la commande gcloud clusters create pour créer un cluster avec un compte de service de VM spécifié par les utilisateurs et des champs d'application d'accès de la VM.

gcloud dataproc clusters create cluster-name \
    --region=region \
    --service-account=service-account-name@project-id.iam.gserviceaccount.com \
    --scopes=scope[, ...]

API REST

Définissez les serviceAccount et serviceAccountScopes de l'objet GceClusterConfig lors de la requête API clusters.create.

Console

Il n'est actuellement pas possible de définir un compte de service de VM Dataproc géré par l'utilisateur dans Google Cloud Console. Vous pouvez définir le champ d'application "cloud-platform&quot" sur les VM de votre cluster en cliquant sur "Autoriser l'accès API à tous les services Google Cloud du même projet" dans la section Accès au projet du panneau Gérer la sécurité de la page Dataproc Create a cluster (Créer un cluster) dans Google Cloud Console.

Étapes suivantes