In diesem Dokument wird erläutert, wie Sie das Dienstkonto eines Batch-Jobs angeben, was sich auf die Ressourcen und Anwendungen auswirkt, auf die die VMs eines Jobs zugreifen können. Wenn Sie kein benutzerdefiniertes Dienstkonto angeben, wird für Jobs standardmäßig das Compute Engine-Standarddienstkonto verwendet, das standardmäßig automatisch an alle VMs in einem Projekt angehängt wird. Daher bietet die Verwendung eines benutzerdefinierten Dienstkontos mehr Kontrolle bei der Verwaltung der Berechtigungen eines Jobs und ist eine empfohlene Best Practice zum Einschränken der Berechtigungen.
Weitere Informationen zum Dienstkonto eines Jobs
Hinweise
- Wenn Sie Batch noch nie verwendet haben, lesen Sie die Informationen unter Erste Schritte mit Batch. Aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Steuern des Zugriffs auf Jobs mit benutzerdefinierten Dienstkonten benötigen:
-
So erstellen Sie einen Job:
-
Batch Job Editor (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) im Dienstkonto des Jobs. Dies ist standardmäßig das Compute Engine-Standarddienstkonto.
-
Batch Job Editor (
-
So rufen Sie Dienstkonten auf:
Rufen Sie die Dienstkonten auf (
roles/iam.serviceAccountViewer
) für das Projekt.
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.
-
So erstellen Sie einen Job:
-
Ermitteln Sie das Dienstkonto, das Sie für diesen Job verwenden möchten. Achten Sie darauf, dass dieses Dienstkonto alle erforderlichen Berechtigungen zum Ausführen des Jobs hat.
Weitere Informationen finden Sie unter Dienstkonten aufrufen und erforderliche Berechtigungen für das Dienstkonto eines Jobs.
Job mit benutzerdefiniertem Dienstkonto erstellen
Wählen Sie eine der folgenden Methoden aus, um einen Job zu erstellen, der ein benutzerdefiniertes Dienstkonto verwendet:
- Geben Sie das benutzerdefinierte Dienstkonto in der Definition des Jobs an, wie in diesem Abschnitt gezeigt.
- Verwenden Sie eine Compute Engine-Instanzvorlage und geben Sie das benutzerdefinierte Dienstkonto sowohl in der Instanzvorlage als auch in der Definition des Jobs an.
Dieser Abschnitt enthält ein Beispiel für das Erstellen eines Jobs, der ein benutzerdefiniertes Dienstkonto verwendet. Mit der gcloud CLI oder Batch API können Sie einen Job erstellen, der ein benutzerdefiniertes Dienstkonto verwendet.
gcloud
Verwenden Sie zum Erstellen eines Jobs, der ein benutzerdefiniertes Dienstkonto verwendet, den Befehl gcloud batch jobs submit
und geben Sie das benutzerdefinierte Dienstkonto in der Konfigurationsdatei des Jobs an.
So erstellen Sie beispielsweise einen Skriptjob, der ein benutzerdefiniertes Dienstkonto verwendet:
Erstellen Sie im aktuellen Verzeichnis eine JSON-Datei mit dem Namen
hello-world-service-account.json
und folgendem Inhalt:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello World! This is task $BATCH_TASK_INDEX." } } ] } } ], "allocationPolicy": { "serviceAccount": { "email": "SERVICE_ACCOUNT_EMAIL" } } }
Dabei ist
SERVICE_ACCOUNT_EMAIL
die E-Mail-Adresse Ihres Dienstkontos. Wenn das FeldserviceAccount
nicht angegeben ist, wird der Wert auf das Compute Engine-Standarddienstkonto festgelegt.Führen Sie dazu diesen Befehl aus:
gcloud batch jobs submit example-service-account-job \ --location us-central1 \ --config hello-world-service-account.json
API
Wenn Sie mit der Batch API einen Job erstellen möchten, der ein benutzerdefiniertes Dienstkonto verwendet, verwenden Sie die Methode jobs.create
und geben Sie Ihr benutzerdefiniertes Dienstkonto im Feld allocationPolicy
an.
Um beispielsweise einen Skriptjob zu erstellen, der ein benutzerdefiniertes Dienstkonto verwendet, stellen Sie die folgende Anfrage:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-service-account-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
}
}
],
"allocationPolicy": {
"serviceAccount": {
"email": "SERVICE_ACCOUNT_EMAIL"
}
}
}
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID Ihres Projekts.SERVICE_ACCOUNT_EMAIL
ist die E-Mail-Adresse Ihres Dienstkontos. Wenn das FeldserviceAccount
nicht angegeben ist, wird der Wert auf das Compute Engine-Standarddienstkonto festgelegt.
Nächste Schritte
- Wenn Probleme beim Erstellen oder Ausführen eines Jobs auftreten, lesen Sie die Informationen unter Fehlerbehebung.
- Aufträge und Aufgaben ansehen
- Weitere Informationen zu Joberstellungsoptionen