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 VM Dataproc: Les VM d'un cluster Dataproc utilisent ce compte de service pour Dataproc opérations de plan de données. Le compte de service Compute Engine par défaut, [project-number]-compute@developer.gserviceaccount.com est utilisé. en tant que compte de service de la VM Dataproc, sauf si vous spécifiez un Compte de service de VM lorsque vous créez un cluster. Par défaut, le cluster Compute Engine compte de service par défaut dispose du rôle Éditeur de projet, qui permet de créer et de supprimer des ressources pour la plupart y compris les autorisations nécessaires pour exécuter des données Dataproc opérations aéronautiques.

    Comptes de service personnalisés : si vous spécifiez un compte de service personnalisé lorsque vous créez un cluster, vous devez lui accorder les autorisations nécessaires pour les opérations de plan de données Dataproc. Pour ce faire, attribuez Rôle de nœud de calcul Dataproc pour le compte de service car ce rôle inclut les autorisations minimales nécessaires pour les données Dataproc opérations aéronautiques. Des rôles supplémentaires sont nécessaires pour accorder des autorisations à d'autres telles que la lecture et l'écriture de données dans BigQuery.

  • 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. Ce service ne peut pas être remplacé par un compte de service de VM personnalisé lorsque vous créez 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)).

    Dataproc utilise service-[project-number]@dataproc-accounts.iam.gserviceaccount.com en tant que compte d'agent de service.

Réseaux VPC partagés : Si le cluster utilise un réseau VPC partagé, un administrateur VPC partagé doit attribuer au compte de service de l'agent de service Dataproc le rôle d'utilisateur réseau pour le projet hôte de VPC partagé. Pour en savoir plus, consultez les pages suivantes :

Niveaux d'accès aux VM Dataproc

Les champs d'application d'accès des VM et les rôles IAM fonctionnent conjointement pour limiter l'accès des VM aux API Google Cloud. Par exemple, si les VM de cluster ne se voient accorder https://www.googleapis.com/auth/storage-full habilitation, applications en cours d'exécution sur les VM de cluster peuvent appeler des API Cloud Storage, mais elles ne peuvent pas envoyer des requêtes à BigQuery, même si elles s'exécutent en tant que compte de service de VM disposant d'un rôle BigQuery avec des autorisations étendues.

