Блокировка доступа к общедоступному сайту в панике - PullRequest
0 голосов
/ 27 февраля 2019

Одна из самых страшных вещей, связанных с тем, чтобы быть маленькой рыбкой в ​​океане AWS, - это то, что кажется неограниченной ответственностью в маловероятном случае потока транзакций на публично предоставляемой услуге.AWS предназначен для больших парней, для которых доступность - это главное.Существует много усилий по поддержанию обслуживания, но, очевидно, нет, когда речь идет о спасении нас от астрономических счетов.Похоже, Amazon неоднократно просили ограничить расходы, но AFAIK, лучшее, что они придумали, это оповещения о выставлении счетов.Я прочитал несколько страшных историй, например, парень, который создал небольшой веб-сайт для семьи и друзей и получил счет на 10 000 долларов.Лучшее, что сделала Amazon, - это предоставила уведомления о выставлении счетов, а что если вы AFK?Довольно большие суммы могут исчезнуть, прежде чем вы сможете отключиться.

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

Итак, я начал с CloudFront, и это вполне выполнимо, хотя отключение дистрибутива занимает некоторое время для распространения.

Теперь мы подошли к моему первому техническому затруднению.Я думал, что смогу просто проверить все корзины для публичных разрешений и отозвать их.Но, так как я в последний раз подробно рассматривал S3, есть такая статическая настройка веб-сайта.Итак, как мне программно отключить это?Очевидно, я не хочу удалять ведро.К моему удивлению, включение этого параметра не создает публичного разрешения в ACL.В API есть сервис для обновления свойств на одном из этих статических веб-сайтов, но не для его отзыва.

Кажется, что это немного похоже на шлюз API.Вы можете удалить API, но не приостанавливать его.И если вы удалите его, то перестройка, вероятно, даст вам другое имя хоста, что создает некоторую суету.

Я пытаюсь написать довольно общую лямбду и сделать ее общедоступной.

1 Ответ

0 голосов
/ 03 марта 2019

Чтобы ответить на ваш вопрос ...

Для шлюза API вы можете заблокировать его, создав или обновив план использования с ограничением скорости газа0. Это будет означать, что на любые запросы к этому API будет отвечать HTTP 429 — To many requests.В прошлом AWS взимал плату за ограниченные запросы, но с 2016 года больше не соответствует , поэтому ограничение скорости 0, не позволяющее вашему API использовать или взимать плату.(Вы должны также установить взрыв газа в 0 в то же время, если хотите немедленно заблокировать его.)

Для S3 вы можете заблокировать корзину, блокируя весь публичный доступ для всей учетной записи или для определенного сегмента .

Простой путь

При этом, я думаю, есть более простое решение для всехэтого.Вы можете использовать API-шлюз в качестве конечной точки прокси для S3 или для практически для любой службы AWS .Затем вы можете установить UsagePlan для этой конечной точки с ежемесячной, еженедельной или ежедневной квотой, которая ограничивает общее количество запросов API, разрешенных для этой конечной точки шлюза API.

Самое замечательное в этом то, что вы ненужно просто реагировать на уведомления о вашем бюджете.Вы можете заранее установить ограничение на использование вашего веб-сайта.Однако вы должны помнить, что этот подход не полностью защищает вас от огромного счета.(Если вы разрешите публичный доступ для загрузки файлов в корзину S3, возможно, кто-то загрузит файл объемом 5 ТБ, что потребует около 100 долларов в месяц. Однако этот сценарий маловероятен и его легко предотвратить, просто неразрешить загрузку.) Вам также необходимо понимать модели ценообразования на используемые вами услуги, чтобы установить соответствующие ограничения для ваших прокси-API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...