In diesem Dokument wird beschrieben, wie Sie das Dienstkonto eines Batch-Jobs angeben. Dies wirkt sich auf die Ressourcen und Anwendungen aus, auf die die VMs eines Jobs zugreifen können. Wenn Sie kein benutzerdefiniertes Dienstkonto angeben, verwenden Jobs standardmäßig das Compute Engine-Standarddienstkonto, 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 zur Einschränkung von Berechtigungen.
Weitere Informationen zum Dienstkonto eines Jobs
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.
-
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
) für das Dienstkonto des Jobs, das standardmäßig das Standarddienstkonto für Compute Engine ist
-
Batch-Job-Editor (
-
So rufen Sie Dienstkonten auf:
Dienstkonten aufrufen (
roles/iam.serviceAccountViewer
) im 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:
-
Identifizieren 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 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 Definition Ihres 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 Jobdefinition an.
In diesem Abschnitt finden Sie ein Beispiel dafür, wie Sie einen Job erstellen, der ein benutzerdefiniertes Dienstkonto verwendet. Sie können einen Job erstellen, der ein benutzerdefiniertes Dienstkonto verwendet, indem Sie die gcloud CLI, die Batch API, Java, Node.js oder Python verwenden.
gcloud
Wenn Sie einen Job erstellen möchten, der ein benutzerdefiniertes Dienstkonto verwendet, verwenden Sie den Befehl gcloud batch jobs submit
gcloud batch jobs submit
und geben Sie das benutzerdefinierte Dienstkonto in der Konfigurationsdatei des Jobs an.
So erstellen Sie beispielsweise einen Scriptjob, 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, der ein benutzerdefiniertes Dienstkonto über die Batch API verwendet, verwenden Sie die Methode jobs.create
und geben Sie Ihr benutzerdefiniertes Dienstkonto im Feld allocationPolicy
an.
Wenn Sie beispielsweise einen Scriptjob erstellen möchten, 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
: die E-Mail-Adresse Ihres Dienstkontos. Wenn das FeldserviceAccount
nicht angegeben ist, wird der Wert auf das Compute Engine-Standarddienstkonto festgelegt.
Java
Node.js
Python
Nächste Schritte
- Wenn Probleme beim Erstellen oder Ausführen eines Jobs auftreten, finden Sie weitere Informationen unter Fehlerbehebung.
- Jobs und Aufgaben ansehen
- Weitere Optionen zum Erstellen von Jobs