Как правильно настроить брандмауэр VPC для экземпляров App Engine? - PullRequest
0 голосов
/ 30 января 2019

Мы пытаемся развернуть приложение на основе микросервиса, используя механизм приложений Google (в основном, гибкие экземпляры), имея шлюз в службе по умолчанию и несколько микросервисов, обеспечивающих бизнес-логику.Вы можете думать об этом как:

  • foo.appspot.com
  • service1.foo.appspot.com
  • service2.foo.appspot.com

, как это сделано здесь

Я бы хотел, чтобы службы были доступны только со шлюза (и, возможно, с нескольких других машин), а не снаружи, но я не мог заставить его работать.

Мне удалось настроить все службы в данной сети VPC, добавив правило для «Запретить весь трафик», поступающего в эту сеть, за исключением шлюза, который помечен и разрешает все.(как описано в этом ответе здесь )

Это работает для среды выполнения, однако при этом мы не можем выполнить развертывание с использованием gcloud app deploy.(Зависает на шаге «Служба обновления»).Я попытался разрешить 22 порта, но, похоже, это не тот, который используется.Я также пытался заблокировать только порты 80 и 443, но теперь сервис-движки приложений service1 и service2 снова доступны из этого извне.

Как настроить межсетевой экран для возможности развертывания на App Engineи ограничить доступ к сервисам только шлюзом?Возможно ли это даже с помощью брандмауэра VPC, или я должен либо использовать экземпляр KCE, либо избегать использования инфраструктуры GCP и подписывать / проверять запросы самостоятельно?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

После некоторого дальнейшего изучения, то, что вы хотите, не возможно в GAE прямо сейчас.

Здесь есть некоторые возможные обходные пути, которые вы можете попробовать:

  • Используйте Bastion VM .С этой опцией вы получите код для того, что было вашей службой по умолчанию в Bastion VM, а затем развернули GAE flex с двумя другими развернутыми службами и установили там правило брандмауэра GAE, чтобы разрешить связь только с Bastion VM.

  • Как вы сказали в своем вопросе, вы можете использовать Kubernetes.Вот руководство по развертыванию контейнерного веб-приложения .

  • Наконец, вы можете выполнить собственную проверку входящих запросов, используя стандартные заголовки HTTP, такие как X-Forwarded-For для определения IP-адреса клиента.

0 голосов
/ 05 февраля 2019

Один из способов сделать это - использовать элементы управления брандмауэра для App Engine Flexible, который можно использовать для установки правил в интерфейсе.

Если вы запрещаете любой доступ к вашему приложению (например,просто изменив deny брандмауэр по умолчанию, как показано на рисунке), ничего не получит доступ к вашим услугам, и вы все равно сможете развернуть свое приложение в GAE.Затем вам просто нужно разрешить определенным диапазонам IP-адресов доступ к вашему приложению с другими правилами брандмауэра в GAE.

enter image description here

В этом случае вы делаетедаже не нужно иметь VPC и создавать там правила брандмауэра.

...