En esta página, se proporcionan sugerencias para proteger la creación y configuración de colas. La clave es restringir los métodos de administración de colas a un pequeño conjunto de personas o entidades. En el caso de las organizaciones grandes, podría ser necesario usar una cuenta de servicio para ejecutar software que aplique una configuración de colas adecuada.
La idea general es separar a los usuarios y a las demás entidades en tres categorías.
- Administradores de colas: Los usuarios de este grupo tienen permiso para llamar a los métodos de administración de colas de Cloud Tasks o para subir archivos
queue.yaml
. Este grupo está restringido a un pequeño conjunto de usuarios a fin de reducir el riesgo de configuración de la cola, en particular cuando se mezcla inadvertidamentequeue.yaml
y los métodos de administración de colas de Cloud Tasks. - Trabajadores de Cloud Tasks: Los usuarios de este grupo tienen permiso para realizar interacciones comunes con Cloud Tasks como poner tareas en una cola o quitarlas. No tienen permiso para llamar a los métodos de administración de colas de Cloud Tasks.
- Implementadores de App Engine: Para los proyectos que tienen aplicaciones de App Engine, los usuarios de este grupo tienen permiso para implementar la aplicación. No pueden subir archivos
queue.yaml
ni realizar llamadas a la API de Cloud Tasks, lo que permite a los administradores de colas aplicar las políticas adecuadas.
En este esquema, los usuarios que son administradores de colas no deberían ser también trabajadores de Cloud Tasks, ya que en ese caso la separación sería inútil.
Si tu proyecto usa los métodos de administración de colas de Cloud Tasks exclusivamente, tal vez sea conveniente que los administradores de colas no sean también implementadores de App Engine, ya que esto haría posible que alguien suba un archivo queue.yaml
por error.
Proyectos y organizaciones pequeños
Las organizaciones y los proyectos pequeños pueden asignar funciones de administración de identidades y accesos (IAM) directamente a los usuarios para ubicarlos en los grupos anteriores. Esto tiene sentido para los equipos que prefieren una configuración más simple o que hacen cambios en la configuración de las colas o implementaciones de aplicaciones de App Engine manualmente.
Para agregar usuarios a estos grupos, sigue estos pasos:
Administrador de colas
Como administrador del proyecto, otorga la función
cloudtasks.queueAdmin
a los usuarios que pueden realizar llamadas a la API de administración de colas de Cloud Tasks o subir archivosqueue.yaml
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/cloudtasks.queueAdmin
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID de tu proyecto.EMAIL
: Es el correo electrónico del usuario miembro.
Como usuario con la función
cloudtasks.queueAdmin
, sigue las prácticas recomendadas anteriores y elige uno de los siguientes métodos para cambiar la configuración de la cola.Usar la API de Cloud Tasks para cambiar la configuración de las colas
Sube
queue.yaml
congcloud
:gcloud app deploy queue.yaml
Trabajador de Cloud Tasks
Como a menudo hay muchos usuarios autorizados a interactuar con Cloud Tasks, puedes asignar funciones a las cuentas de servicio en lugar de usuarios individuales. Este tipo de uso es común en la producción. Para obtener más información, consulta Proyectos y organizaciones grandes.
Como administrador del proyecto, otorga funciones a los usuarios que tienen permiso para interactuar con Cloud Tasks, pero no para cambiar la configuración de las colas:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.enqueuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.dequeuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskRunner gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskDeleter
Reemplaza
PROJECT_ID
por el ID de tu proyecto.
Como usuario con una o más de las funciones otorgadas en los pasos anteriores, puedes interactuar con la API de Cloud Tasks.
Implementador de App Engine
Como administrador del proyecto, otorga funciones a los usuarios que tienen permiso para implementar aplicaciones de App Engine, pero no tienen permitido modificar las configuraciones de las colas ni interactuar con las tareas:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/appengine.deployer gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/appengine.serviceAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/storage.admin
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID de tu proyecto.EMAIL
: El correo electrónico del usuario miembro
Como usuario con las funciones otorgadas en los pasos anteriores, implementa una aplicación de App Engine:
gcloud app deploy app.yaml
Proyectos y organizaciones grandes
Los proyectos y las organizaciones grandes pueden usar cuentas de servicio para separar los deberes y las responsabilidades. Esto tiene sentido para los equipos con infraestructura compleja a fin de cambiar la configuración de las colas y, quizás, implementar aplicaciones de App Engine.
Para seguir el principio de privilegio mínimo y simplificar la administración de acceso, estas instrucciones usan la identidad temporal como cuenta de servicio. Para obtener más información sobre este patrón, consulta Usa el robo de identidad de cuentas de servicio en la documentación de autenticación de Google Cloud.
A continuación, se brindan instrucciones para configurar estas cuentas de servicio.
Administrador de colas
Como administrador del proyecto, crea la cuenta de servicio.
gcloud iam service-accounts create queue-admin \ --display-name "Queue Admin"
Otorga la función
cloudtasks.queueAdmin
a la cuenta de servicio para que pueda subir archivosqueue.yaml
y realizar llamadas a la API de administración de colas de Cloud Tasks.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:queue-admin@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.queueAdmin
Reemplaza
PROJECT_ID
por el ID de tu proyecto.Permitir de forma selectiva la suplantación del "Administrador de colas" cuenta de servicio que crear.
Por lo general, debería ser un grupo pequeño de principales que actúen como cola. de Google Workspace for Education. Otorga a estas principales el
iam.serviceAccountTokenCreator
en el rol “Administrador de colas” de la cuenta de servicio que creaste. Para obtener más información, consulta Cómo otorgar o revocar un solo rol en la documentación de IAM.Sigue las prácticas recomendadas que se describen en Usa Queue Management o queue.yaml, y elige una de las los siguientes métodos para cambiar la configuración de las colas:
Usar Cloud Tasks para cambiar la configuración de las colas
Sube
queue.yaml
con la CLI de gcloud
Trabajador de Cloud Tasks
Como administrador del proyecto, crea la cuenta de servicio.
gcloud iam service-accounts create cloud-tasks-worker \ --display-name "Cloud Tasks Worker"
Otórgale funciones a la cuenta de servicio para que pueda interactuar con Cloud Tasks, pero no cambiar la configuración de las colas.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.enqueuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.dequeuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskRunner gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskDeleter
Reemplaza
PROJECT_ID
por el ID de tu proyecto.Permite de forma selectiva la suplantación de identidad de la cuenta de servicio "Cloud Tasks Worker" que creaste.
Para las principales que interactúan con Cloud Tasks, otorga el permiso
iam.serviceAccountTokenCreator
rol en el “Trabajador de Cloud Tasks” la cuenta de servicio que creaste. Para aprender a hacerlo, ver Cómo otorgar o revocar un solo rol en la documentación de IAM.
Implementador de App Engine
Como administrador del proyecto, crea la cuenta de servicio.
gcloud iam service-accounts create app-engine-deployer \ --display-name "App Engine Deployer"
Otorga funciones a la cuenta de servicio para que pueda implementar aplicaciones de App Engine, pero no
queue.yaml
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:app-engine-deployer@PROJECT_ID.iam.gserviceaccount.com \ --role roles/appengine.deployer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:app-engine-deployer@PROJECT_ID.iam.gserviceaccount.com \ --role roles/appengine.serviceAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:app-engine-deployer@PROJECT_ID.iam.gserviceaccount.com \ --role roles/storage.admin
Reemplaza
PROJECT_ID
por el ID de tu proyecto.Permite de forma selectiva la suplantación de identidad de la cuenta de servicio "Implementador de App Engine" que creaste.
Para las principales que implementan servicios de App Engine, otorga el permiso
iam.serviceAccountTokenCreator
en el rol de “implementador de App Engine” de la cuenta de servicio que creaste. Para aprender cómo, consulta Cómo otorgar o revocar un solo rol en la documentación de IAM.
Limita el acceso a colas individuales
Si tienes varias colas en un proyecto y quieres limitar el acceso a usuarios
puedes usar políticas de IAM a nivel de la cola en lugar de
a nivel de proyecto. Para limitar el acceso por cola, usa el comando gcloud tasks queues add-iam-policy-binding
. Por ejemplo:
gcloud tasks queues add-iam-policy-binding QUEUE_NAME --location=LOCATION \ --member=serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/cloudtasks.enqueuer
Reemplaza lo siguiente:
QUEUE_NAME
: Es el nombre de tu fila.LOCATION
: Es la ubicación de la cola.PROJECT_ID
: Es el ID de tu proyecto.
¿Qué sigue?
- Cuentas de servicio
- Comprende las cuentas de servicio
- Administra el acceso a proyectos, carpetas y organizaciones
- Crea y administra cuentas de servicio
- Usa la identidad de otra cuenta de servicio