Как обезопасить соединение между различными GAE?

По какой-то причине мне нужно создать два GAE с проектами A и B:

  • A (flex env) - это прокси-сервер, ограниченный конечной точкой и ограничивающий доступ ключом API.
  • B (стандартный env) - это реальный сервер, который выполняет реальные задачи.(B не может применять среду Endpoint)
  • Клиент знает только адрес прокси-сервера и отправляет все запросы A

Теперь я хотел бы обеспечить соединение между A и B. Другими словами, B доступен только из A. Есть ли способ достичь этого? (Брандмауэр здесь не работает, потому что GAE не имеет статического диапазона IP-адресов.)

1 ответ

Решение

Если вы хотите определить личность приложения App Engine, которое отправляет запрос в ваше приложение App Engine, вы можете использовать заголовок запроса X-Appengine-Inbound-Appid. Этот заголовок добавляется к запросу службой URLFetch и не может быть изменен пользователем, поэтому он безопасно указывает идентификатор запрашивающего приложения, если таковой имеется.

В обработчике приложения вы можете проверить входящий идентификатор, прочитав заголовок X-Appengine-Inbound-Appid и сравнив его со списком идентификаторов, которым разрешено делать запросы.

Примечание. Заголовок X-Appengine-Inbound-Appid устанавливается только в том случае, если выполняется вызов домена appspot.com. Если приложение имеет собственный домен, этот заголовок не будет установлен.

https://cloud.google.com/appengine/docs/standard/go/appidentity/

Это должно работать одинаково для всех стандартных сред App Engine.

Другие вопросы по тегам