Comptes de service Managed Service pour Apache Spark

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

Exigence de sécurité à compter du 3 août 2020 : les utilisateurs de Managed Service pour Apache Spark doivent disposer de l'autorisation ActAs de compte de service pour déployer des ressources Managed Service pour Apache Spark, comme la création de clusters et l'envoi de jobs. Le rôle Utilisateur du compte de service contient cette autorisation. Pour en savoir plus sur les rôles Managed Service pour Apache Spark requis, consultez Rôles pour l'authentification des comptes de service.

Activer les utilisateurs Managed Service pour Apache Spark existants : les utilisateurs Managed Service pour Apache Spark existants à compter du 3 août 2020 peuvent activer cette exigence de sécurité (consultez la page Sécuriser Managed Service pour Apache Spark, 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 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 des clusters Managed Service pour Apache Spark

Les comptes de service suivants doivent disposer des autorisations nécessaires pour effectuer des actions Managed Service pour Apache Spark dans le projet où se trouve votre cluster.

Compte de service de VM Managed Service pour Apache Spark

Les VM d'un cluster Managed Service pour Apache Spark utilisent un compte de service pour les opérations du plan de données Managed Service pour Apache Spark. Le compte de service Compute Engine par défaut, project_number-compute@developer.gserviceaccount.com, est utilisé comme compte de service de la VM, sauf si vous spécifiez un compte de service personnalisé lorsque vous créez un cluster. Le compte de service de la VM doit disposer du rôle Nœud de calcul Managed Service pour Apache Spark, qui inclut les autorisations requises pour les opérations du plan de données Managed Service pour Apache Spark. Pour en savoir plus, consultez Rôles Managed Service pour Apache Spark.

Afficher les rôles de compte de service de VM

Pour afficher les rôles attribués au compte de service de la VM Managed Service pour Apache Spark, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page IAM.

    Accéder à IAM

  2. Cliquez sur Inclure les attributions de rôles fournies par Google.

  3. Affichez les rôles listés pour le compte de service de la 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 Managed Service pour Apache Spark utilise par défaut comme compte de service de VM.

  4. Vous pouvez cliquer sur l'icône en forme de crayon affichée sur la ligne du compte de service pour attribuer ou supprimer des rôles de compte de service.

Compte de service de l'agent de service Managed Service pour Apache Spark

Managed Service pour Apache Spark 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 Managed Service pour Apache Spark dans un projet Google Cloud . Ce compte de service effectue des opérations du plan de contrôle Managed Service pour Apache Spark, 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 Managed Service for Apache Spark utilise un réseau VPC partagé, un administrateur de VPC partagé doit attribuer au compte de service de l'agent de service Managed Service for Apache Spark le rôle d'utilisateur réseau pour le projet hôte de VPC partagé. Pour en savoir plus, consultez les ressources suivantes :

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 Managed Service for Apache Spark 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

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

  2. Attribuez au compte de service de VM personnalisé le rôle Nœud de calcul Managed Service pour Apache Spark dans le projet, ainsi que tous les rôles supplémentaires nécessaires à vos jobs, tels que les rôles BigQuery Lecteur et Writer (consultez Rôles Managed Service pour Apache Spark).

    Exemple de gcloud CLI :

    • L'exemple de commande suivant attribue le rôle "Nœud de calcul Dataproc" au compte de service de VM personnalisé dans le projet de cluster 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'attribuer au compte de service le rôle prédéfini de nœud de calcul Dataproc (roles/dataproc.worker), 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.*.

Créer le cluster

  • Créez le cluster dans votre projet.

ConsoleGoogle Cloud

Il n'est pas possible de définir un compte de service de VM Managed Service pour Apache Spark dans la console. Pour définir le niveau d'accès cloud-platform sur les VM de cluster lorsque vous créez le cluster :

  1. Ouvrez la page Créer un cluster.
  2. Cliquez sur Configuration supplémentaire pour développer cette section.
  3. Modifiez Sécurité.
  4. Dans le panneau qui s'ouvre, sous Accès au projet, cochez la case Active le champ d'application cloud-platform pour ce cluster.

gcloud CLI

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 trouvera le cluster.
  • SERVICE_ACCOUNT_NAME : nom du compte de service.
  • PROJECT_ID : ID du projet Google Cloud 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 de VM personnalisé dans un autre projet.
  • SCOPE : champ(s) d'application de l'accès pour les instances de VM du cluster (par exemple, https://www.googleapis.com/auth/cloud-platform).

API REST

Lorsque vous remplissez GceClusterConfig dans la requête d'API clusters.create, définissez les champs suivants :

Créer un cluster avec un compte de service de VM personnalisé provenant 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 Managed Service for Apache Spark 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

  1. Dans le projet du compte de service (celui où se trouve le compte de service de VM personnalisé) :

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

    2. activer l'API Dataproc ;

      Rôles requis pour activer les API

      Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

      Activer l'API

  2. 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 Gérer l'accès aux projets, aux dossiers et aux organisations pour attribuer des rôles au niveau du projet et Gérer l'accès aux comptes de service pour attribuer des rôles au niveau du compte de service.

    Exemples de gcloud CLI :

    • L'exemple de commande suivant attribue le rôle Utilisateur de compte de service à l'utilisateur 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 attribue le rôle Utilisateur du compte de service à l'utilisateur 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 suivant : user:user-name@example.com.

  3. Attribuez le rôle Worker Managed Service pour Apache Spark au compte de service de VM personnalisé dans le projet de cluster.

    Exemple de 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"
     
  4. Attribuez au compte de service de l'agent de service Managed Service for Apache Spark 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 Gérer l'accès aux projets, aux dossiers et aux organisations pour attribuer des rôles au niveau du projet et Gérer l'accès aux comptes de service pour attribuer des rôles au niveau du compte de service.

    Exemples de gcloud CLI :

    • Les exemples de commandes suivants attribuent les rôles Utilisateur du compte de service et Créateur de jetons du compte de service au compte de service de l'agent de service Managed Service pour Apache Spark dans le projet de cluster 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 les rôles Utilisateur du compte de service et Créateur de jetons du compte de service au compte de service de l'agent de service Managed Service pour Apache Spark dans le projet de cluster, 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. Attribuez le rôle Créateur de jetons du compte de service au compte de service de l'agent de service Compute Engine dans le projet du cluster, soit dans le projet du compte de service, soit dans le compte de service de la VM personnalisée dans le projet du compte de service pour un contrôle plus précis. Vous accordez ainsi au compte de service de l'agent de service Compute dans le projet de cluster la possibilité de 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 Gérer l'accès aux projets, aux dossiers et aux organisations pour attribuer des rôles au niveau du projet et Gérer l'accès aux comptes de service pour attribuer des rôles au niveau du compte de service.

    Exemples de gcloud CLI :

    • L'exemple de commande suivant attribue le rôle "Créateur de jetons du compte de service" au compte de service de l'agent de service Compute Engine dans le projet de cluster, 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 le rôle Créateur de jetons du compte de service au compte de service de l'agent de service Compute Engine dans le projet de cluster, 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

Étapes suivantes