SEG-018SeguridadMejora
Quitar a los roles de la API los permisos de escritura que no usan
- Dificultad
- Avanzada
- Estimación
- 1d
- Estado
- Abierta
- Habilidades
- postgressupabase-rls
Zona sensible. Toca permisos, datos personales, el mapa, secretos o la identidad de marca. Necesita revisión de la titular y conviene haber completado alguna tarea antes.
Contexto
La migración 20261007000000_permisos_explicitos.sql copió tal cual los permisos que Supabase daba por defecto: anon y authenticated conservan insert, update y delete sobre tablas como auditoria, avales, intentos_aval, verificadas, moderadoras o xp_libro. Hoy no pasa nada porque RLS lo bloquea todo (comprobado en producción el 7-oct-2026), pero RLS es la única barrera. Si alguien desactiva RLS en una tabla desde el panel, por error o con una cuenta robada, esa tabla queda abierta a cualquiera con la clave pública.
Qué hacer
- Para cada tabla, listar qué operaciones usa de verdad cada rol: políticas RLS existentes, llamadas desde
src/, y funcionessecurity invokerque escriben con el rol de quien llama. - Migración nueva que revoque lo que sobra (por ejemplo,
revoke insert, update, delete on auditoria, avales, intentos_aval from anon, authenticated). Las funcionessecurity definersiguen escribiendo. - Ampliar
tests/db/permisos.test.ts: con RLS desactivado a propósito en la base de prueba,anonsigue sin poder escribir en las tablas sensibles. - Aplicar en producción con
npm run db:aplicary pasarnpm run instancia:comprobar.
Criterios de aceptación
Ninguna tabla sin política de escritura para
anonle da aanonel permiso de escribir.npm testynpm run e2e:realen verde.npm run instancia:comprobaren verde tras aplicar la migración.La titular revisa el PR.
¿Te la quedas?
- 1. Haz un fork y crea la rama
tarea/SEG-018-quitar-a-los-roles-de-la-api-los-permiso. - 2. En tareas/seguridad/SEG-018-quitar-a-los-roles-de-la-api-los-permisos-de-escr.md, cambia la cabecera:
estado: reservada asignada: tu_usuario_de_github
- 3. Abre un PR con ese cambio (commit firmado:
git commit -s). Al fusionarse, es tuya durante 14 días.