Часть 3. Практика · Глава 9

Конфиденциальность и безопасность

Цели раздела

3 пункта

К концу раздела вы сможете:

  1. Усвоить правила безопасной работы с LLM.
  2. Защитить чувствительную информацию.
  3. Понимать ключевые риски OWASP LLM Top 10.

Почему это важно

Для QA утечка через публичный чат — управляемый, но реальный риск: требования, логи, SQL-схемы и тест-данные обрабатываются вне вашего периметра. Три типовых последствия: ПДн (GDPR, 152‑ФЗ), коммерческая тайна и код, компрометация ключей и учётных записей.

Установка локальной среды: пошаговая инструкция Ollama + Open Web UI — в Предисловии, «Настройка окружения». Справочник моделей и RAM — Приложение: локальная среда.

Единая классификация данных

Клик по строке — примеры, риск и полные формулировки по каналам.

КатегорияПубличныйПубличный LLMКорп.Корпоративный LLMЛокальныйЛокальный LLM
Открытые / синтетические
Внутренние (не ПДн)
уточните
Исходный код
Зависит от политики
Credentials / API-ключи
ПДн / PII
с аноним.
Production-данные
обезлич.
Финансовые данные
без разрешения
Данные о дефектах
если ПДн/paths
Уточнить
с аноним.

8.3 Три уровня каналов: дерево решений

Дерево решений: куда отправить данные

Шаг 1. Какой канал вы планируете использовать?

Если в компании нет политики LLM: три шага

Шаг 1: уточнить у непосредственного руководителя
Спросите: «Есть ли одобренные инструменты для использования ИИ в рабочих задачах?» Если однозначного ответа нет — переходите к шагу 2.

Шаг 2: запросить информацию у Information Security / IT
Кратко опишите цель: «Хочу использовать LLM для [конкретная задача]. Данные — [категория: открытые / внутренние / ПДн — без деталей]. Какой канал или инструмент вы рекомендуете?» Если полного ответа ещё нет, хотя бы уточните: «Есть ли явно запрещённые сервисы?»

Шаг 3: по умолчанию — локальная модель
Пока политика не формализована: Ollama + Open Web UI — см. настройку в предисловии. Реальные production-данные — только после явного разрешения.

Когда без реального лога «не разобраться»

  1. Запросить обезличенную выборку у DevOps / InfoSec.
  2. Если нельзя — описать структуру лога + несколько синтетических строк.
  3. По возможности использовать только локальную модель и канал, разрешённый политикой.
  4. По завершении — удалить историю чата / артефакты, если того требует регламент.

Анонимизация, синтетические данные и безопасный контекст

Надёжный процесс подготовки контекста

Нажмите шаг — ниже появится пояснение. Повторное нажатие по активному шагу сворачивает блок.

Шаг 1: Найти

Пробегите по логам, тикету или дампу: email, телефоны, токены, IP, реальные ID, внутренние URL.

Полная таблица категорий данных и каналов — в разделе «Единая классификация данных». Приёмы подготовки — в шпаргалке приёмов.

Цели подраздела

3 пункта

К концу раздела вы сможете:

  1. Научиться подготавливать данные для работы с LLM без риска утечки.
  2. Понимать разницу между удалением, маскированием и синтетической заменой данных.
  3. Уметь превращать реальные логи, баг-репорты и примеры данных в безопасный контекст для модели.

Почему одного запрета недостаточно

На практике QA редко работает с «идеально чистыми» примерами.
В логах, требованиях, письмах, API-запросах и дампах часто встречаются:

  • email-адреса;
  • телефоны;
  • имена клиентов;
  • внутренние URL;
  • токены и ключи;
  • идентификаторы заказов и аккаунтов;
  • IP-адреса;
  • фрагменты production-данных.

Поэтому надёжный процесс выглядит так:

  1. Выявить чувствительные элементы.
  2. Замаскировать или заменить их.
  3. Проверить, что структура данных осталась полезной для анализа.
  4. Только после этого передавать контекст в модель.

Что считать чувствительными данными

Категории и каналы — в таблице классификации. Перед отправкой в модель проверьте: есть ли ПДн, секреты (ключи, токены, пароли), production-контекст (реальные ID, дампы, внутренние URL) — для публичного чата всё это только после обезличивания или в разрешённом локальном/корпоративном канале.

Три способа подготовки данных

1. Удаление
Просто убрать чувствительный фрагмент.

Подходит, если:

  • удаляемая часть не влияет на смысл;
  • связи между сущностями не важны.

