Jobs als Nicht-Root-Nutzer erstellen und ausführen

In diesem Dokument wird beschrieben, wie Sie einen Batchjob als nicht-root-Nutzer erstellen und ausführen.

Standardmäßig werden ausführbare Dateien in Batch als Root-Nutzer ausgeführt. Wenn Sie möchten, dass Batch Runnables als eine nicht-Root-Nutzer sein, z. B. um eine Anwendung auszuführen, die keine zulassen oder Sicherheitsanforderungen zu erfüllen – erstellen Sie ein Batchjob, der OS Login verwendet. Wenn Sie OS Login in einem Batchjob aktivieren, konfiguriert OS Login ein Nutzerkonto für Sie auf den VMs, auf denen Ihr Job ausgeführt wird. Alle Runnables im Job sind und wird dann von Ihrem Nutzerkonto auf der VM und nicht vom Root-Nutzer ausgeführt.

Hinweise

  1. Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Hilfeartikel Batch-Dateien erstellen und ausführen und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
  2. Aktivieren Sie die OS Login API, falls noch nicht geschehen, indem Sie den folgenden Befehl ausführen:

    gcloud services enable oslogin.googleapis.com
    
  3. Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Ausführen eines Jobs als nicht-root-Nutzer benötigen:

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Job erstellen, der als Nutzer ohne Root-Berechtigung ausgeführt wird

So erstellen Sie einen Batch-Job, mit dem ausführbare Dateien über Ihr eigenes Nutzerkonto ausgeführt werden:

Verwenden Sie die Google Cloud CLI oder REST API, um einen Job erstellen, der enthält die Feld „runAsNonRoot im Haupttext der JSON-Datei auf true festgelegt:

"runAsNonRoot": true

Ein Job, bei dem ausführbare Dateien als nicht-root-Nutzer ausgeführt werden, hätte beispielsweise eine JSON-Konfigurationsdatei, die in etwa so aussieht:

{
    "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"
    }
}

Nächste Schritte