Questo documento spiega come specificare l'account di servizio di un job batch, che influenza le risorse e le applicazioni a cui le VM di un job possono accedere. Se non specifichi un account di servizio personalizzato, i job utilizzeranno per impostazione predefinita l'account di servizio predefinito di Compute Engine, che viene associato automaticamente a tutte le VM in un progetto per impostazione predefinita. 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 del job.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la Guida introduttiva all'utilizzo di Batch e abilita Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per controllare l'accesso ai job che utilizzano account di servizio personalizzati, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per creare un job:
-
Editor job batch (
roles/batch.jobsEditor
) nel progetto -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito
-
Editor job batch (
-
Per visualizzare gli account di servizio:
Visualizza gli account di servizio (
roles/iam.serviceAccountViewer
) nel progetto
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Per creare un job:
-
Identifica l'account di servizio 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.
Crea 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 o l'API Batch.
gcloud
Per creare un job che utilizza un account di servizio personalizzato con 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 corrente denominata
hello-world-service-account.json
con il seguente contenuto:{ "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 sull'account di servizio 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 mediante 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
: l'ID progetto del progetto.SERVICE_ACCOUNT_EMAIL
: l'indirizzo email del tuo account di servizio. Se il camposerviceAccount
non è specificato, il valore viene impostato sull'account di servizio Compute Engine predefinito.
Passaggi successivi
- In caso di problemi durante la creazione o l'esecuzione di un job, consulta Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni per la creazione di job.