Как заблокировать маршруты _ah/start и _ah/stop AppEngine, чтобы они не были видны внешнему миру

У меня есть маршруты _ah/start и _ah/stop в моем «гибком» приложении. Я понимаю, что контейнеры GAE будут вызывать эти конечные точки, когда приложение запускается и отключается.

После того, как я разверну свое приложение, я могу сам поразить их, не вставая с дивана. Конечно, это не имеет смысла, так как случайные незнакомцы не могут решать, когда экземпляры приложения появляются и закрываются. Как мне настроить AppEngine, чтобы заблокировать публикацию этих двух маршрутов во внешний мир? Или в мою работу входит реализация этих двух маршрутов для проверки IP-адресов или поиска заголовка, который может отправить только GAE?


person paul_h    schedule 14.05.2017    source источник


Ответы (2)


Таким образом, flex не использует пути /_ah/* и, следовательно, не скрывает их. К сожалению, у нас есть несоответствие в наших документах. Это правильно задокументировано здесь https://cloud.google.com/appengine/docs/flexible/python/migrating, но (на данный момент) https://cloud.google.com/appengine/docs/flexible/custom-runtimes/build неверен. Обновление документации находится на рассмотрении и должно быть опубликовано в ближайшее время.

Извиняюсь за путаницу.

person Zach Fewtrell    schedule 15.05.2017
comment
Спасибо за откровенность - продолжайте в том же духе. Думаю, я напишу традиционный хук выключения. - person paul_h; 17.05.2017
comment
Общедоступные документы обновлены: cloud.google.com/appengine /docs/flexible/custom-runtimes/сборка - person Zach Fewtrell; 18.05.2017
comment
Я в замешательстве, Фрэнк. Я только что посмотрел, и раздел «Запросы на проверку работоспособности» подразумевает, что _ah/health действительно работает для flex. Своего рода идет вразрез с вашим So flex не использует оператор /_ah/*. - person paul_h; 19.05.2017
comment
Привет, Пол. Вы правы, '/_ah/health' по-прежнему используется для проверки работоспособности. Тоже не блокируется. - person Zach Fewtrell; 19.05.2017
comment
Привет, Зак. А как насчет /_ah/stop? Это заблокировано? Если нет, я могу увидеть проблемы, если случайный незнакомец попадет в эту конечную точку в приложении, у которого есть код, прикрепленный к этому маршруту, где автор ДУМАЛ, что в инфраструктуре контейнера Google может вызвать его. - person paul_h; 20.05.2017

На основе этой страницы: https://cloud.google.com/appengine/docs/flexible/go/how-requests-are-handled

Заголовки, соответствующие X-Google-* или X-Appengine-*, удаляются, когда запрос входит в GCP. Затем Appengine может добавить заголовки, соответствующие этим шаблонам, поэтому, если ваши обработчики обнаружат какие-либо такие заголовки, я думаю, можно с уверенностью предположить, что запрос исходит от GAE, а не от какого-то случайного клиента.

Вы можете сбросить все заголовки, которые вы получаете, и посмотреть, есть ли какие-либо интересные, затем из общедоступного клиента попробуйте отправить запрос и установить такой заголовок с некоторым значением и посмотреть, сначала ли он очищен, а затем снова установлен GAE. Любой такой заголовок должен быть очищен в первую очередь, иначе любой сможет отправить его в ваше приложение.

Я бы не стал полагаться на IP-адреса.

person user2526241    schedule 15.05.2017