Controlar el acceso a un trabajo con una cuenta de servicio personalizada

En este documento, se explica cómo especificar una cuenta de servicio de un trabajo por lotes, lo que influye en los recursos y aplicaciones a los que pueden acceder las VM de un trabajo. Si no especificas una cuenta de servicio personalizada, la configuración predeterminada de los trabajos usa la cuenta de servicio predeterminada de Compute Engine, que se conecta automáticamente a todas las VM de un proyecto de forma predeterminada. Por lo tanto, usar una cuenta de servicio personalizada proporciona un mayor control en la administración de los permisos de un trabajo y es una práctica recomendada para limitar privilegio.

Obtén más información sobre la cuenta de servicio de un trabajo.

Antes de comenzar

Crea un trabajo que use una cuenta de servicio personalizada

Para crear un trabajo que use una cuenta de servicio personalizada, selecciona uno de los siguientes métodos:

  • Especifica la cuenta de servicio personalizada en la definición de tu trabajo, como se muestra en esta sección.
  • Usa una plantilla de instancias de Compute Engine y especifica la cuenta de servicio personalizada en tu plantilla de instancias y en la definición de tu trabajo.

En esta sección, se proporciona un ejemplo de cómo crear un trabajo que usa una cuenta de servicio personalizada. Puedes crear un trabajo que use una cuenta de servicio personalizada con gcloud CLI o la API de Batch.

gcloud

Para crear un trabajo que use una cuenta de servicio personalizada con gcloud CLI, usa el comando gcloud batch jobs submit y especifica la cuenta de servicio personalizada en el archivo de configuración del trabajo.

Por ejemplo, para crear un trabajo de secuencia de comandos que use una cuenta de servicio personalizada, sigue estos pasos:

  1. Crea un archivo JSON en el directorio actual llamado hello-world-service-account.json con el siguiente contenido:

    {
        "taskGroups": [
            {
                "taskSpec": {
                    "runnables": [
                        {
                            "script": {
                                "text": "echo Hello World! This is task $BATCH_TASK_INDEX."
                            }
                        }
                    ]
                }
            }
        ],
        "allocationPolicy": {
            "serviceAccount": {
                "email": "SERVICE_ACCOUNT_EMAIL"
            }
        }
    }
    

    En el ejemplo anterior, SERVICE_ACCOUNT_EMAIL es la dirección de correo electrónico de la cuenta de servicio. Si no se especifica el campo serviceAccount, el valor se establece en la cuenta de servicio predeterminada de Compute Engine.

  2. Ejecuta el siguiente comando:

    gcloud batch jobs submit example-service-account-job \
      --location us-central1 \
      --config hello-world-service-account.json
    

API

Para crear un trabajo que use una cuenta de servicio personalizada con la API de Batch, usa el método jobs.create y especifica la cuenta de servicio personalizada en el campo allocationPolicy.

Por ejemplo, para crear un trabajo de secuencia de comandos que use una cuenta de servicio personalizada, realiza la siguiente solicitud:

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"
        }
    }
}

Reemplaza lo siguiente:

¿Qué sigue?