Настроить Google Cloud Firewall для фильтрации Теги и подсети

Я работаю PostgreSQL в экземпляре Google Cloud Compute Engine, а PostgreSQL в настоящее время настроен для приема подключений из любого места, идея заключается в том, что я использую брандмауэр для управления доступом вместо того, чтобы каждый раз входить на сервер.

В настоящее время у меня есть правило брандмауэра development-allow-psql , Шаблон настроен для создания экземпляров со следующими настройками:

Network tags: myapp-api, http-server, https-server
Network: development
Subnetwork: development (with address range 10.154.0.0/20)

Я хочу ограничить доступ к этому экземпляру БД экземплярами, имеющими тег myapp-api или подсеть 10.154.0.0/ 20 или оба. Поэтому я изменяю настройки брандмауэра на следующие:

Targets: Specified target tags
Target tags: myapp-api
Source Filter: Subnets
Subnets: 10.154.0.0/20
Second Source Filter: None
Specified protocols and ports: tcp:5432

Это блокирует доступ к команде psql , которую я запускал ранее (команда psql запускается из экземпляров докера, к которым я получаю доступ через докер exec -ti -u0 my-instance-api-dev-small bash )

Если я сейчас перейду на

Targets: All instances on the network
Source Filter: Subnets
Subnets: 10.154.0.0/20
Second Source Filter: Source tags
Source tags: myapp-api
Specified protocols and ports: tcp:5432

, он все равно заблокирует весь доступ. Если я сейчас удалю второй фильтр источника и буду фильтровать только подсеть, все равно нет доступа.

Targets: All instances on the network
Source Filter: Subnets
Subnets: 10.154.0.0/20
Second Source Filter: None
Specified protocols and ports: tcp:5432

Если я отключу фильтр источника подсети для фильтра тегов:

Targets: All instances on the network
Source Filter: Source tags
Source tags: myapp-api
Second Source Filter: None
Specified protocols and ports: tcp:5432

... все равно нет доступа.

То же самое при выборе Фильтр источника подсетей и просто выбор всех подсетей.

Переключение на:

Targets: All instances on the network
Source Filter: IP ranges
Source IP ranges: 0.0.0.0/0
Second Source Filter: Source tags
Source tags: myapp-api
Specified protocols and ports: tcp:5432

снова позволяет всем (даже за пределами Google Cloud) подключаться, даже если я указал исходный тег

Изменение диапазона IP-адресов на 10.154. 0. 0/20 снова блокирует всех.

Targets: All instances on the network
Source Filter: IP ranges
Source IP ranges: 10.154.0.0/20
Second Source Filter: Source tags
Source tags: myapp-api
Specified protocols and ports: tcp:5432

Замена диапазона IP-адресов внешними IP-адресами экземпляров, например 35.189.124.141/32 , работает, но поскольку эти IP-адреса являются эфемерными, это не решение, поскольку ему потребуется обновлять правила брандмауэра каждый раз, когда автоматическое масштабирование добавляет больше экземпляров с новыми IP-адресами.

Как мне настроить брандмауэр, чтобы разрешать экземпляры только из определенной подсети и / или с определенными тегами? То, что я делаю, похоже, не работает.

0
задан 17 March 2018 в 23:19
1 ответ

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

psql "dbname=mydb host=internal-ip-address-here user=myuser password=mypassword port=5432"

Оказывается, когда вы используете теги, межсетевой экран смотрит на внутренний IP-адрес, а не на внешний IP-адрес.

Targets: All instances on the network
Source Filter: Subnets
Subnets: 10.154.0.0/20
Second Source Filter: Source tags
Source tags: myapp-api
Specified protocols and ports: tcp:5432
1
ответ дан 4 December 2019 в 16:00

Теги

Похожие вопросы