Перейти к содержанию

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 }

Установка

helm upgrade --install model-injection \
  oci://registry.appsec.global/appsecgenai-release/charts/model-injection \
  --version <VERSION> -n genai \
  --wait \
  -f values-model-injection.yaml