🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónEl token y los disparadores en GitHub Actions
5 tareas · 40 min · Principiante
Cada ejecución de un flujo de GitHub Actions recibe un token propio, el GITHUB_TOKEN, y se dispara por un evento que decide quién controla lo que corre. Con los cinco archivos de flujo de Mirto Pagos, una empresa ficticia de pagos con el repositorio mirto/pasarela-api, lees el YAML como lo leería un auditor: qué permisos trae cada trabajo, qué los dispara y qué código ejecutan. Todo es lectura de archivos de ejemplo en la consola del navegador; no se ejecuta nada.
Objetivo de la sala
Cada ejecución de un flujo de GitHub Actions recibe un token propio, el GITHUB_TOKEN, y se dispara por un evento que decide quién controla lo que corre. Con los cinco archivos de flujo de Mirto Pagos, una empresa ficticia de pagos con el repositorio mirto/pasarela-api, lees el YAML como lo leería un auditor: qué permisos trae cada trabajo, qué los dispara y qué código ejecutan. Todo es lectura de archivos de ejemplo en la consola del navegador; no se ejecuta nada.El token que GitHub entrega a cada ejecución tiene permisos por alcance: leer el contenido, escribir propuestas, publicar paquetes, pedir una identidad para la nube. Se fijan con la clave permissions, a nivel de flujo o de trabajo. Si el flujo no la declara, el token hereda lo que diga el ajuste por defecto del repositorio o de la organización, que puede ser solo lectura o lectura y escritura.
La recomendación de la documentación oficial es partir de lo mínimo y subir los permisos solo en el trabajo que los necesita. Así, si algo dentro de un trabajo se desvía, el token que hereda es pequeño.
Responde para continuar
¿Cuál es la forma más sana de fijar los permisos del token en un flujo de GitHub Actions?
Ver pista de ayuda
Es el principio de mínimo privilegio aplicado a una credencial que se emite sola en cada ejecución.
Un flujo con el evento pull_request que viene de una bifurcación corre con un token de solo lectura y sin secretos: es lo que le toca a una propuesta de un desconocido. El evento pull_request_target es distinto: corre en el contexto de la rama base, con acceso a los secretos y, según el flujo, con permisos de escritura. Está pensado para tareas como poner una etiqueta o un comentario, que no necesitan el código de quien propone.
El riesgo aparece cuando un flujo con pull_request_target descarga el código de la propuesta y lo ejecuta: entonces el código de un extraño corre con los privilegios de la rama base. La documentación oficial pide evitar este evento si no es necesario.
Abre los cinco flujos de .github/workflows y busca el que reúne las dos cosas.
Responde para continuar
Escribe el nombre (campo name) del flujo que se dispara con pull_request_target, descarga el código de la propuesta y lo ejecuta con un secreto.
Ver pista de ayuda
Mira en cada flujo el evento y, si hay un paso de descarga, el valor de ref. Hay dos flujos con pull_request_target y solo uno ejecuta lo descargado.
Para saber cuánto puede escribir un trabajo no basta con leer el flujo: hay que mirar también el ajuste del repositorio. Un trabajo sin permissions ni en el flujo ni en él mismo recibe el permiso por defecto, y el archivo de ajustes de Mirto Pagos dice cuál es.
Cuenta los trabajos con permiso de escritura efectivo: los que lo declaran y los que lo heredan.
Responde para continuar
Entre los cinco flujos, ¿cuántos trabajos tienen algún permiso con valor write de forma efectiva (incluido id-token), contando el que lo hereda del ajuste por defecto?
Ver pista de ayuda
Lee actions.txt y, flujo por flujo, anota si el permiso está declarado o heredado. Un flujo sin permissions no es de solo lectura si el ajuste dice lo contrario.
En el flujo que publica la imagen aparece id-token: write. Ese permiso no escribe en el repositorio: deja que el trabajo pida a GitHub un token OIDC de vida corta que un proveedor de nube puede aceptar a cambio de un acceso temporal. Es la alternativa a guardar una clave larga como secreto.
Responde para continuar
¿Qué permite el permiso id-token con valor write en un trabajo?
Ver pista de ayuda
Se emite por ejecución y caduca; sirve para identificarse ante un tercero, no para tocar el repositorio.
El flujo de la vista previa ejecuta el código de una propuesta externa con un secreto a mano. La corrección no es añadir una validación al script: es cambiar quién controla lo que corre. La vista previa de una propuesta ajena puede construirse con el evento pull_request, que no entrega secretos a las bifurcaciones; lo que sí necesite un secreto va en un paso posterior, ya sobre código revisado y aprobado.
Responde para continuar
¿Cómo se corrige el flujo que ejecuta código de una propuesta externa con un secreto?
Ver pista de ayuda
Si el código de un extraño corre con los privilegios de la rama base, ningún filtro posterior lo arregla.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.