Questo documento spiega come specificare l'account di servizio di un job Batch, che influisce sulle risorse e sulle applicazioni a cui possono accedere le VM di un job. Se non specifichi un account di servizio personalizzato, per impostazione predefinita i job utilizzano l'account di servizio predefinito di Compute Engine, che per impostazione predefinita viene collegato automaticamente a tutte le VM di un progetto. Pertanto, l'utilizzo di un account di servizio personalizzato offre un maggiore controllo nella gestione delle autorizzazioni di un job ed è una best practice consigliata per limitare i privilegi.
Scopri di più sull'account di servizio di un job.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la guida introduttiva all'utilizzo di Batch e attivalo completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per controllare l'accesso per i job che utilizzano account di servizio personalizzati, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per creare un job:
-
Batch Job Editor (
roles/batch.jobsEditor
) nel progetto -
Utente dell'account di servizio (
roles/iam.serviceAccountUser
) nell'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito
-
Batch Job Editor (
-
Per visualizzare gli account di servizio:
Visualizza account di servizio (
roles/iam.serviceAccountViewer
) nel progetto
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Per creare un job:
-
Identifica il service account che vuoi utilizzare per questo job. Assicurati che questo account di servizio disponga di tutte le autorizzazioni necessarie per eseguire il job.
Scopri di più sulla visualizzazione degli account di servizio e sulle autorizzazioni necessarie per l'account di servizio di un job.
Creare un job che utilizza un account di servizio personalizzato
Per creare un job che utilizza un account di servizio personalizzato, seleziona uno dei seguenti metodi:
- Specifica l'account di servizio personalizzato nella definizione del job, come mostrato in questa sezione.
- Utilizza un modello di istanza Compute Engine e specifica l'account di servizio personalizzato sia nel modello di istanza sia nella definizione del job.
Questa sezione fornisce un esempio di come creare un job che utilizza un account di servizio personalizzato. Puoi creare un job che utilizza un account di servizio personalizzato utilizzando gcloud CLI, l'API Batch, Java, Node.js o Python.
gcloud
Per creare un job che utilizza un account di servizio personalizzato utilizzando gcloud CLI, utilizza il comando gcloud batch jobs submit
e specifica l'account di servizio personalizzato nel file di configurazione del job.
Ad esempio, per creare un job di script che utilizza un account di servizio personalizzato:
Crea un file JSON nella directory attuale denominato
hello-world-service-account.json
con i seguenti contenuti:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello World! This is task $BATCH_TASK_INDEX." } } ] } } ], "allocationPolicy": { "serviceAccount": { "email": "SERVICE_ACCOUNT_EMAIL" } } }
dove
SERVICE_ACCOUNT_EMAIL
è l'indirizzo email del tuo account di servizio. Se il camposerviceAccount
non è specificato, il valore viene impostato sul service account Compute Engine predefinito.Esegui questo comando:
gcloud batch jobs submit example-service-account-job \ --location us-central1 \ --config hello-world-service-account.json
API
Per creare un job che utilizza un account di servizio personalizzato con l'API Batch, utilizza il metodo jobs.create
e specifica l'account di servizio personalizzato nel campo allocationPolicy
.
Ad esempio, per creare un job di script che utilizza un account di servizio personalizzato, effettua la seguente richiesta:
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"
}
}
}
Sostituisci quanto segue:
PROJECT_ID
: il ID progetto del tuo progetto.SERVICE_ACCOUNT_EMAIL
: l'indirizzo email del tuo account servizio. Se il camposerviceAccount
non è specificato, il valore viene impostato sul service account Compute Engine predefinito.
Java
Node.js
Python
Passaggi successivi
- Se hai problemi a creare o eseguire un job, consulta la sezione Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni di creazione dei job.