Минус: можно сделать контекст слишком «дырявым», и модель начнёт додумывать.

2. Маскирование
Заменить чувствительную сущность на нейтральный маркер.

Примеры:

  • ivan.petrov@company.ru → <EMAIL_1>
  • +79991234567 → <PHONE_1>
  • 98453321 → <ORDER_ID_1>
  • 10.14.6.21 → <IP_1>
  • sk_live_abc... → <API_KEY_1>

Это самый полезный подход для QA, потому что сохраняет структуру данных и причинно-следственные связи.

3. Синтетическая замена
Не просто скрыть значение, а заменить его на безопасный реалистичный аналог.

Пример:

  • реальный клиент → «Иван Тестов»
  • реальный email → test.user@example.com
  • реальный заказ → ORDER-TEST-001

Подходит для демо, учебных материалов, тестовых наборов и шаблонов.

Главное правило консистентности

Если одна и та же сущность встречается в тексте несколько раз, её нужно заменять одинаково во всех местах.
Если в первом абзаце пользователь стал <USER_1>, а в третьем — уже <ACCOUNT_7>, модель может потерять связи между событиями и сделать неправильные выводы.

Пример для QA

Текст
User ivan.petrov@company.ru from 10.14.6.21 failed payment for order 98453321 using token sk_live_abc...

Безопасно:

Текст
User <EMAIL_1> from <IP_1> failed payment for order <ORDER_ID_1> using token <API_KEY_1>

Во втором варианте сохраняется структура инцидента, но исчезают реальные чувствительные данные.

Практические рекомендации для QA

  • Для публичных LLM используйте только очищенные данные.
  • Для локальных или корпоративных LLM всё равно соблюдайте принцип минимально необходимого контекста.
  • Никогда не вставляйте токены, ключи, cookies и внутренние URL «временно, только чтобы быстрее разобраться».
  • Если можно заменить реальные данные синтетическими без потери смысла — заменяйте.
  • Если задача высокорисковая, добавляйте ручную приёмку результата человеком.

Приложение: настройка локальной среды

Пошаговая установка Ollama + Open Web UI — в Предисловии. Ниже — справочник по моделям (май 2026; теги на ollama.com/library уточняйте перед pull).

НазначениеПример OllamaКонтекстRAM (ориентир)
Старт курса (универсально)qwen3.5:9b256K, text+image8–12 ГБ
Общие задачи QAqwen3:8b, qwen3:14b, llama3.3:70b40K–128K8–48+ ГБ
Рассуждения, root causedeepseek-r1:8b, deepseek-r1:14b128K8–16 ГБ
Код и автотестыqwen2.5-coder:7b, qwen3.5:9b32K–256K8–12 ГБ
Быстрые черновикиqwen3:4b, qwen3.5:4b256K8 ГБ
Vision (скриншоты)qwen3.5:9b (предпочтительно), llava, qwen2.5vl — Глава 8256K / 32K8–16 ГБ

Groq Console (облако, синтетические данные): см. каталог моделей. Для QA-упражнений курса:

ЗадачаModel ID (пример)Контекст
Быстрый черновикllama-3.1-8b-instant131 072
Качество анализаllama-3.3-70b-versatile131 072
Скриншот + текстmeta-llama/llama-4-scout-17b-16e-instruct (preview)131 072
Длинный контекст / рассужденияqwen/qwen3-32b131 072
Агенты с tool usegroq/compound, groq/compound-mini131 072

OWASP LLM Top 10: ключевые риски

OWASP IDНазваниеЧто значит для QA
LLM01:2025Prompt InjectionНе включайте в промпт необработанный пользовательский ввод напрямую. Злоумышленник может вставить инструкции, меняющие поведение модели (prompt injection)
LLM02:2025Sensitive Information DisclosureМаскируйте ПДн и секреты перед отправкой; см. классификацию данных
LLM03:2025Supply ChainИспользуйте актуальные версии моделей; не скачивайте веса из непроверенных источников; Ollama — ollama.com
LLM07:2025System Prompt LeakageОбъект тестирования: можно ли извлечь system prompt из продукта с ИИ
LLM08:2025Vector & Embedding WeaknessesОбъект тестирования / RAG: ответ должен опираться на найденный документ, а не «додумывать»; признак проблемы — нет ссылки на источник или противоречие ему
LLM09:2025MisinformationВалидируйте каждый LLM-артефакт; см. главу 10

Шаблон политики для команды QA

