Как разрешить только внутренние (cron) запросы в моем App Engine

В настоящее время я использую механизм приложений nodejs (гибкая среда) для выполнения запланированных задач, таких как выключение и запуск экземпляров или создание моментальных снимков. Проблема в том, что эти App Engine доступны отовсюду, но я хочу, чтобы они были доступны только в моей облачной сети Google. Я не могу заставить брандмауэр работать таким образом. Кто-нибудь знает, есть ли способ сделать это или нет?


person David    schedule 10.10.2017    source источник
comment
будет ли вам достаточно для обеспечения Cron Jobs?   -  person Michael Meyer    schedule 10.10.2017


Ответы (1)


Чтобы принудительно запускать задания cron только в сети Google Cloud Network, вы можете проверить заголовок X-Appengine-Cron: true запроса, а IP-адрес клиента — 0.1.0.1.

Из документации:

Возможно, вы захотите проверить, что запросы к вашим URL-адресам cron поступают из App Engine, а не из другого источника. Вы можете сделать это, проверив заголовок HTTP и исходный IP-адрес для запроса:

  • Запросы от службы Cron также будут содержать HTTP-заголовок:

    X-Appengine-Cron: true

Заголовок X-Appengine-Cron задается внутри Google App Engine. Если ваш обработчик запросов находит этот заголовок, он может быть уверен, что запрос является запросом cron. Заголовки X удаляются App Engine, когда они происходят из внешних источников, чтобы вы могли доверять этому заголовку.

  • Google App Engine отправляет cron-запросы с IP-адреса 0.1.0.1.
person Alexander Trakhimenok    schedule 10.10.2017
comment
попробовал это в Postman, определенно удаляет X-Appengine-Cron, но не все заголовки X-. Я предполагаю, что любые X- заголовки, которые использует appengine, будут удалены. Я смог отправить X-AppengineCrn просто отлично (для проверки работоспособности почтальон работал) - person Jer_TX; 11.10.2019
comment
В том-то и дело, что только AppEngine может установить заголовок, чтобы вы могли ему доверять. - person Alexander Trakhimenok; 13.10.2019