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

CV Adversarial Service

Сервис состязательных атак на модели компьютерного зрения (CV). Тестирует CNN-модели (VGG19, ResNet50 и др.) через 19 типов атак: whitebox (FGSM, PGD, C&W, DeepFool) и blackbox.

Назначение

Принимает изображение и конфигурацию атаки, генерирует adversarial-изображение, при взгляде на которое модель выдаёт неверный класс. Самый ресурсоёмкий сервис платформы — attacker требует до 8 CPU cores и 16 GB RAM для сложных атак.

Компоненты

Чарт разворачивает 5 отдельных Deployment:

Компонент K8s Service Роль resourcesPreset
api cv-api:8000 REST API + init-миграции micro
preparator загрузка изображений и конфигурации small
attacker генерация adversarial-изображений (CPU/GPU) large
judge оценка успешности атаки small
reporter формирование отчётов small

Зависимости

Входящие

Сервис Протокол Назначение
orchestrator NATS задания атак
ui-gateway HTTP обращается к cv-api

Исходящие

Сервис Назначение
postgres БД задач и результатов (схема cv_adversarial)
redis (DB 3) очереди задач
nats подписка/публикация
minio чтение изображений: cv-images; запись: cv-attack-artifacts
minio чтение весов моделей: model-weights (отдельные credentials)
model-mgmt метаданные CV-моделей
scan-profile параметры атаки

Values

Параметр По умолчанию Обязателен Описание
image.name да registry.appsec.global/appsecgenai-release/cv
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
secretEnv.MODEL_WEIGHTS_S3_ACCESS_KEY да MinIO root user (веса)
secretEnv.MODEL_WEIGHTS_S3_SECRET_KEY да MinIO root password (веса)
env.S3_BUCKET "cv-attack-artifacts" нет Бакет артефактов
env.MODEL_WEIGHTS_S3_BUCKET "model-weights" нет Бакет весов моделей
env.OTEL_SDK_DISABLED нет "true" если нет otel-collector
global.url.redisUrl {svc: redis, port: 6379, scheme: redis, path: /3} нет Redis DB 3
global.url.natsUrl {svc: nats, port: 4222, scheme: nats} нет
global.url.s3Endpoint {svc: minio, port: 9000, scheme: none} нет host:port без схемы (minio-python)
global.url.modelWeightsS3Endpoint {svc: minio, port: 9000, scheme: none} нет
global.url.modelManagementUrl {svc: model-mgmt, port: 8000} нет
global.url.scanProfileUrl {svc: scan-profile, port: 8000} нет
components.attacker.resourcesPreset "large" нет Для C&W атак увеличить до "xlarge"

cv: scheme: none — minio-python формат

cv использует minio-python клиент, который принимает endpoint как host:port без схемы. s3Endpoint.scheme: http приведёт к ошибке InvalidEndpointError.

В отличие от asr (scheme: http), для cv всегда указывайте scheme: none.

Пример values.yaml

# values-cv.yaml
image:
  name: registry.appsec.global/appsecgenai-release/cv
  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>"
  MODEL_WEIGHTS_S3_ACCESS_KEY: "<minio-root-user>"
  MODEL_WEIGHTS_S3_SECRET_KEY: "<minio-root-password>"

env:
  ENVIRONMENT: "production"
  AUTH_ENABLED: "true"
  OTEL_SDK_DISABLED: "true"
  S3_BUCKET: "cv-attack-artifacts"
  MODEL_WEIGHTS_S3_BUCKET: "model-weights"
  # S3_SECURE: "true"                  # при MinIO по HTTPS

global:
  url:
    redisUrl:               { svc: redis, port: 6379, scheme: redis, path: /3 }
    natsUrl:                { svc: nats,  port: 4222, scheme: nats }
    s3Endpoint:             { svc: minio, port: 9000, scheme: none }   # БЕЗ схемы
    modelWeightsS3Endpoint: { svc: minio, port: 9000, scheme: none }   # БЕЗ схемы
    modelManagementUrl:     { svc: model-mgmt,   port: 8000 }
    scanProfileUrl:         { svc: scan-profile, port: 8000 }

# Для сложных атак (C&W) увеличить attacker:
# components:
#   attacker:
#     resourcesPreset: "xlarge"

Установка

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

Ресурсы attacker

Атаки C&W и JSMA требуют значительных ресурсов. При стандартном resourcesPreset: large (8 CPU, 16 GB) выполняются корректно. При интенсивной нагрузке увеличивайте до xlarge (16 CPU, 32 GB).