Modo solo lectura
El modo solo lectura bloquea todas las operaciones de modificación, permitiendo únicamente consultas SELECT.
Configuración
Sección titulada «Configuración»# Activar modo solo lecturaMSSQL_READ_ONLY=trueComportamiento
Sección titulada «Comportamiento»Operaciones permitidas
Sección titulada «Operaciones permitidas»-- Todas las consultas SELECTSELECT * FROM usersSELECT u.*, o.total FROM users u JOIN orders o ON u.id = o.user_id
-- SubconsultasSELECT * FROM (SELECT id, name FROM users) sub
-- CTEsWITH active AS (SELECT * FROM users WHERE active = 1)SELECT * FROM active
-- Agregaciones y funciones de ventanaSELECT department, AVG(salary) FROM employees GROUP BY departmentOperaciones bloqueadas
Sección titulada «Operaciones bloqueadas»-- Modificaciones de datosINSERT INTO users VALUES (1, 'test') -- BloqueadoUPDATE users SET name = 'nuevo' WHERE id = 1 -- BloqueadoDELETE FROM users WHERE id = 1 -- Bloqueado
-- DDLCREATE TABLE temp (id INT) -- BloqueadoDROP TABLE users -- BloqueadoALTER TABLE users ADD col INT -- Bloqueado
-- Ejecución de código peligrosaEXEC xp_cmdshell 'dir' -- Siempre bloqueadoEXEC sp_executesql '...' -- Siempre bloqueadoEXEC sp_configure ... -- Siempre bloqueadoLecturas administrativas y de esquema permitidas
Sección titulada «Lecturas administrativas y de esquema permitidas»Aunque el modo es de solo lectura, se permiten ciertas operaciones de administración e introspección de esquema que son inherentemente de solo lectura. Esto facilita el descubrimiento de la base de datos por parte de herramientas y asistentes de IA:
-- Procedimientos de sistema seguros para exploración de esquemaEXEC sp_help 'dbo.Usuarios' -- Estructura de una tablaEXEC sp_helptext 'dbo.MiProcedimiento' -- Código fuente de un objetoEXEC sp_spaceused 'dbo.Pedidos' -- Tamaño y uso de espacioEXEC sp_columns @table_name = 'Clientes'EXEC sp_fkeys 'Pedidos'Estos procedimientos están explícitamente permitidos porque no modifican datos ni configuración. Cualquier otro procedimiento del sistema (o EXEC de SQL dinámico) sigue estando bloqueado.
Se recomienda preferentemente el uso de las herramientas dedicadas explore e inspect para la mayoría de los casos de descubrimiento de esquema.
Validación de consultas
Sección titulada «Validación de consultas»La validación usa expresiones regulares con word boundaries (\bINSERT\b, \bUPDATE\b, etc.) para evitar falsos positivos. Por ejemplo:
-- Permitido (no contiene la palabra INSERT como operación)SELECT created_at FROM transactions
-- Permitido (update_count es un nombre de columna, no una operación)SELECT update_count FROM statistics
-- Bloqueado (contiene la operación UPDATE)UPDATE users SET status = 'active'Combinación con whitelist
Sección titulada «Combinación con whitelist»Para permitir modificaciones solo en tablas específicas, combina con MSSQL_WHITELIST_TABLES:
MSSQL_READ_ONLY=trueMSSQL_WHITELIST_TABLES=temp_ai,v_temp_iaConsulta la sección Whitelist de tablas para más detalles.