En este documento, se explica cómo especificar la configuración cuenta de servicio, lo que influye en la recursos y aplicaciones a los que pueden acceder las VMs de un trabajo. Si no especificas una cuenta de servicio personalizada, las tareas 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 proporciona un mayor control en la administración de los permisos de un trabajo y se recomienda y las prácticas recomendadas para limitar privilegios.
Obtén más información sobre la cuenta de servicio de un trabajo.
Antes de comenzar
- Si nunca usaste Batch, revisa Comienza a usar Batch y habilitar Batch completando el requisitos previos para los proyectos y usuarios.
-
Si quieres obtener los permisos que necesitas para controlar el acceso a los trabajos con cuentas de servicio personalizadas, sigue estos pasos: solicita a tu administrador que te otorgue el los siguientes roles de IAM:
-
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 es la cuenta de servicio predeterminada de Compute Engine
-
Editor de trabajos por lotes (
-
Para ver las cuentas de servicio, haz lo siguiente:
Ver cuentas de servicio (
roles/iam.serviceAccountViewer
) en el proyecto
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Para crear un trabajo, sigue estos pasos:
-
Identifica la cuenta de servicio que quieres usar para este trabajo. Asegúrate de que esta cuenta de servicio tiene todos los permisos necesarios para ejecutar tu trabajo.
Obtén más información sobre visualizar cuentas de servicio y los permisos necesarios para la cuenta de servicio de un trabajo.
Crea un trabajo que use una cuenta de servicio personalizada
Para crear un trabajo que use una cuenta de servicio personalizada, selecciona una de las siguientes opciones: métodos:
- Especifica la cuenta de servicio personalizada en la definición de tu trabajo, como se muestra en esta sección.
- Usa un Plantilla de instancia de Compute Engine y especificar la cuenta de servicio personalizada en la plantilla de instancias y en la definición del trabajo.
En esta sección, se proporciona un ejemplo para crear un trabajo que use una cuenta de servicio personalizada. Puedes crear un trabajo que use una cuenta de servicio personalizada con con gcloud CLI, la API de Batch, Java o Python.
gcloud
Para crear un trabajo que use una cuenta de servicio personalizada con la
gcloud CLI, usa el comando gcloud batch jobs submit
y especificar la cuenta de servicio personalizada
en el archivo de configuración del trabajo.
Por ejemplo, para crear un trabajo de secuencia de comandos que usa 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" } } }
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 camposerviceAccount
, el valor se establece en 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
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, crea 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:
PROJECT_ID
: el ID del proyecto de tu proyecto.SERVICE_ACCOUNT_EMAIL
: Es la dirección de correo electrónico de tu cuenta de servicio. Si el botón CamposerviceAccount
no se especifica, el valor se establece en cuenta de servicio predeterminada de Compute Engine.
Java
Python
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Visualiza trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.