Цепочка поставок, OpenTelemetry и жёсткий TLS
Конспект для P2-бэклога аудита: подписи артефактов, наблюдаемость и опциональный pinning TLS у агентов.
Cosign и релизы
Цель: поверх контрольных сумм (*.sha256 на GitHub Releases) иметь проверяемую подпись целостности и происхождения бинарника.
Внедрено (релизы): workflow QMClient и QMLauncher на теге v* вызывают cosign sign-blob (keyless через OIDC GitHub Actions → Sigstore). К релизу прикрепляются *.sig и *.pem рядом с бинарником (Linux; для лаунчера также Windows .exe).
Проверка у себя (после установки Cosign):
cosign verify-blob qmclient-linux-amd64 \
--signature qmclient-linux-amd64.sig \
--certificate qmclient-linux-amd64.pem \
--certificate-identity-regexp 'https://github.com/OWNER/REPO/*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com'
Подставьте OWNER/REPO и имя файла; для QMLauncher — соответствующий .exe, .sig, .pem.
Дальше (P2): cosign attach к контейнерным образам; закрепление политики verify в runbook / CI потребителя.
Не смешивать с подписью кода ОС (Apple / Microsoft): cosign — про артефакт из CI/CD.
SHA256 (файлы *.sha256) остаётся быстрой локальной проверкой целостности; подпись даёт связку с идентичностью сборки.
OpenTelemetry
Цель: распределённые трассировки и единые метрики, когда одного request id в логах мало.
Минимальный путь для QMServer:
- Экспортер OTLP (gRPC или HTTP) в sidecar OpenTelemetry Collector или в центральный коллектор кластера.
- Переменные окружения по соглашению
OTEL_*(сервисное имя, endpoint); включение по флагу, чтобы dev не зависел от коллектора.
Подробнее про логи, health и метрики без OTel — observability-baseline.
Полный pinning TLS (QMClient)
Для исходящих запросов агента к QMServer поддерживается переменная QMCLIENT_TLS_CERT_PIN_SHA256 (64 hex-символа, SHA-256 от DER листового сертификата). Не используется для загрузок с GitHub, Maven, Steam и т.п.
Детали и сценарии — QMClient (раздел про безопасность / TLS).