Jobs als Nutzer ohne Root-Berechtigung erstellen und ausführen

In diesem Dokument wird beschrieben, wie Sie einen Batch-Job als Nicht-Root-Nutzer erstellen und ausführen.

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

Hinweise

  1. Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Abschnitt Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
  2. Wenn Sie die OS Login API noch nicht aktiviert haben, führen Sie den folgenden Befehl aus:

    gcloud services enable oslogin.googleapis.com
    
  3. Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, 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

Erstellen Sie einen Batch-Job, der ausführbare Dateien über Ihr eigenes Nutzerkonto ausführt. Gehen Sie dazu so vor:

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

"runAsNonRoot": true

Ein Job, der ausführbare Dateien als Nicht-Root-Nutzer ausführt, hätte beispielsweise eine JSON-Konfigurationsdatei, die 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