Créer et exécuter des tâches en tant qu'utilisateur non racine

Ce document explique comment créer et exécuter un job Batch en tant qu'utilisateur non root.

Par défaut, Batch exécute les exécutables en tant qu'utilisateur racine. Si vous souhaitez que Batch exécute des exécutables en tant qu'utilisateur non racine (par exemple, pour exécuter une application qui n'autorise pas les utilisateurs racine ou pour répondre à des exigences de sécurité), créez un job Batch qui utilise OS Login. Lorsque vous activez OS Login dans un job Batch, OS Login configure un compte utilisateur pour vous sur les VM sur lesquelles votre job s'exécute. Tous les exécutables du job sont ensuite exécutés par votre compte utilisateur sur la VM au lieu de l'être par l'utilisateur racine.

Avant de commencer

  1. 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.
  2. Si vous ne l'avez pas déjà fait, activez l'API OS Login en exécutant la commande suivante :

    gcloud services enable oslogin.googleapis.com
    
  3. Pour obtenir les autorisations nécessaires pour créer et exécuter un job en tant qu'utilisateur non racine, demandez à votre administrateur de vous accorder les rôles IAM suivants :

    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.

Créer un job qui s'exécute en tant qu'utilisateur non racine

Créez un job Batch qui exécute des exécutables via votre propre compte utilisateur en procédant comme suit :

Utilisez Google Cloud CLI ou l'API REST pour créer un job qui inclut le champ runAsNonRoot défini sur true dans le corps principal du fichier JSON :

"runAsNonRoot": true

Par exemple, un job qui exécute des exécutables en tant qu'utilisateur non racine aurait un fichier de configuration JSON semblable à ce qui suit :

{
    "taskGroups": [
      {
        "taskSpec": {
          "runnables": [
            {
              "script": {
                "text": "echo Hello World! This is task $BATCH_TASK_INDEX executed by $(whoami)."
              }
            }
          ]
        },
        "taskCount": 3,
        "runAsNonRoot": true
      }
    ],
    "logsPolicy": {
        "destination": "CLOUD_LOGGING"
    }
}

Étapes suivantes