ASR Adversarial Service¶
Сервис adversarial-атак на модели распознавания речи (ASR). Тестирует модели типа Whisper на устойчивость к состязательным аудиозаписям через 6 типов атак.
Назначение¶
Принимает аудиофайлы и конфигурацию атаки, генерирует adversarial-аудио, которое модель распознаёт неверно или произносит заданные атакующим фразы (backdoor). Требует значительных вычислительных ресурсов для attacker-компонента.
Компоненты¶
Чарт разворачивает 5 отдельных Deployment:
| Компонент | K8s Service | Роль | resourcesPreset |
|---|---|---|---|
api |
asr-api:8000 |
REST API + init-миграции | micro |
preparator |
— | подготовка задач | small |
attacker |
— | генерация adversarial-аудио (CPU/GPU интенсивно) | medium |
judge |
— | оценка качества атаки | small |
reporter |
— | формирование отчётов | small |
Зависимости¶
Входящие¶
| Сервис | Протокол | Назначение |
|---|---|---|
orchestrator |
NATS | задания атак |
ui-gateway |
HTTP | обращается к asr-api |
Исходящие¶
| Сервис | Назначение |
|---|---|
postgres |
БД задач и результатов (схема asr_adversarial) |
redis (DB 2) |
очереди задач |
nats |
подписка/публикация |
minio |
чтение аудио: audio-samples; запись: asr-attack-artifacts |
minio |
чтение весов моделей: model-weights (отдельные credentials) |
model-mgmt |
метаданные ASR-моделей |
scan-profile |
параметры атаки |
Values¶
| Параметр | По умолчанию | Обязателен | Описание |
|---|---|---|---|
image.name |
— | да | registry.appsec.global/appsecgenai-release/asr |
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 |
"asr-attack-artifacts" |
нет | Бакет для артефактов |
env.S3_AUDIO_BUCKET |
"audio-samples" |
нет | Бакет исходного аудио |
env.MODEL_WEIGHTS_S3_BUCKET |
"model-weights" |
нет | Бакет весов моделей |
env.WHISPER_DEVICE |
"auto" |
нет | cpu, cuda, или auto |
env.OTEL_SDK_DISABLED |
— | нет | "true" если нет otel-collector |
global.url.redisUrl |
{svc: redis, port: 6379, scheme: redis, path: /2} |
нет | |
global.url.natsUrl |
{svc: nats, port: 4222, scheme: nats} |
нет | |
global.url.s3Endpoint |
{svc: minio, port: 9000, scheme: http} |
нет | со схемой http://host:port |
global.url.modelWeightsS3Endpoint |
{svc: minio, port: 9000, scheme: none} |
нет | host:port без схемы |
global.url.modelManagementUrl |
{svc: model-mgmt, port: 8000} |
нет | |
global.url.scanProfileUrl |
{svc: scan-profile, port: 8000} |
нет |
Два S3 endpoint — разные форматы
asr использует два S3-клиента:
appsec_genai_shared(артефакты атак) — ожидаетhttp://host:port→s3Endpoint.scheme: http- Библиотека весов (model-weights) — ожидает
host:portбез схемы →modelWeightsS3Endpoint.scheme: none
Перепутать форматы = ConnectionError при старте attacker.
Пример values.yaml¶
# values-asr.yaml
image:
name: registry.appsec.global/appsecgenai-release/asr
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: "asr-attack-artifacts"
S3_AUDIO_BUCKET: "audio-samples"
MODEL_WEIGHTS_S3_BUCKET: "model-weights"
WHISPER_DEVICE: "auto"
# MODEL_WEIGHTS_S3_SECURE: "true" # при MinIO по HTTPS
global:
url:
redisUrl: { svc: redis, port: 6379, scheme: redis, path: /2 }
natsUrl: { svc: nats, port: 4222, scheme: nats }
s3Endpoint: { svc: minio, port: 9000, scheme: http } # СО схемой
modelWeightsS3Endpoint: { svc: minio, port: 9000, scheme: none } # БЕЗ схемы
modelManagementUrl: { svc: model-mgmt, port: 8000 }
scanProfileUrl: { svc: scan-profile, port: 8000 }
Установка¶
helm upgrade --install asr \
oci://registry.appsec.global/appsecgenai-release/charts/asr \
--version <VERSION> -n genai \
--wait \
-f values-asr.yaml
Время загрузки attacker
Компонент attacker загружает модель Whisper (~1.5 ГБ) при старте. При WHISPER_DEVICE=auto на узле без GPU загрузка займёт 5-10 минут. Увеличьте startupProbe.failureThreshold при необходимости.