Markdown
## Политика использования LLM командой QA [НАЗВАНИЕ КОМАНДЫ]
#### Разрешено без ограничений:
- Генерация тест-кейсов по обезличенным требованиям
- Создание чек-листов
- Формулировка вопросов к заказчику
- Обучающие материалы (без примеров из production)
#### Разрешено только в локальных LLM (Open Web UI + Ollama):
- Анализ логов любого окружения
- Работа с исходным кодом тестов
- Обработка данных пользователей (даже анонимизированных)
- Работа с API-спецификациями внутренних сервисов
#### Запрещено:
- Отправка в публичные LLM: персональных данных, паролей, токенов, ключей API
- Генерация кода для production без code review
- Автоматическая отправка баг-репортов без проверки человеком
#### Ответственность:
- [Роль] отвечает за соблюдение политики
- Нарушение = [последствия]
- Вопросы → [контакт]

Чек-лист безопасности для QA

Упражнение: аудит промпта на безопасность

Промпт для аудита безопасности
Ты — специалист по информационной безопасности. Проанализируй следующий промпт на наличие утечек конфиденциальных данных.

Промпт: [вставить]

Выведи:
1. Найденные чувствительные данные (тип и место)
2. Уровень риска
3. Рекомендации по анонимизации

Приёмы подготовки данных

Псевдонимизация

Реальные идентификаторы заменяем на стабильные псевдонимы в рамках одного промпта.

ID и email → USER_001, test@example.com

Обобщение

Конкретные имена сущностей сводим к обобщённым меткам без потери структуры задачи.

Провайдер оплаты → [PAYMENT_PROVIDER], сумма → [AMOUNT]

Синтетика

Та же схема данных, что в проде, но значения вымышленные и безопасные.

Таблица заказов: те же колонки, фейковые строки

Структура вместо простыни

Описываем поля и один типовой фрагмент вместо сотен строк сырого лога.

Схема полей + 1–3 синтетические строки

Плейсхолдеры в шаблоне

Чувствительное закрываем в маркеры; реальные значения подставляем только в безопасной среде.

Секреты и ПДн → в <…> или [PLACEHOLDER]

КатегорияПримерыРиск при утечке
PII (персональные данные)Имена, адреса, телефоны, email, SSN, паспортные данныеРегуляторные санкции (GDPR, 152-ФЗ), репутационный ущерб
Финансовые данныеНомера карт, счета, транзакции, кредитная историяФинансовые потери, санкции (PCI DSS)
Коммерческая тайнаБизнес-планы, ценообразование, стратегии, непубличные договорыКонкурентные потери, судебные иски
Технические секретыИсходный код, архитектура, ключи API, учётные данныеКомпрометация системы, инциденты безопасности
Данные о дефектахНепубличные уязвимости, детали эксплуатации, планы исправленийУсиление атак, репутационный ущерб

Материалы к главе

OWASP — Top 10 for LLM Applications 2025

Актуальный список рисков для LLM-приложений (2025).

Стандарт
owasp
security
2025

OWASP — проект Top 10 for LLM

Страница проекта и материалы по безопасности LLM.

Стандарт
owasp
security

NIST AI Risk Management Framework

Рамочная концепция управления рисками ИИ.

Стандарт
nist
security

NIST GenAI Profile (AI 600-1)

Профиль ИУР ИИ для генеративного ИИ.

Стандарт
nist
genai

OWASP — LLM Prompt Injection Prevention Cheat Sheet

Защита от внедрения вредоносных промптов.

Статья / Доки
owasp
injection

AWS — Best practices to avoid prompt injection

Рекомендации по снижению рисков prompt injection.

Статья / Доки
aws
injection

OWASP GenAI — LLM01:2025 Prompt Injection

Риск prompt injection в OWASP LLM Top 10 (2025).

Стандарт
owasp
injection
2025

Microsoft Presidio — Anonymizer

Библиотека маскирования и анонимизации PII.

Гайд
presidio
anonymization

Presidio Anonymizer (PyPI)

Установка Presidio Anonymizer для Python.

Гайд
presidio
pypi

CISA — AI cybersecurity guidance

Руководство по кибербезопасности ИИ.

Статья / Доки
cisa
regulation

ENISA — Multilayer Framework for AI cybersecurity

Многоуровневая рамка практик кибербезопасности для ИИ.

Статья / Доки
enisa
regulation

Ollama — локальный запуск LLM

Документация по установке и запуску моделей на своей машине.

Гайд
ollama
local