Ce document explique comment spécifier le paramètre compte de service, ce qui influence 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é par défaut à toutes les VM d'un projet. Par conséquent, Utiliser un compte de service personnalisé offre un meilleur contrôle dans la gestion des autorisations d'un job. Il s'agit les bonnes pratiques de limitation des privilèges.
En savoir plus sur le compte de service d'une tâche
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 utilisant des comptes de service personnalisés, demandez à votre administrateur de vous accorder le rôles IAM suivants:
-
Pour créer une tâche:
-
Éditeur de jobs 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 le compte de service Compute Engine par défaut
-
Éditeur de jobs 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 la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Pour créer une tâche:
-
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 tâche.
En savoir plus sur afficher les comptes de service les autorisations nécessaires pour le compte de service d'une tâche.
Créer un pipeline qui utilise un compte de service personnalisé
Pour créer une tâche qui utilise un compte de service personnalisé, sélectionnez l'une des options suivantes : méthodes:
- 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 tâche.
Cette section fournit un exemple de création de tâche utilisant un de service géré. Vous pouvez créer une tâche qui utilise un compte de service personnalisé à l'aide des commandes la gcloud CLI, l'API Batch, Java, Node.js ou Python.
gcloud
Pour créer une tâche utilisant un compte de service personnalisé à l'aide de la méthode
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 une tâche 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ée, la valeur est définie sur 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 la méthode
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 qui utilise un compte de service personnalisé, effectuez 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ée, la valeur est définie sur compte de service Compute Engine par défaut.
Java
Node.js
Python
Étape suivante
- Si vous rencontrez des problèmes lors de la création ou de l'exécution d'un job, consultez la section Dépannage.
- Afficher les missions et les tâches
- Découvrez d'autres options de création de tâches.