Zugriff auf einen Job mit einem benutzerdefinierten Dienstkonto steuern

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

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:

  1. 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 Feld serviceAccount nicht angegeben ist, wird der Wert auf das Compute Engine-Standarddienstkonto festgelegt.

  2. 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:

Nächste Schritte