In diesem Dokument wird beschrieben, wie Sie das Dienstkonto eines Batchjobs angeben. Das Dienstkonto wirkt sich auf die Ressourcen und Anwendungen aus, 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 mit allen VMs in einem Projekt verknüpft ist. Daher bietet die Verwendung eines benutzerdefinierten Dienstkontos eine bessere Kontrolle bei der Verwaltung der Berechtigungen eines Jobs und ist eine empfohlene Best Practice zur Begrenzung von Berechtigungen.
Weitere Informationen zum Dienstkonto eines Jobs
Hinweise
- 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.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Steuern des Zugriffs für 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, das standardmäßig das Compute Engine-Standarddienstkonto ist
-
Batch-Job-Editor (
-
So rufen Sie Dienstkonten auf:
Dienstkonten ansehen (
roles/iam.serviceAccountViewer
) für das Projekt
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.
-
So erstellen Sie einen Job:
-
Geben Sie das Dienstkonto an, das Sie für diesen Job verwenden möchten. Achten Sie darauf, Dieses Dienstkonto hat alle erforderlichen Berechtigungen zum Ausführen Ihres Jobs.
Weitere Informationen zum Ansehen von Dienstkonten und zu den erforderlichen Berechtigungen für das Dienstkonto eines Jobs
Job erstellen, für den ein benutzerdefiniertes Dienstkonto verwendet wird
Wenn Sie einen Job erstellen möchten, der ein benutzerdefiniertes Dienstkonto verwendet, wählen Sie eine der folgenden Methoden aus:
- Geben Sie das benutzerdefinierte Dienstkonto in der Jobdefinition 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 Jobdefinition an.
In diesem Abschnitt wird anhand eines Beispiels erläutert, wie Sie einen Job erstellen, der eine benutzerdefinierte Dienstkonto. Sie können einen Job erstellen, der ein benutzerdefiniertes Dienstkonto verwendet: der gcloud CLI, Batch API, Java, Node.js oder Python.
gcloud
Wenn Sie mit der gcloud CLI einen Job erstellen möchten, der ein benutzerdefiniertes Dienstkonto verwendet, verwenden Sie den Befehl gcloud batch jobs submit
und geben Sie das benutzerdefinierte Dienstkonto in der Konfigurationsdatei des Jobs an.
So erstellen Sie beispielsweise einen Script-Job, 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 einen Job erstellen möchten, für den ein benutzerdefiniertes Dienstkonto mit der Batch API verwendet wird, 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, die folgende Anfrage stellen:
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
: die E-Mail-Adresse Ihres Dienstkonto. Wenn das FeldserviceAccount
nicht angegeben ist, wird der Wert auf das Compute Engine-Standarddienstkonto festgelegt.
Java
Node.js
Python
Nächste Schritte
- Wenn beim Erstellen oder Ausführen eines Jobs Probleme auftreten, lesen Sie den Hilfeartikel Fehlerbehebung.
- Aufgaben und Jobs ansehen
- Weitere Informationen zu Optionen zum Erstellen von Jobs