Проще говоря, SQL validator - это охранник перед базой данных. Он не доверяет запросу только потому, что его написал AI. Сначала он разбирает SQL, проверяет тип операции, таблицы, колонки, лимиты, права доступа, параметры, риск утечки данных и только после этого разрешает выполнение.
Для SQL agent validator особенно важен. Агент переводит вопрос пользователя в SQL, но финальное решение о выполнении должен принимать backend. В production лучше начинать с read-only режима: разрешать только SELECT, запрещать INSERT, UPDATE, DELETE, DROP, ALTER и любые команды изменения структуры или данных.
Хороший SQL validator работает не строковым поиском по словам, а через SQL parser или безопасный query builder. Иначе можно пропустить сложный запрос, вложенный SELECT, комментарии, CTE, функции, обход фильтров или нестандартный синтаксис конкретной базы.
Валидация должна учитывать бизнес-правила. Например, пользователь может видеть только свой workspace, support-agent не должен читать финансовые таблицы, BI-agent может читать агрегированные метрики, а выгрузка персональных данных требует отдельного approval. SQL validator должен проверять не только синтаксис, но и контекст.
Важные меры: allowlist таблиц и колонок, обязательные WHERE-фильтры, LIMIT, timeout, max rows, dry run, EXPLAIN для тяжелых запросов, запрет чувствительных полей, параметризованные значения, audit log, trace id и понятное сообщение об отказе. Если запрос заблокирован, агент должен объяснить пользователю, что именно нужно уточнить или почему действие запрещено.
Примеры
- AI сгенерировал SELECT без LIMIT. SQL validator добавляет ограничение или блокирует запрос до уточнения.
- Пользователь просит удалить тестовые данные. Validator блокирует DELETE, потому что SQL agent работает только в read-only режиме.
- Запрос обращается к таблице payments, но роль пользователя разрешает только агрегированные отчеты. Validator возвращает отказ.
- SQL содержит WHERE без workspace_id. Validator не разрешает выполнить запрос, чтобы не показать данные других клиентов.
- Перед выполнением тяжелого JOIN validator запускает EXPLAIN и отклоняет запрос из-за слишком высокой стоимости.
Где используется
- безопасный SQL agent
- проверка text-to-SQL запросов
- read-only аналитика через AI
- защита персональных и финансовых данных
- ограничение доступа по ролям и workspace
- контроль тяжелых запросов и timeout
- audit log SQL-выполнения
- tool policy для database tools
- approval для рискованных SQL-операций
Связанные термины
Частые вопросы
Что такое SQL validator простыми словами?
Это проверка SQL-запроса перед запуском. Она решает, безопасно ли выполнять запрос, есть ли права, не меняет ли он данные и не нарушает ли лимиты.
Зачем SQL validator нужен AI-агенту?
AI может ошибиться или сгенерировать опасный запрос. Validator не дает выполнить DELETE, UPDATE, тяжелый запрос, чтение чужих данных или обращение к запрещенным таблицам.
Достаточно ли просто запретить слова DELETE и UPDATE?
Нет. Надежнее использовать SQL parser, query builder, allowlist операций и таблиц, проверку ролей, обязательные фильтры, LIMIT и timeout.
Какие правила включить в SQL validator?
Разрешать только SELECT, проверять allowlist таблиц и колонок, workspace-фильтр, LIMIT, max rows, timeout, запрет PII без прав, параметризацию и audit log.
Что делать, если SQL validator заблокировал запрос?
Нужно вернуть понятную причину: нет прав, нужен фильтр, слишком много строк, запрещенная таблица или опасная операция. Для важных случаев можно отправить запрос на approval.