AppEngine nodejs: как защитить cron URL от публичного доступа? - PullRequest
0 голосов
/ 04 декабря 2018

https://cloud.google.com/appengine/docs/standard/python/config/cron

Обработчик cron - это просто обычный обработчик, определенный в app.yaml.Вы можете запретить пользователям доступ к URL-адресам, используемым запланированными задачами, ограничив доступ к учетным записям администраторов.

Однако этот параметр недоступен в nodejs.Каков рекомендуемый способ защиты URL-адреса CRON от публичного доступа с помощью среды выполнения nodejs?

1 Ответ

0 голосов
/ 04 декабря 2018

Проверьте, содержит ли ваш запрос

X-Appengine-Cron: true

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

https://cloud.google.com/appengine/docs/flexible/nodejs/scheduling-jobs-with-cron-yaml#validating_cron_requests

Это можно сделать, например, так:

app.get('/my-cron-trigger', async (req, res, next) => {
  // ensure that request comes from cron
  if (req.header('x-appengine-cron') !== 'true') {
    next();
    return;
  }

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