Как обезопасить соединение между различными 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.