Правило брандмауэра в Базе данных Azure для PostgreSQL. Отдельный сервер

Область применения: отдельный сервер Базы данных Azure для PostgreSQL

Внимание

База данных Azure для PostgreSQL — одиночный сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для PostgreSQL — гибкий сервер. Дополнительные сведения о миграции на База данных Azure для PostgreSQL — гибкий сервер см. в статье "Что происходит с одним сервером База данных Azure для PostgreSQL?".

Сервер Базы данных Azure для PostgreSQL защищен по умолчанию, предотвращая любой доступ к вашему серверу баз данных, пока вы не укажете, каким IP-узлам разрешен доступ к нему. Брандмауэр предоставляет доступ к серверу на основе исходного IP-адреса каждого запроса. Для настройки брандмауэра можно создать правила брандмауэра, которые указывают диапазон допустимых IP-адресов. Правила брандмауэра можно создавать на уровне сервера.

Правила брандмауэра: эти правила разрешают клиентам доступ ко всему серверу базы данных Azure для PostgreSQL, то есть ко всем базам данных на одном логическом сервере. Правила брандмауэра уровня сервера можно настроить на портале Azure или с помощью команд Azure CLI. Для создания правил брандмауэра уровня сервера необходимо быть владельцем или участником подписки.

Общие сведения о брандмауэре

По умолчанию весь доступ на сервере базы данных Azure для PostgreSQL блокируется брандмауэром. Чтобы получить доступ к серверу с другого компьютера,клиента или приложения, сначала необходимо указать одно или несколько правил брандмауэра уровня сервера для обеспечения доступа к нему. Используйте правила брандмауэра, чтобы указать разрешенные диапазоны общедоступных IP-адресов. Правила брандмауэра не повлияют на доступ к самому веб-сайту портала Azure. Запросы на подключение из Интернета и Azure должны сначала обрабатываться брандмауэром и только потом направляться к базе данных PostgreSQL, как показано на следующей схеме:

Пример рабочего потока брандмауэра

Подключение через Интернет

Правила брандмауэра уровня сервера применяются ко всем базам данных на одном и том же сервере базы данных Azure для PostgreSQL. Если исходный IP-адрес запроса находится в одном из диапазонов, указанных в правилах брандмауэра уровня сервера, подключение предоставляется, в противном же случае оно будет отклонено. Например, если приложение подключается с помощью драйвера JDBC для PostgreSQL, то при попытке подключения может возникать эта ошибка, когда брандмауэр блокирует подключение:

java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "123.45.67.890", user "adminuser", database "postgresql", SSL

Примечание.

Для доступа к базе данных Azure для PostgreSQL с локального компьютера убедитесь, что брандмауэр сети и локального компьютера разрешает исходящие подключения через TCP-порт 5432.

Подключение из Azure

Рекомендуется найти исходящий IP-адрес любого приложения или службы и явно разрешить доступ к этим отдельным IP-адресам или диапазонам. Например, можно найти исходящий IP-адрес Службы приложений Azure или использовать общедоступный IP-адрес, привязанный к виртуальной машине или другому ресурсу (дополнительные сведения о подключении к частным IP-адресам виртуальных машин с помощью конечных точек службы см. ниже).

Если фиксированный исходящий IP-адрес недоступен для службы Azure, вы можете разрешить подключения из всех IP-адресов центра обработки данных Azure. Для этого на портале Azure в области Безопасность подключения нужно задать для параметра Разрешить доступ к службам Azure значение Вкл. и нажать кнопку Сохранить. Для той же цели в Azure CLI можно настроить правило брандмауэра для IP-адресов с начальным и конечным адресом 0.0.0.0. Если попытка подключения отклонена правилами брандмауэра, запрос не достигнет сервера Базы данных Azure для PostgreSQL.

Внимание

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

Настройка разрешения доступа к службам Azure на портале

Подключение из виртуальной сети

Чтобы безопасно подключиться к серверу службы "База данных Azure для PostgreSQL" из виртуальной сети, рекомендуется использовать конечные точки службы виртуальной сети.

Программное управление правилами брандмауэра

Помимо портала Azure правилами брандмауэра можно управлять программно с помощью Azure CLI. Ознакомьтесь также со статьей Создание правил брандмауэра базы данных Azure для PostgreSQL и управление ими с помощью Azure CLI.

Устранение неполадок с брандмауэром

Если доступ к службе сервера базы данных Microsoft Azure для PostgreSQL не работает должным образом, необходимо учитывать следующее:

  • Изменения в списке разрешенных адресов еще не вступили в силу. До вступления в силу изменений конфигурации брандмауэра сервера базы данных Azure для PostgreSQL может присутствовать задержка до пяти минут.

  • Имя для входа не авторизовано, или использован неправильный пароль. Если имя для входа не имеет разрешений на сервере базы данных Azure для PostgreSQL или введен неправильный пароль, то подключение к серверу базы данных Azure для PostgreSQL отклоняется. Создание параметра брандмауэра только предоставляет клиентам возможность подключения к серверу. Каждый клиент должен предоставить необходимые учетные данные безопасности.

    Например, при использовании клиента JDBC может возникать следующая ошибка:

    java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "yourusername"

  • Динамический IP-адрес: при наличии подключения к Интернету с динамическим предоставлением IP-адресов и возникновении проблем с прохождением через брандмауэр попробуйте одно из описанных ниже решений.

    • Попросите поставщика услуг Интернета (ISP) назначить диапазон IP-адресов тем клиентским компьютерам, с которых осуществляется доступ к серверу базы данных Azure для PostgreSQL, а затем добавьте диапазон IP-адресов в качестве правила брандмауэра.

    • Получите статические IP-адреса для клиентских компьютеров, а затем добавьте статические IP-адреса как правила брандмауэра.

  • IP-адрес сервера является общедоступным. Подключения к серверу Базы данных Azure для PostgreSQL направляются через общедоступный шлюз Azure. Однако фактический IP-адрес сервера защищен брандмауэром. Дополнительные сведения см. в статье об архитектуре подключения.

  • Не удается подключиться из ресурса Azure с разрешенным IP-адресом. Проверьте, включена ли конечная точка службы Microsoft.Sql для подсети, из которой вы подключаетесь. Если Microsoft.Sql включена, для этой подсети нужно использовать только правила конечной точки службы виртуальной сети.

    Например, если вы подключаетесь из виртуальной машины Azure в подсети, в которой включена Microsoft.Sql, но у вас нет соответствующего правила виртуальной сети, может появиться следующее сообщение об ошибке: FATAL: Client from Azure Virtual Networks is not allowed to access the server

  • Правило брандмауэра недоступно для формата IPv6. Правила брандмауэра должны иметь формат IPv4. Если указать правила брандмауэра в формате IPv6, отобразится ошибка проверки.

Следующие шаги