Дмитрий КридРуководитель DevOps, SRE и безопасности · Тбилиси
Рассматриваю роли руководителя DevOps, SRE и безопасности

Руководитель DevOps, SRE и безопасности (DevSecOps)

Group CTO для 145 человек в шести странах, при этом работаю руками. Платёжная система центробанка, AI-платформа в трёх облаках, десять A100 на собственном железе и две сертификации, прошедшие аудит.

  • 99,999%доступности Bakong, платёжной системы Национального банка Камбоджи
  • 0 замечанийна надзорном аудите ISO 27001; SOC 2 Type II пройден дважды
  • 145 человекв шести странах, в подчинении у CEO
Путь

Путь

2013–2019Сети, парки Linux-серверов, исследования безопасности
2019–2025Soramitsu: Head of SRE & Security, затем Group CTO
с 2025Everworker: Head of DevOps, SRE & Security

Чем я руководил

Восемь направлений, одна планка доказательств

Руководство

145 человек · 6 стран
Group CTO · Head of DevOps, SRE & Security
  • Мне подчинялась вся организация, офисы в Японии, России, Швейцарии, Черногории, Таиланде и Дубае. Сам я подчинялся CEO.
  • Сначала построил техническую организацию: на пике 37 прямых подчинённых, из них 12 DevOps, 6 безопасность, 19 QA.
  • В Everworker начинал с нуля: ни инструментов, ни процессов, ни людей. Собрал команду безопасности из 4 человек.

Платежи и CBDC

99,999%
Bakong · пилоты CBDC
  • Надёжность и безопасность Bakong, платёжной системы Национального банка Камбоджи. Она написана на Java и работает на Hyperledger Iroha.
  • Больше $150 млрд в 2024 году, около 330% ВВП Камбоджи, и 1,3 млрд платежей в 2025-м, по данным самого НБК.
  • Пилоты CBDC в группе. Участник команды, получившей награду Central Banking «CBDC Partner of the Year» в 2020 году.

Платформа и AI

300+ приложений · 99% IaC
AWS · Azure · GCP · своё железо
  • Платформа AI-агентов в трёх облаках: как SaaS и как установка в собственных аккаунтах клиентов.
  • Листинг в AWS Marketplace с Helm-чартами для трёх облаков. Сделал один, хотя говорили, что без платных партнёров не выйдет. AWS Marketplace
  • 10 × NVIDIA A100 на собственном железе в Moro Hub, Дубай (Tier III). Переехали туда после того, как забытый GPU-инстанс сжёг тысячи долларов за два дня.
  • 300+ приложений, 700+ репозиториев, 6 GitHub-организаций. Сборки быстрее на 40%, расходы ниже на 30%+.

Надёжность

MTTR −60%
SRE-практика с нуля
  • Встроенный SRE для 20+ продуктовых команд в 4 регионах: SLI, SLO, error budgets, incident command, разборы без поиска виноватых.
  • SLA с 99% до 99,99%. Автоматические бэкапы и DR для 5 критичных систем, с реально проведёнными восстановлениями.
  • Дежурства, на которых можно жить: ежедневная ротация, страхующий на каждой смене, ранбук и метрика на каждый алерт.

Безопасность и аудит

0 замечаний
ISO 27001 · SOC 2 Type II · NIST CSF
  • ISO/IEC 27001:2022: закрыл 5 мелких несоответствий первичного аудита, затем надзорный аудит первого года без единого замечания. Trust Center
  • SOC 2 Type II два года подряд, scope расширен на Privacy и Availability. Вёл программу NIST CSF по запросу клиентов.
  • Secure SDLC на 100+ разработчиков: модели угроз STRIDE и VAST, оценка по CVSS и EPSS, Security Champions. Окно уязвимости короче на 70%.
  • Независимый пентест: 12 находок (1 высокая, 6 средних, 5 низких) разобраны, ключевые превращены в регрессионные DAST-проверки, чтобы оставаться под тестом.

Продукты

2 продукта · 2 × 12 человек
от и до
  • Платёжная система для Карибских островов, со своей командой из 12 человек.
  • Система баллов лояльности для крупной экосистемы, со своей командой из 12 человек.

Web3

те же гейты, что у платежей
Polkadot · Klaytn · SORA
  • Гранты Web3 Foundation, разработка в экосистеме Polkadot, Klaytn и экосистема SORA, на тех же пайплайнах и security-гейтах, что и платёжные системы.
  • Выступал на Next-Generation Payments 2023 и на финтех-конференциях в Бангкоке.

Open source

Scorecard 10
Simple Container
  • Simple Container, инструменты деплоя на Go. GitHub
  • OpenSSF Best Practices Gold и подтверждённый Scorecard 10, ни одной проверки ниже 10. Scorecard

Разборы инцидентов

Из реагирования на инциденты, аудитов и работы с платформами клиентов. Каждый закончился новым контролем, а не заплаткой.

Безопасность · РеагированиеЗакрыт

