Ce document explique comment spécifier le compte de service d'une tâche par lot, ce qui permet d'influencer les ressources et les applications auxquelles les VM d'une tâche peuvent accéder. Si vous ne spécifiez pas de compte de service personnalisé, les tâches utilisent par défaut le compte de service Compute Engine par défaut, qui est automatiquement associé par défaut à toutes les VM d'un projet. Par conséquent, l'utilisation d'un compte de service personnalisé offre un plus grand contrôle sur la gestion des autorisations d'une tâche et constitue une bonne pratique recommandée pour limiter les privilèges.
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez la page Premiers pas avec Batch et activez-la en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour créer une tâche, demandez à votre administrateur de vous attribuer les rôles IAM suivants:
-
Éditeur de tâches par lot (
roles/batch.jobsEditor
) sur le projet -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service de la tâche, qui est le compte de service Compute Engine par défaut par défaut -
Afficher les comptes de service : Afficher les comptes de service (
roles/iam.serviceAccountViewer
) sur le projet
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Éditeur de tâches par lot (
Créer une tâche utilisant un compte de service personnalisé
Avant de créer une tâche utilisant un compte de service personnalisé, assurez-vous que le compte de service que vous prévoyez d'utiliser dispose des autorisations nécessaires pour créer des tâches par lot pour votre projet. Pour en savoir plus, consultez la section Activer Batch pour un projet.
Pour créer une tâche utilisant un compte de service personnalisé, sélectionnez l'une des méthodes suivantes:
- Spécifiez le compte de service personnalisé dans la définition de votre tâche, comme indiqué dans cette section.
- Utilisez un modèle d'instance Compute Engine et spécifiez le compte de service personnalisé à la fois dans le modèle d'instance et dans la définition de votre tâche.
Cette section fournit un exemple de création d'une tâche utilisant un compte de service personnalisé. Vous pouvez créer une tâche utilisant un compte de service personnalisé à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Pour créer une tâche utilisant un compte de service personnalisé à l'aide de gcloud CLI, exécutez la commande gcloud batch jobs submit
et spécifiez le compte de service personnalisé dans le fichier de configuration de la tâche.
Par exemple, pour créer une tâche de script utilisant un compte de service personnalisé:
Dans le répertoire actuel, créez un fichier JSON nommé
hello-world-service-account.json
avec le contenu suivant:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello World! This is task $BATCH_TASK_INDEX." } } ] } } ], "allocationPolicy": { "serviceAccount": { "email": "SERVICE_ACCOUNT_EMAIL" } } }
où
SERVICE_ACCOUNT_EMAIL
est l'adresse e-mail de votre compte de service. Si le champserviceAccount
n'est pas spécifié, la valeur est définie sur le compte de service Compute Engine par défaut.Exécutez la commande suivante :
gcloud batch jobs submit example-service-account-job \ --location us-central1 \ --config hello-world-service-account.json
API
Pour créer une tâche utilisant un compte de service personnalisé à l'aide de l'API Batch, utilisez la méthode jobs.create
et spécifiez votre compte de service personnalisé dans le champ allocationPolicy
.
Par exemple, pour créer une tâche de script utilisant un compte de service personnalisé, exécutez la requête suivante:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-service-account-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
}
}
],
"allocationPolicy": {
"serviceAccount": {
"email": "SERVICE_ACCOUNT_EMAIL"
}
}
}
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.SERVICE_ACCOUNT_EMAIL
: adresse e-mail de votre compte de service. Si le champserviceAccount
n'est pas spécifié, la valeur est définie sur le compte de service Compute Engine par défaut.
Étapes suivantes
- Si vous rencontrez des problèmes lors de la création ou de l'exécution d'une tâche, consultez Dépannage.
- Afficher les tâches et les tâches
- En savoir plus sur les options de création de tâches