В сети набирает популярность статья на платформе Medium, где автор рассказывает как ему за пустой S3-бакет "прилетел" счёт от AWS на $1300 — How an empty S3 bucket can make your AWS bill explode
Автор обнаружил, что к его приватному бакету прилетело более 100 миллионов PUT-запросов:
My bill was over $1,300, with the billing console showing nearly 100,000,000 S3 PUT requests executed within just one day!
Оказалось, что в конфигурации какого-то популярного опенсорс тула по умолчанию было прописано название бакета, которое в точности совпадало с названием бакета автора. И миллионы копий этой тулзы с настройками по умолчанию пытались загрузить в этот бакет свои бэкапы. К моему удивлению, оказалось, что AWS взымает плату в том числе за запросы с ошибками (коды 4xx).
Yes, S3 charges for unauthorized requests (4xx) as well[1]. That’s expected behavior.
Видимо забавы ради автор статьи сделал публичным свой бакет и в течение 30 секунд собрал аж 10 гигабайт чужих данных. Вот так утечка😵
Уроки, извлеченные автором:
1. Любой кто знает название вашего бакета может "оставить вас без штанов"
2. Добавляйте суффиксы к названием, не используйте незамысловатые названия
3. Явно указывайте регион при обращении к S3, это помогает избежать платы за редиректы
Судя по твиту Jeff Barr, AWS в курсе этой ситуации:
Thank you to everyone who brought this article to our attention. We agree that customers should not have to pay for unauthorized requests that they did not initiate. We’ll have more to share on exactly how we’ll help prevent these charges shortly.