Contrôler l'accès à un job à l'aide d'un compte de service personnalisé

Ce document explique comment spécifier le compte de service d'une tâche par lot, qui a une influence sur 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 meilleur contrôle sur la gestion des autorisations d'un job et constitue une bonne pratique recommandée pour limiter les droits.

Apprenez-en plus sur le compte de service d'une tâche.

Avant de commencer

Créer un job 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 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é dans votre modèle d'instance et dans la définition de votre tâche.

Cette section fournit un exemple illustrant comment créer une tâche 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 ou de l'API Batch.

gcloud

Pour créer une tâche qui utilise 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 qui utilise un compte de service personnalisé, procédez comme suit:

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

    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 qui utilise 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 qui utilise 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