Model Injection Service¶
Сервис статического анализа файлов моделей на исполняемые закладки и структурные уязвимости (Model Injection Scan). Анализирует байты файла модели, не загружая его нативным загрузчиком (torch.load/pickle.load/keras/tf.saved_model и т. д.) — так вредоносный код в модели не выполняется в окружении сервиса.
Назначение¶
Принимает загруженный файл локальной модели и прогоняет его через набор сканеров (40 сканеров, покрывающих 42 из 44 форматных областей). В отличие от Jailbreak/CV/ASR, не отправляет запросы к работающей модели и не требует GPU. Применяется только к локальным моделям (is_local=true). Подробнее о проверках — в разделе Model Injection Scan.
Компоненты¶
Чарт разворачивает 2 отдельных Deployment:
| Компонент | K8s Service | Роль | resourcesPreset |
|---|---|---|---|
api |
model-injection-api:8000 |
REST API + init-миграции (alembic) | micro |
worker |
— (health :8081) |
NATS-consumer, статический анализ файла модели | small |
Зависимости¶
Входящие¶
| Сервис | Протокол | Назначение |
|---|---|---|
orchestrator |
NATS | задания на анализ файла модели |
ui-gateway |
HTTP | обращается к model-injection-api |
Исходящие¶
| Сервис | Назначение |
|---|---|
postgres |
БД задач и результатов (БД genai) |
nats |
подписка/публикация задач |
minio |
чтение файлов моделей: models-bucket; запись результатов: results-bucket |
model-mgmt |
метаданные моделей |
Без Redis
Model Injection не использует Redis — координация задач идёт через NATS, файлы и результаты хранятся в MinIO.
Values¶
| Параметр | По умолчанию | Обязателен | Описание |
|---|---|---|---|
image.name |
— | да | registry.appsec.global/appsecgenai-release/model-injection |
image.tag |
— | да | Версия образа |
imagePullSecrets[0].name |
— | да | imagePullSecret |
secretEnv.DATABASE_URL |
— | да | PostgreSQL connection string |
secretEnv.S3_ACCESS_KEY |
— | да | MinIO root user |
secretEnv.S3_SECRET_KEY |
— | да | MinIO root password |
env.S3_RESULTS_BUCKET |
"results-bucket" |
нет | Бакет результатов |
env.S3_MODELS_BUCKET |
"models-bucket" |
нет | Бакет с файлами моделей |
env.SCAN_BUDGET_SECONDS |
"1800" |
нет | Бюджет времени на один скан (сек) |
env.OTEL_SDK_DISABLED |
— | нет | "true" если нет otel-collector |
global.url.natsUrl |
{svc: nats, port: 4222, scheme: nats} |
нет | |
global.url.s3EndpointUrl |
{svc: minio, port: 9000, scheme: http} |
нет | S3_ENDPOINT_URL (со схемой — boto3) |
global.url.modelManagementUrl |
{svc: model-mgmt, port: 8000} |
нет |
s3EndpointUrl: scheme http
В отличие от cv (minio-python, endpoint без схемы), model-injection использует boto3-стиль endpoint со схемой — указывайте scheme: http (или https при MinIO по TLS).
Пример values.yaml¶
# values-model-injection.yaml
image:
name: registry.appsec.global/appsecgenai-release/model-injection
tag: "<VERSION>"
imagePullSecrets:
- name: harbor-cr
secretEnv:
DATABASE_URL: "postgresql+asyncpg://genai_admin:<password>@postgres:5432/genai_db"
S3_ACCESS_KEY: "<minio-root-user>"
S3_SECRET_KEY: "<minio-root-password>"
env:
ENVIRONMENT: "production"
OTEL_SDK_DISABLED: "true"
S3_RESULTS_BUCKET: "results-bucket"
S3_MODELS_BUCKET: "models-bucket"
SCAN_BUDGET_SECONDS: "1800"
global:
url:
natsUrl: { svc: nats, port: 4222, scheme: nats }
s3EndpointUrl: { svc: minio, port: 9000, scheme: http } # СО схемой
modelManagementUrl: { svc: model-mgmt, port: 8000 }