Статьи · Данные и безопасность

Канарейки в схеме

Как узнать, работает ли защита — если не знаешь, что именно защищаешь

~6 мин · безопасность RAG, изоляция

В предыдущей статье мы остановились на противоречии: чтобы детектировать раскрытие чувствительной схемы, нужно сначала её разметить. А разметка — отдельная задача.

Предположим, разметка есть. Организация знает: вот эти таблицы, вот эти поля — чувствительные. Доступ к ним — только для определённых ролей.

Что дальше?

Изоляция как первый рубеж

Логичный шаг: разные пользователи видят разные версии индекса. Аналитик без доступа к медицинским данным работает с индексом, в котором PATIENT_HIV_STATUS отсутствует — или абстрагирован до уровня без деталей.

Это называется структурной изоляцией. В системах RAG и GraphRAG её можно реализовать: фильтровать что попадает в индекс для каждого уровня доступа, строить разные версии графа происхождения данных для разных ролей.

Это правильный первый рубеж. Но он порождает новый вопрос.

Как проверить, что изоляция сработала

Можно объявить изоляцию построенной. Но откуда знать, что она действительно работает для каждого конкретного элемента?

Векторный индекс — не детерминированная система. Ретривер возвращает ближайших соседей в пространстве эмбеддингов. Элемент, который «должен» был быть исключён, может попасть в результаты через косвенное сходство — если похожее описание осталось в индексе, если граф не был обрезан по нужному ребру, если изоляция была применена не к тому слою.

GraphRAG добавляет сложности: граф обходится по рёбрам, и обрезать его нужно структурно, учитывая все пути. Один неучтённый путь — и чувствительный узел достижим через обходную траекторию.

Здесь появляются канарейки.

Чувствительный элемент как точка проверки

Если элемент помечен как чувствительный — он уже является канарейкой.

Не нужно сажать специальные «ловушки». Нужно использовать то, что уже есть: известный чувствительный элемент схемы как тест корректности изоляции.

Логика прямая: запустить запрос от имени пользователя без доступа к чувствительным данным. Если в результатах ретрива появился чувствительный элемент — изоляция пробита на этом пути. Не предполагаемая уязвимость, а конкретная: известный элемент, известный запрос, известный пользователь.

В RAG это выглядит так: чанк с описанием PATIENT_HIV_STATUS не должен возвращаться в топ-K при запросе от L2-пользователя. Если вернулся — изоляция на уровне векторного индекса не работает для этого элемента.

В GraphRAG — иначе: узел, соответствующий чувствительному полю, не должен появляться в результатах обхода графа для L2-пользователя. Если появился — в схеме обрезки графа есть незакрытый путь.

Это не ловушка для злоумышленника

Важное уточнение. Традиционная канарейка — это ловушка: подставной элемент, который обнаруживает внешнюю атаку. Кто-то наткнулся на ловушку — значит, был несанкционированный доступ.

Канарейка в схеме работает иначе. Она не ловит злоумышленника. Она проверяет собственную систему.

Цель — убедиться, что изоляция работает так, как задумано. Что элемент X действительно не виден пользователям уровня Y. Что путь в графе, который должен был быть закрыт, действительно закрыт.

Это ближе к тесту, чем к ловушке. Автоматизированная проверка: «мы утверждаем, что L2-пользователь не должен видеть эти элементы — давайте убедимся».

Честные ограничения

Этот подход работает только в рамках разметки.

Если элемент не помечен как чувствительный — он не является канарейкой и не проверяется. Неизвестные чувствительные данные (те, о которых организация ещё не знает, что они чувствительные) остаются слепой зоной.

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

Для неизвестного — нужен другой подход. И это отдельная история.

Два вопроса, не один

В итоге защита схемы в системах ИИ разворачивается в два независимых вопроса.

Первый: что является чувствительным? Это задача разметки — экспертная, контекстная, организационная. Без её решения остальное не работает.

Второй: как убедиться, что изоляция работает для размеченного? Здесь помогают канарейки — чувствительные элементы используются как контрольные точки, и факт их появления в «неправильном» ретриве сигнализирует о пробоине.

Ответ на первый вопрос открывает возможность второго. Но первый не следует из второго — их нельзя решить в обратном порядке.

Канарейка в схеме — не подставной элемент. Это измерительный инструмент: он показывает, работает ли изоляция там, где должна. Не кто пытается получить несанкционированный доступ — а дошёл ли несанкционированный доступ туда, где его быть не должно.

Читать также