К содержимому
MoranaLabs.
Инженерные гайды4 мин чтения0 просмотров

AI-safety в корпоративном проде: контур безопасности для агентов без вреда бизнесу 

Верите, что системный промпт защитит вашего ИИ-агента от удаления базы данных? Разбираем карту угроз и строим настоящий контур безопасности on-prem, который перехватывает каскадные ошибки и инъекции до того, как они уронят систему.

0xReality

Вы правда верите, что ваш RAG с доступом к API базы данных и системным промптом «никогда не удаляй таблицы» — это безопасный корпоративный агент? Я вижу этот паттерн каждую неделю. Сначала кто-то собирает прототип на коленке, показывает совету директоров, как ИИ ловко парсит логи и заводит задачи в Jira, а потом эта штука едет в бой с правами администратора. А потом случается реальность. Когда мы внедряем AI-safety в корпоративном проде: контур безопасности для агентов, который не даст навредить бизнесу, нельзя опираться на семантические уговоры. Нейросеть — это не ваш послушный джун. Это вероятностный генератор текста, который в любой момент может сойти с ума от одного неудачного входного параметра. Миф индустрии заключается в том, что безопасность автономных систем решается промпт-инжинирингом. На деле, если вы защищаете инфраструктуру простым текстом, у вас нет защиты.

Карта угроз для автономного агента выглядит как кошмар параноика, и начинается все с классического превышения полномочий. Представьте агента техподдержки, который читает тикет от внешнего пользователя. В теле тикета лежит невинно выглядящий кусок логов, который на самом деле содержит prompt-инъекцию. Агент пропускает это через инструмент чтения, контекст подменяется, и вот уже модель послушно выполняет скрытую инструкцию — например, вытягивает ключи доступа из соседней таблицы и отправляет их внешним GET-запросом под видом проверки статуса. Это прямая утечка через действия. И никакой системный промпт не спасет, потому что для трансформера базовые инструкции и внешние данные — это единый недифференцированный массив токенов. А если злонамеренной инъекции нет, агент вполне способен устроить блэкаут сам через каскадные ошибки. Он делает неверный API-вызов, получает 400 Bad Request, галлюцинирует, что нужно перебрать все доступные идентификаторы, и уводит ваш внутренний сервис в глухой отказ за три секунды, исчерпав все доступные пулы соединений.

Рынок до сих пор верит, что безопасность языковой модели — это фильтрация мата на выходе и обертка от OpenAI. Наш подход в MoranaLabs прямо противоположен: строгое нулевое доверие к нейросети. Именно поэтому мы фокусируемся на llm-rag-onprem решениях. Мы проектируем safety-контур on-prem исходя из презумпции, что модель уже скомпрометирована и действует как злоумышленник внутри периметра. Контур начинается с аппаратной и программной изоляции. Принцип наименьших привилегий здесь абсолютен: у агента нет и не может быть единого IAM-профиля. Инструмент чтения из базы и инструмент записи в лог живут в изолированных песочницах вроде gVisor или микровиртуалках Firecracker. Вызов каждого инструмента проходит через жесткий детерминированный шлюз, который нейросеть не контролирует.

Защитные слои не должны зависеть от самой LLM. Это классические guardrails на вход и выход. На входе мы режем известные паттерны инъекций быстрыми специализированными классификаторами. На выходе парсим сырое намерение агента до того, как оно превратится в реальный HTTP-запрос. Политики действий определяются жестким кодом: middleware перехватывает вызов, проверяет лимиты rate-limiting, сверяет контекст запроса с разрешенным скоупом и, если агент начинает вести себя неадекватно, мгновенно дергает kill-switch, обрывая сессию.

class AgentGuardrailMiddleware:
    def __init__(self, action_policies):
        self.policies = action_policies
        self.circuit_breaker = CircuitBreaker(fail_max=3, reset_timeout=60)

    def intercept_tool_call(self, tool_name, kwargs, agent_context):
        if tool_name not in self.policies.allowed_tools(agent_context.role):
            raise SecurityException(f"Privilege escalation attempt: {tool_name}")

        if not self.circuit_breaker.allow_request():
            self.trigger_kill_switch(agent_context.session_id)
            raise CascadingFailureError("Too many destructive loops")

        # Детерминированная проверка параметров ДО реального вызова
        sanitized_kwargs = self.policies.enforce_limits(tool_name, kwargs)
        return self.execute_isolated(tool_name, sanitized_kwargs)

Любое действие, радикально модифицирующее состояние системы, всегда должно блокироваться контуром и уходить на подтверждение живому человеку. Агент может подготовить черновик транзакции, сформировать сложный SQL-запрос или собрать JSON для массового обновления профилей клиентов, но финальную кнопку «Отправить» нажимает кожаный мешок. Это единственный стопроцентно гарантированный способ ограничить blast radius — радиус поражения от ошибки модели. Если вы даете агенту права на запись в критические системы без human-in-the-loop, вы осознанно играете в русскую рулетку с собственным бизнесом. При этом логирование инцидентов должно быть железобетонным. Вы пишете в базу не просто статус «модель сделала X», вы сохраняете полный граф состояний: какой промпт был сгенерирован под капотом, какой контекст подтянул RAG-модуль, какой инструмент был выбран и с какими аргументами. Когда агент снесет не ту директорию — а он рано или поздно попытается это сделать, — вам потребуется детальный разбор полетов на уровне конкретных токенов, чтобы залатать очередную дыру в политиках.

Честный трейд-офф, о котором не любят говорить продавцы ИИ-интеграций: жесткие гардрейлы режут полезность агента. Как только вы закручиваете гайки, обкладываете модель лимитами, песочницами и запретами, она неизбежно становится тупее. Она начинает отказываться выполнять легитимные, но чуть более комплексные задачи, ссылаясь на ложноположительные срабатывания политик безопасности. И здесь кроется главная инженерная задача архитектора — найти баланс между автономной пользой и фатальным риском. Абсолютной безопасности нет и не будет, пока вы пускаете стохастическую математику в свои базы данных. Но правильно спроектированный контур безопасности делает последствия галлюцинаций предсказуемыми и локализуемыми. Либо вы строите этот контур до первого инцидента в проде, либо долго и мучительно оправдываетесь перед инвесторами после.

  • #AI Safety
  • #Architecture
  • #Cybersecurity
  • #LLM Agents
  • #On-premise
ПоделитьсяTelegramX
рассылка

Новые статьи — на почту

Лонгриды про ML в проде, edge и компьютерное зрение — сразу после выхода.

Канал в Telegram: morana.log

Без спама. Нажимая «Подписаться», соглашаетесь с обработкой персональных данных

бесплатный pdf-гайд

Edge AI или облако: когда тащить нейросеть на железо

Признаки, фреймворк выбора и прикидка экономии — короткий PDF-гайд на почту.

PDF · 5 страниц · без спама. Нажимая «Получить», соглашаетесь с обработкой персональных данных

Читать дальше
— заявка

Опишите задачу  ответим как инженеры. 

Оставьте имя и Telegram — остальное обсудим. Без брифов на 40 слайдов и звонков по три раза.

Отвечаем за пару часовотвечает инженер, а не отдел продажNDA по запросу

Сюда напишем — это быстрее всего

Или сразу написать в Telegram

Без спама и звонков-роботов. Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности и обработкой персональных данных.