Ce document explique comment spécifier le compte de service d'un job Batch, qui influence les ressources et les applications auxquelles les VM d'un job peuvent accéder. Si vous ne spécifiez pas de compte de service personnalisé, les jobs utilisent par défaut le compte de service Compute Engine par défaut, qui est automatiquement associé à toutes les VM d'un projet. Par conséquent, l'utilisation d'un compte de service personnalisé permet de mieux contrôler les autorisations d'un job et constitue une bonne pratique recommandée pour limiter les privilèges.
En savoir plus sur le compte de service d'un job
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour contrôler l'accès aux jobs à l'aide de comptes de service personnalisés, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Pour créer un job :
-
É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 du job, qui est par défaut le compte de service Compute Engine par défaut
-
Éditeur de tâches par lot (
-
Pour 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 Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
-
Pour créer un job :
-
Identifiez le compte de service que vous souhaitez utiliser pour ce job. Assurez-vous que ce compte de service dispose de toutes les autorisations nécessaires pour exécuter votre job.
Découvrez comment afficher les comptes de service et les autorisations nécessaires pour le compte de service d'un job.
Créer un job qui utilise un compte de service personnalisé
Pour créer un job qui utilise 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 job, comme indiqué dans cette section.
- Utilisez un modèle d'instance Compute Engine et spécifiez le compte de service personnalisé à la fois dans votre modèle d'instance et dans la définition de votre job.
Cette section fournit un exemple de création d'un job qui utilise un compte de service personnalisé. Vous pouvez créer un job qui utilise un compte de service personnalisé à l'aide de gcloud CLI, de l'API Batch, de Java, de Node.js ou de Python.
gcloud
Pour créer un job qui utilise un compte de service personnalisé à l'aide de gcloud CLI, utilisez la commande gcloud batch jobs submit
et spécifiez le compte de service personnalisé dans le fichier de configuration du job.
Par exemple, pour créer un job de script qui utilise un compte de service personnalisé :
Créez un fichier JSON dans le répertoire actuel 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 un job qui utilise un compte de service personnalisé avec 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 un job de script qui utilise un compte de service personnalisé, envoyez 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 projet 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.
Java
Node.js
Python
Étapes suivantes
- Si vous rencontrez des problèmes pour créer ou exécuter un job, consultez la section Dépannage.
- Afficher les jobs et les tâches
- Découvrez d'autres options de création de tâches.