具有公共访问权限的 Azure Database for PostgreSQL - 灵活服务器的网络概述(允许的 IP 地址)

适用于: Azure Database for PostgreSQL 灵活服务器

本文介绍 Azure Database for PostgreSQL 灵活服务器的连接和网络概念。

创建 Azure Database for PostgreSQL 灵活服务器时,必须选择以下一个网络选项:

  • 专用访问(虚拟网络集成)
  • 公共访问(允许的 IP 地址)和专用终结点

无论你是选择使用专用访问还是公共访问选项,以下特征都适用:

  • 从允许的 IP 地址进行连接需要使用有效凭据向 Azure Database for PostgreSQL 灵活服务器进行身份验证。
  • 对网络流量强制实施连接加密。
  • 服务器具有完全限定的域名 (FQDN)。 对于连接字符串中的 hostname 属性,建议使用 FQDN 而不是 IP 地址。
  • 这两个选项都在服务器级别控制访问,而不是在数据库或表级别控制访问。 将使用 PostgreSQL 的角色属性来控制数据库、表和其他对象访问。

注意

由于 Azure Database for PostgreSQL - 灵活服务器是一项托管数据库服务,因此不会向用户提供查看或修改配置文件的主机或操作系统访问权限,例如 pg_hba.conf。 文件内容会根据网络设置自动更新。

使用 Azure Database for PostgreSQL - 灵活服务器的公共访问网络

选择公共访问方法时,将通过 Internet 上的公共终结点访问 Azure Database for PostgreSQL 灵活服务器。 公共终结点是可公开解析的 DNS 地址。 “允许的 IP 地址”是指选择向其授予服务器访问权限的一系列 IP。 这些权限称为“防火墙规则”。

如果需要以下功能,请选择此网络选项:

  • 从不支持虚拟网络的 Azure 资源进行连接。
  • 从未通过 VPN 或 Azure ExpressRoute 连接的 Azure 外部资源进行连接。
  • 确保 Azure Database for PostgreSQL 灵活服务器具有一个可通过 Internet 访问的公共终结点。

公共访问方法的特征包括:

  • 只有允许的 IP 地址才有权访问 Azure Database for PostgreSQL 灵活服务器。 默认情况下,不允许任何 IP 地址。 可以在创建服务器期间或之后添加 IP 地址。
  • Azure Database for PostgreSQL 灵活服务器具有可公开解析的 DNS 名称。
  • Azure Database for PostgreSQL 灵活服务器不在其中一个 Azure 虚拟网络中。
  • 服务器之间的网络流量不会通过专用网络传输。 该流量使用一般的 Internet 路径。

防火墙规则

服务器级防火墙规则适用于同一 Azure Database for PostgreSQL 灵活服务器上的所有数据库。 如果该请求的源 IP 地址位于服务器级防火墙规则中指定的某个范围内,则允许进行连接, 否则,它将被拒绝。 例如,如果应用程序与适用于 PostgreSQL 的 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 门户之外,还可以使用 Azure CLI 以编程方式管理防火墙规则。 有关详细信息,请参阅使用 Azure CLI 创建和管理 Azure Database for PostgreSQL 灵活服务器防火墙规则

允许所有 Azure IP 地址

我们建议查找任何应用程序或服务的传出 IP 地址,并显式允许访问这些单个 IP 地址或范围。 如果某个固定的传出 IP 地址不适用于 Azure 服务,可以考虑启用来自所有 Azure 数据中心 IP 地址的连接。

若要从 Azure 门户启用此设置,请在“网络”窗格中选中“允许从 Azure 内的任何 Azure 服务公开访问此服务器”复选框,然后选择“保存”。

重要

“允许来自 Azure 服务和 Azure 中资源的公共访问”选项将防火墙配置为允许来自 Azure 的所有连接,包括来自其他客户的订阅的连接。 如果选择此选项,请确保登录名和用户权限将访问权限限制为仅已授权用户。

排查公共访问问题

对 Azure Database for PostgreSQL - 灵活服务器的访问表现未及预期时,请考虑以下几点:

  • 对允许列表的更改尚未生效。 对 Azure Database for PostgreSQL 灵活服务器的防火墙配置所做的更改可能最多需要 5 分钟的延迟才可生效。

  • 身份验证失败。 如果用户对 Azure Database for PostgreSQL 灵活服务器没有权限或密码不正确,则与 Azure Database for PostgreSQL 灵活服务器的连接将被拒绝。 创建防火墙设置仅向客户端提供尝试连接到服务器的机会。 每个客户端必须提供必需的安全凭据。

  • 动态客户端 IP 地址阻止访问。 如果 Internet 连接使用动态 IP 寻址,并且在通过防火墙时遇到问题,则可以尝试以下解决方法之一:

    • 请求 Internet 服务提供商 (ISP) 提供分配给访问 Azure Database for PostgreSQL 灵活服务器的客户端计算机的 IP 地址范围。 然后,将该 IP 地址范围作为防火墙规则添加。
    • 改为获取客户端计算机的静态 IP 地址。 然后将静态 IP 地址添加为防火墙规则。
  • 防火墙规则不适用于 IPv6 格式。 防火墙规则必须为 IPv4 格式。 如果以 IPv6 格式指定防火墙规则,则会收到验证错误。

主机名

无论选择哪个网络选项,我们都建议你在连接到 Azure Database for PostgreSQL 灵活服务器时始终使用 FQDN 作为主机名。 服务器的 IP 地址不能保证保持静态。 使用 FQDN 有助于避免更改连接字符串。

使用 FQDN 作为主机名的示例是 hostname = servername.postgres.database.chinacloudapi.cn。 如果可能,请避免使用 hostname = 10.0.0.4(专用地址)或 hostname = 40.2.45.67(公共地址)。

  • 了解如何使用 Azure 门户Azure CLI 中的“公共访问(允许的 IP 地址)”选项创建 Azure Database for PostgreSQL 灵活服务器。