Юристы говорят: «клиентские данные не должны покидать периметр». Облачные LLM типа ChatGPT API - сразу мимо. On-prem инференс (запуск готовой модели для получения ответов) решает это не в теории, а в конкретном стеке: vLLM за Nginx, изолированная сеть, аудит каждого промпта. Цена вопроса - правильная архитектура с первой итерации. Разберём на примере стройфирмы, которая хочет обрабатывать договоры и сметы через AI, но не может отправлять их в облако.
Почему облачные LLM недостаточны для бизнеса
По данным Cloudera (2025), 53% CTO и CIO назвали приватность данных главным барьером для внедрения AI. Это не паранойя - конкретные регуляторные требования:
- GDPR (Евросоюз): персональные данные граждан ЕС нельзя передавать третьим сторонам без явного согласия. Отправить медицинскую выписку или ФИО клиента в ChatGPT API - это передача третьей стороне. Штраф до 4% годового оборота или 20 млн евро.
- HIPAA (США, медицина): Protected Health Information (PHI) требует Business Associate Agreement с каждым облачным провайдером. У OpenAI и Anthropic такие соглашения есть, но данные всё равно обрабатываются на их серверах.
- EU AI Act (август 2026): высокорисковые AI-системы (медицина, юстиция, критическая инфраструктура) требуют документации, регистрации и оценки рисков. On-prem даёт полный контроль над этой документацией.
- Российские требования: банки (ЦБ РФ 382-П, PCI DSS), госорганы (ФСБ требования), 152-ФЗ о персональных данных - всё запрещает отправку данных в иностранные облака.
Регуляторный ландшафт 2026
EU AI Act вступил в полную силу в августе 2026. Что требует в контексте LLM:
High-risk системы (Annex III) - медицинские диагностические AI, HR-системы найма/увольнения, кредитный скоринг, правоохранительные системы:
- Обязательная регистрация в EU AI Act Database до запуска
- Техническая документация и risk assessment
- Логирование всех решений с retention не менее 6 лет
- Human oversight mechanism (человек в контуре принятия решений)
- Adversarial testing и red-teaming
General Purpose AI (GPAI) с системными рисками (мощнее 10^25 FLOPs при обучении):
- Обязательное уведомление регулятора
- Оценка серьёзных инцидентов
On-prem инференс сам по себе не освобождает от EU AI Act - освобождает от передачи данных третьим сторонам. Документация и логирование всё равно обязательны.
Для российского рынка: Федеральный закон 152-ФЗ «О персональных данных» требует локализации персональных данных граждан РФ на серверах в России. Облачные LLM через зарубежные датацентры нарушают это требование.
Архитектура изолированного стека
Базовая схема on-prem LLM сервиса:
[Корпоративная сеть]
|
[Nginx reverse proxy] -- TLS 1.3 -- [Клиентские приложения]
|
[vLLM inference server] -- GPU сервер (изолированный)
|
[Audit Logger] -- SIEM система
|
[Embedding service] -- для RAG
|
[Vector DB] -- Qdrant/Chroma (локально)
Ключевые принципы air-gapped сети:
- LLM-сервер не имеет маршрута в интернет (нет default gateway наружу)
- Модели скачиваются заранее через внутреннее зеркало или ручную загрузку
- Обновления ОС через корпоративный WSUS/APT-зеркало
- DNS только внутренний
# Проверить отсутствие исходящих соединений
ip route show
# Убрать маршрут наружу если он есть
ip route del default via 1.2.3.4
# Файрвол: разрешить только входящие на порт 8000
iptables -P OUTPUT DROP
iptables -A OUTPUT -d 10.0.0.0/8 -j ACCEPT # корпоративная сеть
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
RBAC и аутентификация
vLLM с API-ключами - базовый уровень:
vllm serve meta-llama/Llama-3.3-8B-Instruct \
--api-key ${VLLM_API_KEY} \
--port 8000
Для многопользовательской среды с ролями - vLLM Gateway или TrueFoundry:
Nginx как API Gateway с JWT-валидацией:
# nginx.conf
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_protocols TLSv1.3;
location /v1/ {
# Валидация JWT через lua-resty-jwt или auth_request
auth_request /auth;
auth_request_set $user $upstream_http_x_user;
auth_request_set $role $upstream_http_x_role;
# Передать заголовки в vLLM
proxy_set_header X-User $user;
proxy_set_header X-Role $role;
proxy_pass http://vllm-backend:8000;
}
location /auth {
internal;
proxy_pass http://auth-service:3000;
}
}
Интеграция с LDAP/Active Directory:
TrueFoundry (open-source LLM gateway) поддерживает LDAP из коробки. Альтернатива - Keycloak как IdP с LDAP-коннектором:
# Keycloak LDAP federation
ldap:
connectionUrl: ldap://corporate-ad.company.local:389
usersDn: OU=Users,DC=company,DC=local
bindDn: CN=service-account,DC=company,DC=local
bindCredential: ${LDAP_PASSWORD}
RBAC модели: viewer (только чтение), user (стандартные запросы), power-user (расширенный контекст), admin (управление моделями).
Шифрование: данные в покое и в транзите
Шифрование VRAM (NVIDIA Confidential Computing):
NVIDIA H100/H200 поддерживают Confidential Computing через Hopper Confidential VM. Данные в VRAM зашифрованы AES-256 аппаратно, недоступны даже hypervisor. Включение:
# Проверить поддержку
nvidia-smi conf-compute -f
# Включить Confidential Computing режим
nvidia-smi conf-compute -scc 1
Требует H100/H200 - на потребительских RTX недоступно. Для enterprise без H100 - шифрование VRAM через программные средства не имеет смысла (overhead и нет реальной защиты).
Шифрование данных в покое:
# LUKS для дисков с моделями и логами
cryptsetup luksFormat /dev/sdb
cryptsetup luksOpen /dev/sdb llm-storage
mkfs.ext4 /dev/mapper/llm-storage
# Автоматическое монтирование через ключ в TPM
clevis luks bind -d /dev/sdb tpm2 '{}'
TLS 1.3 для трафика: Все соединения между компонентами через mTLS (взаимная аутентификация). Генерация внутренних сертификатов через Vault PKI или внутренний CA.
Аудит-логи: полное логирование без замедления инференса
Аудит-лог должен содержать: timestamp, user_id, model, prompt_hash (не промпт!), response_hash, latency, tokens. Полный промпт и ответ - в зашифрованное хранилище отдельно от метаданных.
Async logging через Kafka или Redis чтобы не блокировать инференс:
import asyncio
import json
import hashlib
from datetime import datetime
from kafka import KafkaProducer # или redis
producer = KafkaProducer(
bootstrap_servers='kafka:9092',
value_serializer=lambda v: json.dumps(v).encode()
)
async def log_request(user_id: str, model: str, prompt: str,
response: str, latency_ms: float):
record = {
"timestamp": datetime.utcnow().isoformat(),
"user_id": user_id,
"model": model,
"prompt_hash": hashlib.sha256(prompt.encode()).hexdigest(),
"response_hash": hashlib.sha256(response.encode()).hexdigest(),
"prompt_tokens": len(prompt.split()), # приближение
"latency_ms": latency_ms
}
# Fire-and-forget, не блокируем основной поток
loop = asyncio.get_event_loop()
await loop.run_in_executor(None, producer.send, 'llm-audit', record)
Хранение самих промптов и ответов - отдельный зашифрованный топик Kafka или S3-совместимое хранилище (MinIO для on-prem) с retention policy.
Retention по регуляторным требованиям:
- GDPR: минимально необходимый срок (обычно 1-3 года)
- HIPAA: 6 лет
- EU AI Act high-risk: 6 лет
Экспорт в SIEM: Splunk Universal Forwarder или Filebeat для ELK Stack читают топик Kafka и индексируют события. Стандартные алерты: аномально длинные промпты (>10K токенов), высокая частота запросов от одного пользователя, ошибки авторизации.
Triton Inference Server как альтернатива vLLM
NVIDIA Triton Inference Server - enterprise-grade альтернатива с сертификацией для NVIDIA-certified систем.
Отличия от vLLM:
- Поддерживает не только LLM, но и CV-модели, AudioML, рекомендательные системы
- Multi-framework: TensorRT, ONNX, PyTorch, TensorFlow в одном сервере
- Ensemble pipelines: несколько моделей в одном запросе (preprocessing + LLM + postprocessing)
- Официальные SLA и enterprise поддержка от NVIDIA
Деплой через Docker:
docker run --gpus all \
-p 8000:8000 \
-p 8001:8001 \
-p 8002:8002 \
-v /models:/models \
nvcr.io/nvidia/tritonserver:24.12-vllm-python-py3 \
tritonserver --model-repository=/models
Для LLM-задач в чистом виде vLLM проще и быстрее. Triton оправдан когда: нужна мультимодальная система (текст + изображения + аудио). Интеграция с NVIDIA AI Enterprise (официальные контракты), сложные pipeline с несколькими моделями.
Чеклист compliance перед запуском
Технический:
- Сетевая изоляция проверена (исходящие соединения закрыты)
- TLS 1.3 на всех внешних API-адресах
- API-ключи и JWT настроены, дефолтные пароли изменены
- Аудит-логирование запущено и проверено на тестовых запросах
- Шифрование дисков с моделями и логами включено
- Мониторинг и алерты настроены (Prometheus + Grafana)
- Penetration testing проведён (хотя бы внутренний)
Организационный:
- Data Processing Agreement (DPA) подписан с юридическим отделом
- Классификация данных: какие данные можно отправлять в LLM
- Data Protection Impact Assessment (DPIA) для GDPR
- Политика retention для логов утверждена
- Ответственный за AI (AI Officer) назначен
EU AI Act (для high-risk систем):
- Классификация системы по EU AI Act Annex III
- Техническая документация подготовлена
- Human oversight механизм задокументирован
- Регистрация в EU AI Act Database
- Adversarial testing проведён
Частые вопросы
Какой минимальный стек нужен для GDPR-compliant локального LLM?
Минимум: сервер без доступа в интернет + vLLM или llama-server + Nginx с TLS + аудит-логирование (хотя бы в файл с ротацией). Дополнительно нужны организационные меры: DPA внутри компании, политика использования, назначение ответственного за обработку данных. Технический стек без организационных мер не обеспечивает GDPR compliance.
Как организовать аудит-логирование без замедления инференса?
Асинхронное логирование через очередь (Kafka, Redis Streams, или просто asyncio Queue). Основной поток инференса пишет в очередь (микросекунды), отдельный worker пишет в постоянное хранилище. Логировать хеши промптов и ответов в основной лог (быстро), сами данные - асинхронно в зашифрованный сторедж. Overhead при правильной реализации - менее 1 мс на запрос.
EU AI Act 2026 - какие LLM-системы попадают под high-risk классификацию?
High-risk (Annex III) включает AI в медицинской диагностике, кредитном скоринге, найме и увольнении, биометрической идентификации, правоохранительной деятельности, управлении критической инфраструктурой. Корпоративный чатбот для внутренних FAQ - не high-risk. LLM для автоматического принятия решений о кредитах или медицинских диагнозах - high-risk с полным набором требований.
Можно ли использовать Ollama в корпоративном on-prem или нужен vLLM?
Ollama подходит для: один-два пользователя, тестирование, прототипы. Для корпоративного использования не хватает: RBAC, аудит-логирования, горизонтального масштабирования, метрик для compliance. vLLM с Nginx gateway закрывает всё это. При малом числе пользователей (<5) и отсутствии требований аудита - Ollama с API-ключом через Nginx технически достаточен. При серьёзных регуляторных требованиях - vLLM + полноценный стек.
Как изолировать LLM-сервер в корпоративной сети без доступа в интернет?
Три шага: убрать default gateway на LLM-сервере (или создать отдельный VLAN без выхода наружу). Настроить iptables с политикой OUTPUT DROP и разрешением только корпоративной подсети, настроить внутренний DNS чтобы имена резолвились только во внутренние адреса. Модели и обновления ОС доставлять через внутренний артефакт-репозиторий (Nexus, Artifactory) или вручную через защищённый канал.
Что дальше
Если у вас стройфирма и вы хотите обрабатывать договоры и сметы через AI, но не можете отдавать данные в облако - начните с vLLM на одном сервере без доступа в интернет. Установка занимает пару часов. Используйте бесплатную модель Llama 3.1 8B - она даст качество, достаточное для извлечения данных из договоров. Аудит-логи настраиваются через syslog или простой файл с ротацией. Для compliance с 152-ФЗ этого достаточно.
AI Компас (t.me/kosmoslab_ai) - канал для предпринимателей в РФ и СНГ, которые применяют AI в своём бизнесе без программиста. Разбираем инструменты и схемы - без курсов и теории.