ADG Оставить заявку
Блог Инфраструктура 4 мин чтения

РКН блокирует миллионы IP: реестр зависимостей от SaaS и облачных API

Блокировки подсетей AWS и GCP ради Telegram кладут сторонние SaaS и CDN. Составляем реестр внешних зависимостей для каждого клиента - чтобы знать, что пропадёт следующим.

Контекст момента

РКН блокирует миллионы IP-адресов Amazon и Google при попытке заблокировать Telegram - под удар попадают корпоративные SaaS, CDN и облачные API клиентов

Несколько дней прошло с начала масштабных блокировок, и у нас накопилось достаточно наблюдений, чтобы перейти от пожаротушения к чему-то более системному. Первый пост про экстренный перенос workloads был про то, что мы делали в первые часы. Этот - про то, что выявилось за следующие дни.

Главный сюрприз оказался не там, где мы ожидали.

Не AWS пострадал, а всё, что на нём живёт

Когда говорят «заблокировали AWS» - имеют в виду конкретные подсети EC2 и CloudFront. Но бизнес клиентов завязан не только на собственные инстансы. Он завязан на десятки сторонних SaaS-сервисов, которые сами хостятся на AWS, GCP или Cloudflare - и которые тоже оказались в зоне поражения.

Схема та же: сторонний вендор живёт на AWS us-east-1, его подсеть попала в реестр РКН, продукт недоступен из российских офисов. Вендор даже не знает об этом - у него всё зелёное, пользователи из Европы ходят нормально.

За несколько дней мы зафиксировали конкретные категории потерь у клиентов:

  • Мониторинг и алертинг. Несколько клиентов используют облачные инструменты - Status Page от Atlassian, внешние Grafana Cloud-дашборды, PagerDuty. Часть из них хостится на инфраструктуре, попавшей под блок. Алерты уходили, но веб-интерфейс для дежурного был недоступен.
  • CI/CD и артефакты. GitHub и npm-registry в первые дни вели себя нестабильно у части провайдеров. Пайплайны зависали на pull зависимостей. Не у всех и не всегда - но предсказать было нельзя.
  • Платёжные шлюзы и фрод-сервисы. Один клиент обнаружил, что сторонний антифрод-провайдер недоступен из его бэкенда - и транзакции начали падать с таймаутом. Сервис был второстепенным, но код не был готов к его отсутствию.
  • CDN для статики. Cloudflare в большинстве случаев работает - у него своя AS и собственные IP-диапазоны, под массовую блокировку не попал. Но у одного клиента часть статики лежала на CloudFront, а не на Cloudflare - это выяснилось только когда у сотрудников перестали грузиться изображения в корпоративном портале.
  • SaaS для команды. Jira Cloud, Confluence Cloud, Slack - у Atlassian и Slack своя инфраструктура и свои IP, они работали. Но не все клиенты это проверяли: паника «всё упало» начиналась раньше диагностики.

Что мы сделали: реестр зависимостей

По итогу первых нескольких дней стало очевидно: ни мы, ни клиенты не имеем полной картины внешних зависимостей. Это не упрёк - никто особо не думал об этом как о риске. Теперь думаем.

Мы начали делать для каждого клиента что-то вроде реестра внешних зависимостей - по аналогии с тем, как делают аудит ИТ-инфраструктуры. Только здесь объект аудита - не внутренние компоненты, а всё внешнее, на что завязана работа системы.

Структура простая: для каждого сервиса фиксируем, что это такое, где хостится (AS, страна, облачный провайдер), как приложение ведёт себя при его недоступности, и есть ли fallback.

Сервис          | Провайдер   | AS / регион        | Поведение при отказе
----------------|-------------|--------------------|-----------------------
Stripe          | AWS         | us-east-1          | платежи падают с 503
Datadog agent   | Datadog LLC | собственная AS     | метрики буферятся
npm registry    | Fastly CDN  | Fastly AS (работ.) | пайплайн зависает
Atlassian Cloud | AWS         | us-east-1          | таски недоступны
SendGrid        | AWS         | смешанная          | письма встают в очередь

Это не красиво, зато честно показывает где болит. Для большинства клиентов оказалось, что они плохо понимают даже первую колонку - что именно у них внешнее.

Что дальше неясно

Ситуация продолжает меняться. РКН добавляет подсети, потом отдельные диапазоны выпадают из реестра - либо намеренно, либо потому что Telegram там уже нет. Провайдеры применяют блоки с разной скоростью и разной точностью. Некоторые блокируют шире реестра «на всякий случай», другие опаздывают.

Несколько вещей, которые мы сейчас не знаем и не можем предсказать:

  • Когда РКН остановится с расширением блоков - или не остановится.
  • Будет ли давление на Amazon и Google добавить BGP-анонсы специально для России.
  • Насколько провайдеры будут аккуратны при снятии блоков, когда (если) ситуация разрядится.

Реестр зависимостей сам по себе не решает проблему - он только показывает, где у каждого клиента незащищённые точки. Что с этим делать дальше: переносить критические части в российскую инфраструктуру, добавлять graceful degradation в код, договариваться с вендорами об альтернативных эндпоинтах - это уже отдельный разговор с каждым.

Но без реестра этот разговор не начать. Поэтому начали с него.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.