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).