Seguridad y permisos¶
El plugin se ejecuta como el usuario autenticado. No tiene ninguna puerta trasera de administrador. Un token de estudiante no puede crear cursos ni leer calificaciones ocultas.
Capabilities¶
| Capability | Roles por defecto (arquetipo) | Qué permite |
|---|---|---|
local/mcp:use |
Usuario autenticado (user) |
Abrir el endpoint. Todo usuario con sesión tiene este rol. |
local/mcp:read |
Usuario autenticado (user) |
Tools de lectura. Riesgo: datos personales. |
local/mcp:write |
Profesor con edición, gestor | Tools de escritura, en los contextos donde tiene el rol. Riesgo: spam, XSS, pérdida de datos. |
local/mcp:admin |
Profesor con edición, gestor | El alcance admin (incluye lectura y escritura), en los contextos donde tiene el rol. Riesgo: configuración, pérdida de datos, XSS, datos personales. |
El alcance
adminno es solo para administradores del sitio: por defecto lo tienen los profesores con edición y los gestores, en los contextos donde tienen ese rol. Es así a propósito.
El alcance admin solo vale en los contextos donde se tiene el rol. No convierte a un profesor con edición en administrador del sitio.
Los alcances se ofrecen a partir de cualquier asignación de rol, no solo de las de sistema. A un profesor con edición matriculado en un curso se le pueden emitir read, write y admin, y la página de consentimiento le ofrece ese mismo conjunto. A un estudiante o un profesor sin edición solo se le ofrece read. Después, cada tool vuelve a comprobar el curso.
Las cuatro se definen a nivel de sistema. Además, cada tool comprueba el permiso normal de Moodle en el curso o la categoría, el mismo que usa la interfaz (aparece en la referencia de tools).
Capas de protección¶
- Autenticación: OAuth 2.1 con PKCE S256, o un token de servicio web opcional.
- Alcances:
read,write,admin. Sin el alcance → HTTP 403insufficient_scope. - Capabilities del plugin y permisos de Moodle, comprobados en contexto.
- Escritura desactivada por defecto; además, cada tool se puede desactivar por separado.
- Borrados seguros: simulación por defecto;
dryRun: falsemásconfirm: truepara borrar. - Comprobación de Origin: un
Originde navegador presente y desconocido recibe HTTP 403. - Límite de peticiones por usuario y minuto.
- Auditoría: cada llamada a una tool va al registro de eventos de Moodle. Los argumentos que parecen tokens, secretos o contraseñas se ocultan.
- Almacenamiento: tokens, códigos y secretos de cliente se guardan como hash SHA-256. Los tokens en claro nunca se registran.
- URI de redirección: HTTPS, HTTP de loopback o un esquema privado de app nativa. Se rechazan
javascript:,data:yfile:.
Privacidad¶
El proveedor de privacidad exporta y borra los clientes, consentimientos, tokens (en hash) y sesiones de un usuario.