Утечка исходного кода и попытка вымогательства

87 000 событий разобрано
  1. Обнаружено

    Аномальная активность в репозиториях.

  2. Расследовано

    Форензика по выгрузке аудита на 87 000 событий. Охват утёкшего доступа проверили заново, а не приняли на веру.

  3. Исправлено

    Локализация и сброс доступов, затем права по всей организации пересобраны как Pulumi IaC, чтобы ручные выдачи не вернулись.

Доступность · Платформа клиентаЗакрыт

Ротация пароля, которую не видел мониторинг

0 потерь · исправлено в тот же день
  1. Обнаружено

    На платформе клиента управляемая БД по расписанию сменила мастер-пароль, и ночью приложение потеряло соединение с базой. Ни один алерт не сработал.

  2. Расследовано

    Приложение читало пароль один раз, при деплое. Разбор алертинга показал, что каждое правило слепо по-своему: процесс жил, пороги ошибок стояли выше того, что этот трафик выдаёт даже при полном отказе, а алерт пула винил медленные запросы.

  3. Исправлено

    В тот же день приложение переехало на роль с минимальными правами и паролем, которым владеет команда, а деплой теперь падает, если эта учётка не логинится. Новые алерты: пустой пул, health-эндпоинт, нижняя граница соединений, пропавший бэкап. Данные не потеряны.

Доступность · Платформа клиентаЗакрыт

Вебхуки падали на каждом четвёртом запросе

исправлено в апстриме для всех
  1. Обнаружено

    На платформе клиента 500 на вебхуках, несовпадение подписей и ошибки CSRF задели примерно четверть POST-запросов после того, как апстрим-образ поменялся под закреплённым релизом.

  2. Расследовано

    Chunked-тела доходили до приложения пустыми: оно читает тело по Content-Length, а у chunked-запроса его нет. Сами 500 не логировались нигде: стандартное логирование фреймворка глотало их при выключенном debug.

  3. Исправлено

    Буферизация запросов стала поведением по умолчанию в open-source инструменте деплоя, приложение склеивает chunked на уровне WSGI, вебхуки больше не отвечают 5xx, ошибки идут в структурные логи.

Доступность · Платформа клиентаЗакрыт

Connection refused, по 14 секунд за раз

0 отказов на 7 254 пробах
  1. Обнаружено

    Пользователи платформы клиента жаловались на отказы соединения на порту 443. Облачный автоскейлер за день выселил edge-прокси 37 раз, обычно было от 0 до 8.

  2. Расследовано

    Прокси дренировался 10 секунд, а балансировщику нужно около 24, чтобы снять узел. Воспроизвёл пробой каждые полсекунды: окно в 14 секунд, когда падала примерно половина новых соединений.

  3. Исправлено

    Дренаж дольше health-check, жёсткий разнос прокси по узлам, обе настройки добавлены в open-source инструмент. 0 отказов на 7 254 пробах через несколько раскаток.

Доступность · Платформа клиентаЗакрыт

Релиз, в котором можно пропустить шаг

деплой теперь всё или ничего
  1. Обнаружено

    На платформе клиента прод 20-30 минут работал без обработчика фоновых задач, а аптайм был зелёным: воркер не задеплоился, и алертить было не на что.

  2. Расследовано

    Релиз состоял из двух отдельных ручных шагов, сначала web, потом worker, и ничто не проверяло, что прошли оба. Проверки до мержа и admission control отбросил: в git всё было верно, а воркер в кластер не отправлялся.

  3. Исправлено

    Связанные сервисы теперь катятся одним упорядоченным workflow, который краснеет, если не прошла любая из половин, а отдельный деплой воркера убран. Алерты на паритет остались страховкой.

Мониторинг · УнаследованоЗакрыт

Алерты, которым никто не верил

89% ложных → 0
  1. Обнаружено

    232 срабатывания CloudTrail за 14 дней, около 89% ложных.

  2. Исправлено

    8 детекторов сверх базового CIS с исключениями под каждый: несколько срабатываний в день, ноль ложных за первый период, ранбук на каждый алерт.

Мониторинг · Платформа клиентаЗакрыт

Сторож, который перестал сторожить

зависшие запуски снимаются сами
  1. Обнаружено

    Dead-man's switch у клиента тихо перестал работать: 4,5 дня каждый запуск по расписанию заканчивался отменой.

  2. Расследовано

    Один запуск, который CI-платформа оставила в очереди, навсегда держал concurrency-группу. Таймаут до старта джобы не действует, поэтому каждый следующий запуск ждал и отменялся. Через день повторилось.

  3. Исправлено

    Короткие workflow по расписанию теперь отменяют текущий запуск, и застрявший заменяется следующим, а не блокирует его.

Стоимость · Платформа клиентаЗакрыт

Счёт +52% при загрузке CPU 4%

