Controllare l'accesso a un job utilizzando un account di servizio personalizzato

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

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:

  1. 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 campo serviceAccount non è specificato, il valore viene impostato sull'account di servizio Compute Engine predefinito.

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

Passaggi successivi