En este documento se explica cómo especificar la cuenta de servicio de un trabajo de Batch, que influye en los recursos y las aplicaciones a los que pueden acceder las VMs de un trabajo. Si no especificas una cuenta de servicio personalizada, los trabajos usarán de forma predeterminada la cuenta de servicio predeterminada de Compute Engine, que se adjunta automáticamente a todas las VMs de un proyecto. Por lo tanto, usar una cuenta de servicio personalizada te permite controlar mejor los permisos de una tarea y es una práctica recomendada para limitar los privilegios.
Consulta más información sobre la cuenta de servicio de un trabajo.
Antes de empezar
- Si no has usado Batch antes, consulta el artículo Empezar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para controlar el acceso a los trabajos mediante cuentas de servicio personalizadas, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Para crear un trabajo, sigue estos pasos:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine.
-
Editor de trabajos por lotes (
-
Para ver las cuentas de servicio, sigue estos pasos:
Ver cuentas de servicio (
roles/iam.serviceAccountViewer
) en el proyecto
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
-
Para crear un trabajo, sigue estos pasos:
-
Identifica la cuenta de servicio que quieras usar en este trabajo. Asegúrate de que esta cuenta de servicio tenga todos los permisos necesarios para ejecutar el trabajo.
Consulta más información sobre cómo ver las cuentas de servicio y los permisos necesarios para la cuenta de servicio de un trabajo.
Crear 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, tal como se muestra en esta sección.
- Usa una plantilla de instancia de Compute Engine y especifica la cuenta de servicio personalizada tanto en la plantilla de instancia como en la definición del trabajo.
En esta sección se muestra un ejemplo de cómo crear un trabajo que use una cuenta de servicio personalizada. Puedes crear un trabajo que use una cuenta de servicio personalizada con la CLI de gcloud, la API Batch, Java, Node.js o Python.
gcloud
Para crear un trabajo que use una cuenta de servicio personalizada con la CLI de gcloud, 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, haz lo siguiente:
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" } } }
donde
SERVICE_ACCOUNT_EMAIL
es la dirección de correo de tu cuenta de servicio. Si no se especifica el camposerviceAccount
, se asigna el valor de la cuenta de servicio predeterminada de Compute Engine.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 Batch, usa el método jobs.create
y especifica tu 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, haz 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"
}
}
}
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de tu proyecto.SERVICE_ACCOUNT_EMAIL
: la dirección de correo de tu cuenta de servicio. Si no se especifica el camposerviceAccount
, se asigna el valor de la cuenta de servicio predeterminada de Compute Engine.
Java
Node.js
Python
Siguientes pasos
- Si tienes problemas para crear o ejecutar un trabajo, consulta la sección Solución de problemas.
- Ver trabajos y tareas.
- Consulta más información sobre las opciones de creación de trabajos.