Questo documento spiega come specificare il 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 utilizzano per impostazione predefinita il account di servizio predefinito di Compute Engine, che viene collegato automaticamente a tutte le VM di un progetto per impostazione predefinita. Pertanto, l'utilizzo di un service account personalizzato offre un maggiore controllo nella gestione delle autorizzazioni di un job ed è una best practice consigliata per limitare i privilegi.
Scopri di più sul service account di un job.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la guida Inizia a utilizzare Batch e attiva Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per controllare l'accesso ai job che utilizzano service account personalizzati, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per creare un job:
- Batch Job Editor (
roles/batch.jobsEditor) sul progetto - Utente account di servizio (
roles/iam.serviceAccountUser) sul service account del job, che per impostazione predefinita è il service account predefinito di Compute Engine
- Batch Job Editor (
-
Per visualizzare i service account:
Visualizza service account (
roles/iam.serviceAccountViewer) sul progetto
Per saperne di più sulla concessione dei ruoli, consulta Gestisci 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 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 dei service account e sulle autorizzazioni necessarie per il service account 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 il account di servizio personalizzato nella definizione del job, come mostrato in questa sezione.
- Utilizza un modello di istanza Compute Engine e specifica il 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 il
gcloud CLI, utilizza il gcloud batch jobs submit comando
e specifica il 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 denominato
hello-world-service-account.jsoncon 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 ilserviceAccountcampo non viene specificato, il valore viene impostato sul service account predefinito di Compute Engine.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 utilizzando l'
API Batch, utilizza il
jobs.create metodo
e specifica il 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 tuo progetto.SERVICE_ACCOUNT_EMAIL: l'indirizzo email del tuo account di servizio. Se ilserviceAccountcampo non viene specificato, il valore viene impostato sul service account predefinito di Compute Engine.
Java
Node.js
Python
Passaggi successivi
- Se riscontri problemi durante la creazione o l'esecuzione di un job, consulta la sezione Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni di creazione dei job.