Как стать автором
Обновить

Трой Хант рассказал о неожиданно большом счёте за облачный хостинг Have I Been Pwned

Время на прочтение3 мин
Количество просмотров4.6K

Основатель сервиса проверки утечек личных данных Have I Been Pwned (HIBP) Трой Хант заявил, что столкнулся с проблемой неожиданных счетов облачного хостинга. По его словам, счёт за услуги облачного хранилища Azure Table Storage за декабрь был намного выше обычного. Хант объяснил, в чём была суть проблемы.

HIBP изначально построен на облакоориентированности, и Хант заложил в сервис современные облачные парадигмы Azure Table Storage для снижения стоимости. В проблемном месяце на аккаунте Ханта оказалось использовано неожиданно много трафика, и напротив сетевых услуг в инвойсе стояла сумма в 5 тысяч австралийских долларов.

Создатель проекта приводит в виде таблицы то, какой объём хранилища Azure используют отдельные службы на его аккаунте (Хант также хостит сайты Hack Yourself First и Why No HTTPS). Выяснилось, что 98% затрат приходится на пропускную способность во всех службах для данных, отправляемых из инфраструктуры Microsoft Azure (по цене 0,014 австралийского доллара за ГБ).

Ханта смутило то, что это аккаунт для хранилища, а не с веб-сайтами — поэтому большому объёму обмена данными с внешним миром взяться неоткуда. Он посчитал, что к проблеме привело начало взаимодействия Pwned Passwords с ФБР, а также загрузка сотен миллионов новых скомпрометированных паролей от Национального агентства по борьбе с преступностью Великобритании 20 декабря. 

Разработчик обратился к детальному изучению использования сетевых ресурсов. На графике за четыре часа видны нерегулярные последовательные всплески на уровне 17,3 ГБ. Трафик потребляли загружаемые хэши в Pwned Passwords. Эти данные Хант настроил для кэширования на Cloudflare, чтобы не нагружать сеть у хранилища.  

Хант изучил отдельные запросы и понял, что запросы приходили с IP-адреса Cloudflare, регулярно потребляя 17,3 ГБ трафика. Эта CDN должна была кэшировать эти данные и тем самым экономить трафик, но почему-то каждый раз заправшивала их из хранилища. Хант проверил эту догадку, временно зарезав трафик Cloudflare на уровне файрволла и пронаблюдав нормализацию потребления трафика до обычных значений.

Данные, переданные Cloudflare всего за 24 часа
Данные, переданные Cloudflare всего за 24 часа

Хант проверил, что такое особенное было в самих файлах, что могло вызвать подобное поведение Cloudflare. Он обнаружил отсутствие значения CacheControl и проверил его обработку правилами Cloudlfare. Реальная проблема крылась совсем в другом.

Разработчик HIBP связался со знакомым в Cloudflare и выяснил, почему хостинг-провайдер не кэширует эти zip-файлы. Как заметил сотрудник, в тарифном плане Ханта максимальный размер кэшируемого файла был установлен на уровне 15 ГБ.

Хант перешел в Azure Storage Explorer и увидел, что два архива с хэшам SHA-1 больше 15 ГБ. Это и были проблемные файлы.

Для временного решения разработчик создал в Cloudflare правила для этих двух файлов и удалил прямые ссылки для скачивания с веб-сайта HIBP, оставив торренты, в которых уже было много сидов. Позднее Cloudflare поднял его лимит на кэширование, и Хант восстановил прямые ссылки.

Проблема была решена. Но всего за месяц Хант переплатил более 11 тысяч австралийских долларов (около 8 тысяч долларов США).

По словам разработчика, ему следовало лучше отслеживать пропускную способность в Azure, особенно в учетной записи хранения, обслуживающей наибольшее количество данных. Пропускная способность исходящего трафика никогда не превышала 50 ГБ в день при обычном использовании и стоила 0,7 австралийских доллара для исходящих данных, тогда как в декабре она выросла до 350 австралийских долларов в сутки. 

Также Хант советует настраивать оповещения о расходах. Например, он знал еще до инцидента, что переплачивает за прием журналов из-за того, что App Insights хранит слишком много данных для часто используемых служб, а именно HIBP API. 

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

Пользователи в комментариях отметили, что нужно использовать собственный прокси-сервер перед выходом с Cloudflare в облако. Они советуют экземпляры Linode, Hetzner или другого веб-сервера, который поставляется с адекватным бесплатным уровнем пропускной способности, чтобы настроить обратный прокси-сервер nginx. Еще один вариант — использовать адекватный CDN, например, BunnyCDN.

В 2020 году Трой Хант открыл исходный код HIBP. До этого он рассказал, что отказался от идеи продать проект.

Теги:
Хабы:
Всего голосов 9: ↑8 и ↓1+12
Комментарии9

Другие новости

Истории

Работа

Ближайшие события