Bonne pratique est d'accorder le vaste champ d'application cloud-platform (https://www.googleapis.com/auth/cloud-platform) aux VM, puis limiter l'accès aux VM en accordant des autorisations Rôles IAM sur le compte de service de VM

Champs d'application des VM Dataproc par défaut. Si les niveaux d'accès spécifiée lors de la création d'un cluster (consultez 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/cloud-platform (clusters created with image version 2.1+).
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-platform (clusters created with image version 2.1+).
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 personnalisé

Lorsque vous créez un cluster, vous pouvez spécifier Compte de service de VM que votre cluster utilisera plutôt pour les opérations de plan de données Dataproc du compte de service de VM par défaut (vous ne pouvez pas modifier le compte de service de la VM une fois le cluster est créée). L'utilisation d'un compte de service de VM avec des rôles IAM attribués vous permet de fournir à votre cluster un accès précis aux ressources du projet.

Étapes préliminaires

  1. Créez le compte de service de VM personnalisé dans le projet dans lequel le cluster sera créé.

  2. Accordez au compte de service de VM personnalisé le rôle Nœud de calcul Dataproc sur le projet et sur tout rôle supplémentaire requis par votre travail, comme le rôle Lecteur et rédacteur BigQuery (voir Autorisations Dataproc et rôles IAM).

    Exemple de CLI gcloud :

    • L'exemple de commande suivant accorde au compte de service de VM personnalisé du projet de cluster le rôle de nœud de calcul Dataproc au niveau du projet :
    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
    • Envisager un rôle personnalisé : au lieu d'attribuer au compte de service le rôle prédéfini Worker Dataproc, vous pouvez lui attribuer un rôle personnalisé qui contient les autorisations du rôle Nœud de calcul, mais limite les autorisations storage.objects.*.
      • Le rôle personnalisé doit au moins accorder le compte de service de la VM storage.objects.create, storage.objects.get et Autorisations storage.objects.update sur les objets dans Buckets temporaires et de préproduction Dataproc et sur tout bucket supplémentaire requis par les jobs exécutés sur le cluster.

Créer le cluster

  • Créez le cluster dans votre projet.

Commande gcloud

Utilisez la commande gcloud dataproc clusters create pour créer un cluster avec le compte de service de VM personnalisé.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --scopes=SCOPE

Remplacez l'élément suivant :

  • CLUSTER_NAME : nom du cluster, qui doit être unique dans un projet. Le nom doit commencer par une lettre minuscule et peut contenir jusqu'à 51 caractères minuscules. lettres, chiffres et traits d'union. Il ne peut pas se terminer par un trait d'union. Le nom d'un cluster supprimé peut être réutilisé.
  • REGION: région l'emplacement du cluster.
  • SERVICE_ACCOUNT_NAME : nom du compte de service.
  • PROJECT_ID : ID de projet Google Cloud du projet contenant votre compte de service de VM. Il s'agit de l'ID du projet dans lequel votre cluster sera créé ou de l'ID d'un autre projet si vous créez un cluster avec un compte de service VM personnalisé dans un autre cluster.
  • SCOPE: niveau(x) d'accès pour les instances de VM du cluster (par exemple, https://www.googleapis.com/auth/cloud-platform).

API REST

Au cours de la GceClusterConfig dans le cadre clusters.create requête API, définissez les champs suivants:

Console

Définir un compte de service de VM Dataproc dans la console Google Cloud. Vous pouvez définir cloud-platform niveau d'accès sur le cluster lorsque vous créez le cluster en cliquant sur "Active le champ d'application Cloud Platform pour ce cluster" dans la section Accès au projet de l'onglet Gérer la sécurité. sur le panneau "Dataproc" Créer un cluster de la console Google Cloud.

Créer un cluster avec un compte de service de VM personnalisé à partir d'un autre projet

Lorsque vous créez un cluster, vous pouvez spécifier Compte de service de VM que votre cluster utilisera plutôt pour les opérations de plan de données Dataproc de l'utilisation du compte de service de VM par défaut (vous ne pouvez pas spécifier de compte de service de VM personnalisé est créée). Utiliser un compte de service de VM personnalisé avec des rôles IAM attribués vous permet de fournir à votre cluster un accès précis aux ressources du projet.

Étapes préliminaires

  1. Dans le projet de compte de service (projet dans lequel se trouve le compte de service de VM personnalisé) :

    1. Activez l'association des comptes de service à plusieurs projets.

    2. Enable the Dataproc API.

      Enable the API

  2. Attribuez à votre compte de messagerie (l'utilisateur qui crée le cluster) le rôle Utilisateur du compte de service au niveau du projet de compte de service ou, pour un contrôle plus précis, au niveau du compte de service de VM personnalisé dans le projet de compte de service.

    Pour en savoir plus : Gérer l'accès aux projets, aux dossiers et aux organisations pour attribuer des rôles au niveau du projet Gérer l'accès aux comptes de service et d'attribuer des rôles au niveau du compte de service.

    Exemples de CLI gcloud :

    • L'exemple de commande suivant attribue à l'utilisateur le rôle Utilisateur du compte de service au niveau du projet :
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=USER_EMAIL \
        --role="roles/iam.serviceAccountUser"
    

    Remarques: USER_EMAIL: indiquez l'adresse e-mail de votre compte utilisateur, au format suivant: user:user-name@example.com

    • L'exemple de commande suivant accorde à l'utilisateur le rôle Utilisateur du compte de service au niveau du compte de service:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=USER_EMAIL \
        --role="roles/iam.serviceAccountUser"
    

    Remarques : USER_EMAIL : indiquez l'adresse e-mail de votre compte utilisateur, au format : user:user-name@example.com.

  3. Accordez au compte de service de VM personnalisé le rôle Nœud de calcul Dataproc dans le projet de cluster.

    Exemple de CLI gcloud:

    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
  4. Accordez au compte de service de l'agent de service Dataproc Dans le projet de cluster, l'utilisateur du compte de service et le Créateur de jetons du compte de service sur le projet du compte de service ou, pour un contrôle plus précis, le compte de service de VM personnalisé dans le projet du compte de service. Ainsi, vous autorisez le compte de service de l'agent de service Dataproc du projet de cluster à créer des jetons pour le compte de service de VM Dataproc personnalisé dans le projet de compte de service ;

    Pour en savoir plus : Gérer l'accès aux projets, aux dossiers et aux organisations pour attribuer des rôles au niveau du projet Gérer l'accès aux comptes de service et d'attribuer des rôles au niveau du compte de service.

    Exemples de CLI gcloud :

    • Les exemples de commandes suivants attribuent au compte de service de l'agent de service Dataproc dans le projet de cluster les rôles "Utilisateur du compte de service" et "Créateur de jetons du compte de service" au niveau du projet :
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
     
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
    • Les exemples de commandes suivants attribuent au compte de service de l'agent de service Dataproc dans le projet de cluster les rôles "Utilisateur du compte de service" et "Créateur de jetons du compte de service" au niveau du compte de service de la VM :
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
     
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
  5. Accordez le Compte de service de l'agent de service Compute Engine dans le projet de cluster le créateur de jetons du compte de service ; sur le projet du compte de service ou, pour un contrôle plus précis, le compte de service de VM personnalisé dans le projet du compte de service. En procédant ainsi, vous accordez au compte de service de l'agent de service Compute Agent dans le cluster projet permettant de créer des jetons pour le service de VM Dataproc personnalisé dans le projet de compte de service.

    Pour en savoir plus : Gérer l'accès aux projets, aux dossiers et aux organisations pour attribuer des rôles au niveau du projet Gérer l'accès aux comptes de service et d'attribuer des rôles au niveau du compte de service.

    Exemples de CLI gcloud :

    • L'exemple de commande suivant attribue au compte de service Compute Engine Service Agent du projet de cluster le rôle de créateur de jetons de compte de service au niveau du projet :
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     
    • L'exemple de commande suivant attribue au compte de service Compute Engine Service Agent du projet de cluster le rôle de créateur de jetons de compte de service au niveau du compte de service de la VM :
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     

Créer le cluster

Étape suivante