Contrôler l'accès à une tâche à l'aide d'un compte de service personnalisé

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

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é:

  1. 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"
            }
        }
    }
    

    SERVICE_ACCOUNT_EMAIL est l'adresse e-mail de votre compte de service. Si le champ serviceAccount n'est pas spécifié, la valeur est définie sur le compte de service Compute Engine par défaut.

  2. 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 :

Étapes suivantes