适用于:
Azure Database for PostgreSQL 灵活服务器
运行 Azure Database for PostgreSQL 灵活服务器时,有两个主要网络选项。 这两个选项是“专用访问(虚拟网络集成)”和“公共访问(允许的 IP 地址)”。
利用公共访问,可通过公共终结点访问 Azure Database for PostgreSQL 服务器。 默认情况下,防火墙会阻止对服务器的所有访问。 若要指定哪些 IP 主机可以访问服务器,请创建服务器级防火墙规则。 防火墙规则指定允许的公共 IP 地址范围。 防火墙基于每个请求的起始 IP 地址授予对服务器的访问权限。 使用
专用访问
时,没有公共终结点可用,只能使用同一网络上的主机访问 Azure Database for PostgreSQL 灵活服务器。
可使用 Azure 门户或 Azure CLI 命令创建防火墙规则。 你必须是订阅所有者或订阅参与者。
服务器级防火墙规则适用于 Azure Database for PostgreSQL 服务器上的所有数据库。 这些规则不会影响对 Azure 门户网站的访问。
下图显示来自 Internet 和 Azure 的连接尝试必须如何通过防火墙才能访问 PostgreSQL 数据库:
从 Internet 连接
如果该请求的源 IP 地址位于服务器级防火墙规则中指定的某个范围内,则允许进行连接, 否则,它将被拒绝。
例如,如果应用程序与 PostgreSQL 的 Java Database Connectivity (JDBC) 驱动程序连接,则可能会遇到此错误,因为防火墙将阻止连接:
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 Database for PostgreSQL,请确保网络和本地计算机上的防火墙允许 TCP 端口 5432 上的传出通信。
从 Azure 进行连接
我们建议查找任何应用程序或服务的传出 IP 地址,并显式允许访问这些单个 IP 地址或范围。 例如,你可以查找 Azure 应用服务应用的传出 IP 地址,也可以使用绑定到虚拟机的公共 IP 地址。
如果某个固定的传出 IP 地址不适用于 Azure 服务,请考虑启用来自所有 Azure 数据中心 IP 地址的连接:
在 Azure 门户的“网络”窗格中,选中“允许从 Azure 内的任何 Azure 服务公开访问此服务器”复选框 。
选择“保存” 。
“允许从 Azure 内的任何 Azure 服务公开访问此服务器”选项将防火墙配置为允许来自 Azure 的所有连接,包括来自其他客户的订阅的连接。 当使用此选项时,请确保登录名和用户权限将访问权限限制为仅授权用户。
以编程方式管理防火墙规则
除了使用 Azure 门户之外,还可以使用 Azure CLI 以编程方式管理防火墙规则。
在 Azure CLI 中,起始地址和结束地址等于 0.0.0.0 的防火墙规则设置等效于门户中的“允许从 Azure 内的任何 Azure 服务公开访问此服务器”选项。 如果防火墙规则拒绝连接尝试,应用将无法访问 Azure Database for PostgreSQL 服务器。
排查防火墙问题
如果对 Azure Database for PostgreSQL 服务器的访问与预期不符,请考虑以下可能性:
对允许列表的更改尚未生效
:对 Azure Database for PostgreSQL 服务器防火墙配置的更改可能最多需要 5 分钟。
登录未获得授权或使用了错误的密码
:如果登录对 Azure Database for PostgreSQL 服务器没有权限或密码不正确,则与服务器的连接会被拒绝。 创建防火墙设置仅向客户端提供尝试连接到服务器的机会。 每个客户端必须提供必需的安全凭据。
例如,如果对 JDBC 客户端的身份验证失败,可能会出现以下错误:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "yourusername"
防火墙不允许动态 IP 地址
:如果 Internet 连接使用动态 IP 地址,并且你在通过防火墙时遇到问题,请尝试以下解决方案之一:
向 Internet 服务提供商 (ISP) 询问分配给客户端计算机、用于访问 Azure Database for PostgreSQL 服务器的 IP 地址范围。 然后,将该 IP 地址范围作为防火墙规则添加。
改为获取客户端计算机的静态 IP 地址,然后将该静态 IP 地址作为防火墙规则添加。
防火墙规则不适用于 IPv6 格式
:防火墙规则必须采用 IPv4 格式。 如果以 IPv6 格式指定防火墙规则,则会显示验证错误。
使用 Azure 门户创建和管理 Azure Database for PostgreSQL 防火墙规则
使用 Azure CLI 创建和管理 Azure Database for PostgreSQL 防火墙规则