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
- 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.
Wenn Sie die OS Login API noch nicht aktiviert haben, führen Sie den folgenden Befehl aus:
gcloud services enable oslogin.googleapis.com
-
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:
-
Batch-Job-Editor (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für das Dienstkonto des Jobs, das standardmäßig das Standarddienstkonto für Compute Engine ist -
Compute OS-Login (
roles/compute.osLogin
) oder Compute OS-Administrator-Login (roles/compute.osAdminLogin
) für das Projekt -
Wenn Sie einer anderen Organisation als dem Projekt angehören:
Externer Nutzer von Compute OS-Login (
roles/compute.osLoginExternalUser
) in der Organisation des Projekts
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.
-
Batch-Job-Editor (
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
- Wenn Probleme beim Erstellen oder Ausführen eines Jobs auftreten, lesen Sie den Abschnitt Fehlerbehebung.
- Jobs und Aufgaben ansehen
- Weitere Optionen zum Erstellen von Jobs