Saltar a contenido

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 admin no 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

  1. Autenticación: OAuth 2.1 con PKCE S256, o un token de servicio web opcional.
  2. Alcances: read, write, admin. Sin el alcance → HTTP 403 insufficient_scope.
  3. Capabilities del plugin y permisos de Moodle, comprobados en contexto.
  4. Escritura desactivada por defecto; además, cada tool se puede desactivar por separado.
  5. Borrados seguros: simulación por defecto; dryRun: false más confirm: true para borrar.
  6. Comprobación de Origin: un Origin de navegador presente y desconocido recibe HTTP 403.
  7. Límite de peticiones por usuario y minuto.
  8. 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.
  9. Almacenamiento: tokens, códigos y secretos de cliente se guardan como hash SHA-256. Los tokens en claro nunca se registran.
  10. URI de redirección: HTTPS, HTTP de loopback o un esquema privado de app nativa. Se rechazan javascript:, data: y file:.

Privacidad

El proveedor de privacidad exporta y borra los clientes, consentimientos, tokens (en hash) y sesiones de un usuario.