Часть 3. Практика · Глава 9
Конфиденциальность и безопасность
Цели раздела
3 пунктаК концу раздела вы сможете:
- Усвоить правила безопасной работы с LLM.
- Защитить чувствительную информацию.
- Понимать ключевые риски 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-данные — только после явного разрешения.
Когда без реального лога «не разобраться»
- Запросить обезличенную выборку у DevOps / InfoSec.
- Если нельзя — описать структуру лога + несколько синтетических строк.
- По возможности использовать только локальную модель и канал, разрешённый политикой.
- По завершении — удалить историю чата / артефакты, если того требует регламент.
Анонимизация, синтетические данные и безопасный контекст
Надёжный процесс подготовки контекста
Нажмите шаг — ниже появится пояснение. Повторное нажатие по активному шагу сворачивает блок.
Шаг 1: Найти
Пробегите по логам, тикету или дампу: email, телефоны, токены, IP, реальные ID, внутренние URL.
Полная таблица категорий данных и каналов — в разделе «Единая классификация данных». Приёмы подготовки — в шпаргалке приёмов.
Цели подраздела
3 пунктаК концу раздела вы сможете:
- Научиться подготавливать данные для работы с LLM без риска утечки.
- Понимать разницу между удалением, маскированием и синтетической заменой данных.
- Уметь превращать реальные логи, баг-репорты и примеры данных в безопасный контекст для модели.
Почему одного запрета недостаточно
На практике QA редко работает с «идеально чистыми» примерами.
В логах, требованиях, письмах, API-запросах и дампах часто встречаются:
- email-адреса;
- телефоны;
- имена клиентов;
- внутренние URL;
- токены и ключи;
- идентификаторы заказов и аккаунтов;
- IP-адреса;
- фрагменты production-данных.
Поэтому надёжный процесс выглядит так:
- Выявить чувствительные элементы.
- Замаскировать или заменить их.
- Проверить, что структура данных осталась полезной для анализа.
- Только после этого передавать контекст в модель.
Что считать чувствительными данными
Категории и каналы — в таблице классификации. Перед отправкой в модель проверьте: есть ли ПДн, секреты (ключи, токены, пароли), 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:9b | 256K, text+image | 8–12 ГБ |
| Общие задачи QA | qwen3:8b, qwen3:14b, llama3.3:70b | 40K–128K | 8–48+ ГБ |
| Рассуждения, root cause | deepseek-r1:8b, deepseek-r1:14b | 128K | 8–16 ГБ |
| Код и автотесты | qwen2.5-coder:7b, qwen3.5:9b | 32K–256K | 8–12 ГБ |
| Быстрые черновики | qwen3:4b, qwen3.5:4b | 256K | 8 ГБ |
| Vision (скриншоты) | qwen3.5:9b (предпочтительно), llava, qwen2.5vl — Глава 8 | 256K / 32K | 8–16 ГБ |
Groq Console (облако, синтетические данные): см. каталог моделей. Для QA-упражнений курса:
| Задача | Model ID (пример) | Контекст |
|---|---|---|
| Быстрый черновик | llama-3.1-8b-instant | 131 072 |
| Качество анализа | llama-3.3-70b-versatile | 131 072 |
| Скриншот + текст | meta-llama/llama-4-scout-17b-16e-instruct (preview) | 131 072 |
| Длинный контекст / рассуждения | qwen/qwen3-32b | 131 072 |
| Агенты с tool use | groq/compound, groq/compound-mini | 131 072 |
OWASP LLM Top 10: ключевые риски
| OWASP ID | Название | Что значит для QA |
|---|---|---|
| LLM01:2025 | Prompt Injection | Не включайте в промпт необработанный пользовательский ввод напрямую. Злоумышленник может вставить инструкции, меняющие поведение модели (prompt injection) |
| LLM02:2025 | Sensitive Information Disclosure | Маскируйте ПДн и секреты перед отправкой; см. классификацию данных |
| LLM03:2025 | Supply Chain | Используйте актуальные версии моделей; не скачивайте веса из непроверенных источников; Ollama — ollama.com |
| LLM07:2025 | System Prompt Leakage | Объект тестирования: можно ли извлечь system prompt из продукта с ИИ |
| LLM08:2025 | Vector & Embedding Weaknesses | Объект тестирования / RAG: ответ должен опираться на найденный документ, а не «додумывать»; признак проблемы — нет ссылки на источник или противоречие ему |
| LLM09:2025 | Misinformation | Валидируйте каждый LLM-артефакт; см. главу 10 |
Шаблон политики для команды QA
## Политика использования 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 — проект Top 10 for LLM
Страница проекта и материалы по безопасности LLM.
NIST AI Risk Management Framework
Рамочная концепция управления рисками ИИ.
NIST GenAI Profile (AI 600-1)
Профиль ИУР ИИ для генеративного ИИ.
OWASP — LLM Prompt Injection Prevention Cheat Sheet
Защита от внедрения вредоносных промптов.
AWS — Best practices to avoid prompt injection
Рекомендации по снижению рисков prompt injection.
OWASP GenAI — LLM01:2025 Prompt Injection
Риск prompt injection в OWASP LLM Top 10 (2025).
Microsoft Presidio — Anonymizer
Библиотека маскирования и анонимизации PII.
Presidio Anonymizer (PyPI)
Установка Presidio Anonymizer для Python.
CISA — AI cybersecurity guidance
Руководство по кибербезопасности ИИ.
ENISA — Multilayer Framework for AI cybersecurity
Многоуровневая рамка практик кибербезопасности для ИИ.
Ollama — локальный запуск LLM
Документация по установке и запуску моделей на своей машине.