11 закреплённых узлов → 5-9 по нагрузке
  1. Обнаружено

    Ревью затрат на платформе клиента: прогноз за месяц вырос на 52%, 18 узлов работали при загрузке CPU около 4%.

  2. Расследовано

    Disruption budget по умолчанию в инструменте деплоя оставлял однорепличным сервисам ноль допустимых выселений, и автоскейлер не мог освободить ни один узел. Каждый новый white-label закреплял ещё один.

  3. Исправлено

    Budget, разрешающий одно выселение, раскатан по 13 репозиториям. Прод с 11 закреплённых узлов перешёл на 5-9 по нагрузке, staging с 7 на 3. Смену дефолта в самом инструменте отложил: слишком много накопленных изменений для платёжного прода.

Комплаенс · УнаследованоЗакрыт

ISMS, где были инструменты, которых у компании нет

29 политик проверено
  1. Обнаружено

    29 унаследованных политик, написанных AI, ссылались на MDM, EDR и каталоговые сервисы, которых не существовало.

  2. Исправлено

    Проверка каждого названного инструмента и роли стала обязательной до утверждения. AI пишет черновик, решают доказательства.

Как изменение попадает в продакшен

19 общих actions, 8 переиспользуемых workflow, один гейт

  1. 01 planIaC

    Terraform, Pulumi, policy as code на CrossGuard

  2. 02 lintSAST

    Semgrep, 107 собственных правил на 5 языков

  3. 03 scanЗависимости и секреты

    Trivy, Grype, TruffleHog, zizmor, poutine

  4. 04 signProvenance

    Syft SBOM, Cosign без ключей, SLSA provenance

  5. 05 gateDefectDojo

    любая новая находка выше informational блокирует мерж

  6. 06 deployБез ключей

    GitOps, GitHub OIDC, ни одного статического ключа

  7. 07 verifyРантайм

    Kyverno admission, алерты по burn rate SLO

$ deploy --env production
✓ подпись проверяется трижды: после подписания, перед деплоем и при допуске в кластер

Безопасность как платформа

К чему подключается каждый репозиторий

Внутренняя платформа безопасности

19 actions · 8 workflow
  • Безопасность как сервис для продуктовых команд: репозиторий одним переиспользуемым workflow получает сканирование секретов, зависимостей, SAST, workflow и SBOM.
  • Правила и сканеры живут в одном месте, и одно изменение доходит до всех репозиториев-потребителей.
  • Все результаты попадают в DefectDojo, обогащаются 7 источниками threat intel, включая CISA KEV, EPSS и ExploitDB, и разбираются в два потока.
  • Гейт мержа сравнивает каждый пул-реквест с базовой линией и закрывается, если трекер не отвечает.

SAST и Semgrep

107 собственных правил
  • Общая библиотека правил для Go, Python, JavaScript и TypeScript, shell и GitHub Actions.
  • У каждого правила есть фикстуры: что обязано сработать и что должно промолчать. CI их гоняет, и шумное правило не смержить.
  • Поверх них пакеты из реестра, подключаемые по репозиториям, с обоснованием каждого исключения в конфиге.
  • В open-source проекте на Go: Semgrep, CodeQL, govulncheck, фаззинг и OpenSSF Scorecard в CI.

DAST и security-тесты

харнесс из 49 модулей
  • ZAP: базовый и авторизованный скан, плюс 15 собственных шаблонов Nuclei на SSRF, NoSQL-инъекции, CORS, OAuth-редиректы и prototype pollution.
  • Собственный WebSocket-харнесс из 49 модулей: сам находит методы и публикации в исходниках и проверяет каждую роль, покрывает 8 пунктов OWASP API Top 10.
  • Ночной DAST под несколькими ролями на платёжной платформе: Schemathesis, ZAP, Nuclei, харнесс на межтенантный IDOR и манифест доступа по каждому эндпоинту.

Пентесты

находки становятся проверками в CI
  • Заказал и провёл независимый пентест: 12 находок, ключевые классы превращены в регрессионные DAST-проверки и проверки правил на edge.
  • Внешний black-box аудит платёжной платформы: 24 находки, 14 подтверждены рабочим эксплойтом. Исправления на edge я выкатил как WAF-правила в коде.
  • Пентесты, red team и blue team проводил и сам, а не только заказывал.

Защита CI/CD

pinned · signed · keyless
  • Сторонние actions закреплены по SHA коммита, это проверяет zizmor; логику workflow сканирует poutine.
  • Образы подписываются Cosign без ключей, SBOM и SLSA provenance прикладываются аттестацией, подпись проверяется ещё раз перед деплоем и при допуске в кластер.
  • Деплой через GitHub OIDC с доверием, ограниченным веткой и окружением: в CI нет долгоживущих облачных ключей.
  • Исходящий трафик CI записывается по каждой джобе, чтобы инцидент можно было восстановить по фактам.

Обсудить роль

Роли руководителя DevOps, SRE и безопасности. Удалённо или с релокацией, если компания оформляет визу.

creed.click · Статическая страница, без трекеров. Каждая цифра взята из публичного источника или из CV.