Перейти к основному содержимому
Версия: Next

Цепочка поставок, 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).