In diesem Dokument wird beschrieben, wie Sie einen Batch-Job als Nicht-Root-Nutzer erstellen und ausführen.
Batch führt standardmäßig Runnables als Root-Nutzer aus. Wenn Batch Runnables als Nicht-Root-Nutzer ausführen soll, etwa um eine Anwendung auszuführen, die Root-Nutzer nicht zulässt oder um die Sicherheitsanforderungen zu erfüllen, erstellen Sie einen Batchjob mit OS Login. Wenn Sie OS Login in einem Batch-Job aktivieren, konfiguriert OS Login für Sie ein Nutzerkonto auf den VMs, auf denen Ihr Job ausgeführt wird. Alle Runnables im Job werden dann über Ihr Nutzerkonto auf der VM und nicht vom Root-Nutzer ausgeführt.
Hinweise
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie Erste Schritte mit Batch. Aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
Aktivieren Sie die OS Login API, falls noch nicht geschehen. Führen Sie dazu den folgenden Befehl aus:
gcloud services enable oslogin.googleapis.com
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen und Ausführen eines Jobs als Nicht-Root-Nutzer benötigen:
-
Batchjob-Bearbeiter (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für das Dienstkonto des Jobs, das standardmäßig das Compute Engine-Standarddienstkonto ist -
Compute OS Login (
roles/compute.osLogin
) oder Compute OS-Administrator-Log-in (roles/compute.osAdminLogin
) für das Projekt -
Wenn Sie aus einer anderen Organisation als das Projekt stammen: Externer Nutzer von Compute OS Login (
roles/compute.osLoginExternalUser
) in der Organisation des Projekts
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
-
Batchjob-Bearbeiter (
Job erstellen, der als Nicht-Root-Nutzer ausgeführt wird
Erstellen Sie einen Batchjob, der ausführbare Dateien über Ihr eigenes Nutzerkonto ausführt. Gehen Sie dazu so vor:
Verwenden Sie die Google Cloud CLI oder die REST API, um einen Job zu erstellen, bei dem das Feld runAsNonRoot
im Haupttext der JSON-Datei auf true
gesetzt ist:
"runAsNonRoot": true
Beispielsweise hat ein Job, der ausführbare Dateien als Nicht-Root-Nutzer ausführt, eine JSON-Konfigurationsdatei ähnlich der folgenden:
{
"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
- Informationen zu Problemen beim Erstellen oder Ausführen eines Jobs finden Sie unter Fehlerbehebung.
- Aufträge und Aufgaben ansehen
- Möglichkeiten zur Joberstellung