Cette page décrit les comptes de service et les niveaux d'accès aux VM, ainsi que leur utilisation avec Dataproc.
Exigence de sécurité à compter du 3 août 2020 : les utilisateurs de Dataproc doivent disposer de l'autorisation ActAs du compte de service pour déployer des ressources Dataproc, telles que la création de clusters et l'envoi de tâches. Cette autorisation est incluse dans le rôle
Utilisateur du compte de service. Pour en savoir plus sur les rôles Dataproc requis, consultez la section Rôles pour l'authentification des comptes de service.
Activer les utilisateurs Dataproc existants : les utilisateurs Dataproc existants à compter du 3 août 2020 peuvent activer cette exigence de sécurité (consultez la page Sécuriser Dataproc, Dataflow et Cloud Data Fusion).
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 Google Cloud API. 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 de cluster Dataproc
Les comptes de service suivants doivent disposer des autorisations nécessaires 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 un compte de service pour
les opérations du plan de données Dataproc.
Le compte de service Compute Engine par défaut,
project_number-compute@developer.gserviceaccount.com, est utilisé comme compte de service de VM, sauf si vous spécifiez un
compte de service personnalisé
lorsque vous créez un cluster. Le compte de service de VM doit disposer du
rôle Nœud de calcul Dataproc, qui inclut les autorisations requises pour les opérations du plan de données Dataproc. Pour en savoir plus, consultez la section
Rôles Dataproc.
storage.* incluses dans le rôle
roles/dataproc.worker. Consultez également
les autorisations IAM pour Cloud Storage et
les rôles IAM pour Cloud Storage.
Afficher les rôles du compte de service de VM
Pour afficher les rôles attribués au compte de service de VM Dataproc, procédez comme suit :
Dans la Google Cloud console, accédez à la page **IAM**.
Cliquez sur Inclure les attributions de rôles fournies par Google.
Affichez les rôles listés pour le compte de service de VM. L'image suivante montre le rôle Nœud de calcul Dataproc requis pour le compte de service Compute Engine par défaut (
project_number-compute@developer.gserviceaccount.com) que Dataproc utilise par défaut comme compte de service de VM.
Vous pouvez cliquer sur l'icône en forme de crayon affichée sur la ligne du compte de service pour accorder ou supprimer des rôles de compte de service.
Compte de service de l'agent de service Dataproc
Dataproc crée le
compte de service de l'agent de service,
service-project_number@dataproc-accounts.iam.gserviceaccount.com, et lui attribue
le
rôle Agent de service Dataproc
dans un Google Cloud projet. Ce compte de service
effectue des opérations de plan de contrôle Dataproc
, telles que la création, la mise à jour et la suppression de VM de
cluster. Vous ne pouvez pas remplacer ce compte de service par un compte de service de VM personnalisé lorsque vous créez un cluster.
Attribution de rôle au compte de service de l'agent de service dans un réseau VPC partagé
Si un cluster Dataproc utilise un réseau VPC partagé, un administrateur VPC partagé doit accorder au compte de service de l'agent de service Dataproc le rôle Utilisateur du réseau pour le projet hôte de VPC partagé. Pour en savoir plus, consultez les ressources suivantes :
- Créer un cluster utilisant un réseau VPC dans un autre projet
- Documentation VPC partagée : configurer des comptes de services en tant qu'administrateur de projet de service.
Créer un cluster avec un compte de service de VM personnalisé
Lorsque vous créez un cluster, vous pouvez spécifier un compte de service de VM personnalisé que votre cluster utilisera pour les opérations du plan de données Dataproc au lieu du compte de service de VM par défaut (vous ne pouvez pas modifier le compte de service de VM une fois le cluster créé). 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
Créez le compte de service de VM personnalisé dans le projet dans lequel le cluster sera créé.
Accordez au compte de service de VM personnalisé le rôle Nœud de calcul Dataproc sur le projet et tous les rôles supplémentaires nécessaires à vos tâches, tels que les rôles BigQuery Lecteur et Rédacteur (consultez la section Rôles Dataproc).
Exemple gcloud CLI :
- L'exemple de commande suivant accorde au compte de service de VM personnalisé du projet de cluster le rôle 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"
- Envisagez un rôle personnalisé : au lieu d'accorder au compte de service le rôle prédéfini Nœud de calcul Dataproc (
roles/dataproc.worker), vous pouvez lui accorder un rôle personnalisé qui contient les autorisations du rôle Nœud de calcul, mais limite les autorisationsstorage.objects.*.- Le rôle personnalisé doit au moins accorder au compte de service de VM
storage.objects.create,storage.objects.get, etstorage.objects.updateautorisations sur les objets des buckets de préproduction et temporaires Dataproc et sur tous les buckets supplémentaires nécessaires aux tâches exécutées sur le cluster.
- Le rôle personnalisé doit au moins accorder au compte de service de VM
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 les éléments suivants :
- 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 lettres minuscules , 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 dans laquelle se trouve le cluster.
- SERVICE_ACCOUNT_NAME : nom du compte de service.
- PROJECT_ID : ID du projet contenant votre compte de service de VM. Google Cloud Il s'agit de l'ID de le projet dans lequel votre cluster sera créé ou l'ID d'un autre projet si vous créez un cluster avec un compte de service de VM personnalisé dans un autre projet.
- SCOPE : Champ(s) d'application d'accès pour les instances de VM de cluster (par exemple,
https://www.googleapis.com/auth/cloud-platform).
API REST
Lorsque vous complétez le
GceClusterConfig
dans le cadre de la requête d'API
clusters.create, définissez les champs suivants :
serviceAccount: le compte de service se trouve dans le projet dans lequel votre cluster sera créé, sauf si vous utilisez un compte de service de VM provenant d'un autre projet.serviceAccountScopes: spécifiez le champ d'application d'accès pour les instances de VM de cluster (par exemple,https://www.googleapis.com/auth/cloud-platform).
Console
Il n'est pas possible de définir un compte de service de VM Dataproc
dans la Google Cloud console. Vous pouvez définir le cloud-platform
champ d'application d'accès sur les VM de cluster
lorsque vous créez le cluster en cliquant
sur "Activer le champ d'application cloud-platform pour ce cluster"
dans la section Accès du projet du panneau Gérer la sécurité
de la page Créer un cluster
Dataproc dans la Google Cloud console.
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 un compte de service de VM personnalisé que votre cluster utilisera pour les opérations du plan de données Dataproc au lieu d'utiliser le compte de service de VM par défaut (vous ne pouvez pas spécifier de compte de service de VM personnalisé une fois le cluster créé). L'utilisation d'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
Dans le projet de compte de service (projet dans lequel se trouve le compte de service de VM personnalisé) :
Activez l'association des comptes de service à plusieurs projets.
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Accordez à votre compte de messagerie (l'utilisateur qui crée le cluster) le rôle Utilisateur du compte de service sur le projet de compte de service ou, pour un contrôle plus précis, sur le compte de service de VM personnalisé dans le projet de compte de service.
Pour en savoir plus : Consultez la section Gérer l'accès aux projets, aux dossiers et aux organisations pour accorder des rôles au niveau du projet et la section Gérer l'accès aux comptes de service pour accorder des rôles au niveau du compte de service.
Exemples gcloud CLI :
- L'exemple de commande suivant accorde à 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 :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.Accordez au compte de service de VM personnalisé le rôle Nœud de calcul Dataproc sur le projet de cluster.
Exemple gcloud CLI :
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"
Accordez 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 sur le projet de compte de service ou, pour un contrôle plus précis, sur le compte de service de VM personnalisé dans le projet de compte de service. Vous autorisez ainsi le compte de service de l'agent de service Dataproc dans le 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 : Consultez la section Gérer l'accès aux projets, aux dossiers et aux organisations pour accorder des rôles au niveau du projet et la section Gérer l'accès aux comptes de service pour accorder des rôles au niveau du compte de service.
Exemples gcloud CLI :
- Les exemples de commandes suivants accordent 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 accordent 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 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"
Accordez au compte de service de l'agent de service Compute Engine dans le projet de cluster le rôle Créateur de jetons du compte de service sur le projet de compte de service ou, pour un contrôle plus précis, le compte de service de VM personnalisé dans le projet de compte de service. Vous autorisez ainsi le compte de service de l'agent de service Compute Engine dans le 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 : Consultez la section Gérer l'accès aux projets, aux dossiers et aux organisations pour accorder des rôles au niveau du projet et la section Gérer l'accès aux comptes de service pour accorder des rôles au niveau du compte de service.
Exemples gcloud CLI :
- L'exemple de commande suivant accorde au compte de service de l'agent de service Compute Engine dans le projet de cluster le rôle 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@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- L'exemple de commande suivant accorde au compte de service de l'agent de service Compute Engine dans le projet de cluster le rôle Créateur de jetons du compte de service au niveau du compte de service de 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
- Comptes de service
- Autorisations Dataproc et rôles IAM
- Entités principales et rôles Dataproc
- Architecture mutualisée sécurisée basée sur un compte de service Dataproc
- Authentification personnelle de cluster Dataproc
- Utiliser l'IAM précise de Dataproc