Есть ли какие-либо порты и IP-адреса, которые мне нужно открыть в брандмауэре моего частного сервера для прохождения запросов облачных функций?

#firebase #google-cloud-functions

# #firebase #google-cloud-функции

Вопрос:

У меня есть действие Google Assistant, которое использует облачные функции, и в этом действии мне нужно отправлять запросы GET / POST на мой частный сервер.

Мы используем платформу Thingworx для разработки, и она размещена в частном облаке за брандмауэром.

Я также пробовал Postman для отправки этих запросов, и он работал отлично, но когда я использую то же самое в своем действии Google Assistant, это просто не работает, и все, что я получаю, это пустой ответ.

Мой код запроса приведен ниже:

 function callMeAPI(agent) {
var request = require("request");

var options = { method: 'GET',
  url: 'https://{IP:Port}/Thingworx/Things/{Path}',
  qs: { appKey: 'AppKey Used Here' },
  headers: 
   { 'cache-control': 'no-cache',
     Accept: 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
  agent.add("body");
});
 

Итак, есть ли какие-либо порты и IP-адреса / URL, которые нам нужно добавить в наши правила брандмауэра, чтобы добавить запросы, исходящие от облачных функций, для прохождения через брандмауэр в наше приложение Thingworx?

Ответ №1:

Вы не должны делать никаких предположений об IP-адресе исходящего трафика, исходящего от облачных функций. Исходный IP-адрес может меняться со временем, в зависимости от инфраструктуры Google, а также в зависимости от того, в каком регионе была развернута ваша функция.

Если вам нужно убедиться, что доступ к вашей сети исходит от вашей функции, вы должны реализовать какую-то аутентификацию в запросе, чтобы ваше собственное приложение могло проверить запрос. Как правило, существует некоторый общий секрет, который знают только обе стороны, что указывает на то, что они знают друг о друге.

Комментарии:

1. Итак, поскольку Firebase динамически выделяет свой IP-адрес, как и другие сервисы Google (например, Карты Google), могу ли я просто внести его в белый список «firebase.google.com » чтобы разрешить его подключение к нашему облаку? Кроме того, использует ли Firebase определенные порты для своих функций, как для FCM (5228)?

2. Это не динамическое распределение IP-адресов. Просто не гарантируется, что они будут из заданного диапазона IP в любой данный момент времени. Исходные порты никогда не гарантируются.