你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure CLI 创建和管理 Azure Database for PostgreSQL 灵活服务器防火墙规则

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

Azure Database for PostgreSQL 灵活服务器支持两种类型的互斥网络连接方法,用于连接到 Azure Database for PostgreSQL 灵活服务器实例。 这两个选项如下:

  • 公共访问(允许的 IP 地址)。 在预览版中使用基于 专用链接 的网络和 Azure Database for PostgreSQL 灵活服务器,可以进一步保护该方法。
  • 专用访问(VNet 集成)

本文重点介绍如何使用 Azure CLI 创建具有公共访问(允许的 IP 地址)Azure Database for PostgreSQL 灵活服务器实例,并提供可用于在创建服务器后创建、更新、删除、列出和显示防火墙规则的 Azure CLI 命令的概述。 使用 公共访问(允许的 IP 地址),与 Azure Database for PostgreSQL 灵活服务器实例的连接仅限于允许的 IP 地址。 防火墙规则中需要允许客户端 IP 地址。 若要了解详细信息,请参阅公共访问(允许的 IP 地址)。 可以在创建服务器时定义防火墙规则(建议),但也可以稍后添加。

启动 Azure Cloud Shell

Azure Cloud Shell 是免费的交互式 shell,可以使用它运行本文中的步骤。 它预安装有常用 Azure 工具并将其配置与帐户一起使用。

若要打开 Cloud Shell,只需要从代码块的右上角选择“试一试”。 也可以在单独的浏览器标签页中通过转到 https://shell.azure.com/bash 打开 Cloud Shell。 选择“复制”以复制代码块,将其粘贴到 Cloud Shell 中,然后选择 Enter 来运行它。

如果希望在本地安装并使用 CLI,则本快速入门需要 Azure CLI 2.0 版或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

先决条件

需要使用 az login 命令登录帐户。 请注意 ID 属性,该属性指的是 Azure 帐户的订阅 ID 。

az login

使用 az account set 命令选择帐户下的特定订阅。 记下 az login 输出中的 ID 值,将其用作命令中 subscription 参数的值。 如果有多个订阅,请选择应计费的资源所在的相应订阅。 若要获取所有订阅,请使用 az account list

az account set --subscription <subscription id>

使用 Azure CLI 在 Azure Database for PostgreSQL 灵活服务器实例创建期间创建防火墙规则

可以使用 az postgres flexible-server --public access 该命令创建具有公共访问(允许的 IP 地址)的 Azure Database for PostgreSQL 灵活服务器实例, 并在创建 Azure Database for PostgreSQL 灵活服务器实例期间配置防火墙规则。 可使用“--public-access”开关来提供能够连接到服务器的允许的 IP 地址。 可提供要包含在允许的 IP 列表中的单个或一系列 IP 地址。 IP 地址范围必须用短划线分隔,并且不包含任何空格。 可以使用 CLI 创建 Azure Database for PostgreSQL 灵活服务器实例,如以下示例所示。

请参阅 Azure CLI 参考文档 以获取可配置 CLI 参数的完整列表。 例如,在下面的命令中,可以选择指定资源组。

  • 创建具有公共访问权限的 Azure Database for PostgreSQL 灵活服务器实例,并添加客户端 IP 地址以访问服务器:

    az postgres flexible-server create --public-access <my_client_ip>
    
  • 创建具有公共访问权限的 Azure Database for PostgreSQL 灵活服务器实例,并添加 IP 地址范围以有权访问此服务器:

    az postgres flexible-server create --public-access <start_ip_address-end_ip_address>
    
  • 创建具有公共访问权限的 Azure Database for PostgreSQL 灵活服务器实例,并允许来自 Azure IP 地址的应用程序连接到 Azure Database for PostgreSQL 灵活服务器实例:

    az postgres flexible-server create --public-access 0.0.0.0
    

    重要

    该选项将防火墙配置为允许从 Azure 服务和 Azure 中资源对此服务器进行公共访问,包括来自其他客户的订阅的连接。 选择该选项时,请确保登录名和用户权限将访问限制为仅允许授权用户访问。

    • 创建具有公共访问权限的 Azure Database for PostgreSQL 灵活服务器实例,并允许所有 IP 地址:
      az postgres flexible-server create --public-access all
      

      注意

      上述命令创建一个防火墙规则,其起始 IP 地址=0.0.0.0,结束 IP 地址=255.255.255.255,且未阻止任何 IP 地址。 Internet 上的任何主机都可以访问此服务器。 强烈建议仅暂时且仅在不包含敏感数据的测试服务器上使用此规则。

  • 创建具有公共访问权限且没有 IP 地址的 Azure Database for PostgreSQL 灵活服务器实例:

    az postgres flexible-server create --public-access none
    

    注意

    建议不要创建一个没有任何防火墙规则的服务器。 如果未添加任何防火墙规则,则任何客户端都无法连接到服务器。

创建服务器后创建和管理防火墙规则

在 Azure CLI 中使用 az postgres flexible-server firewall-rule 命令,创建、删除、列出、显示和更新防火墙规则。

命令:

  • create:创建 Azure Database for PostgreSQL 灵活服务器防火墙规则。
  • 列表:列出 Azure Database for PostgreSQL 灵活服务器防火墙规则。
  • 更新:更新 Azure Database for PostgreSQL 灵活服务器防火墙规则。
  • 显示 Azure Database for PostgreSQL 灵活服务器防火墙规则的详细信息。
  • delete:删除 Azure Database for PostgreSQL 灵活服务器防火墙规则。

请参阅 Azure CLI 参考文档 以获取可配置 CLI 参数的完整列表。 例如,在下面的命令中,可以选择指定资源组。

创建防火墙规则

使用 az postgres flexible-server firewall-rule create 命令在服务器上创建新的防火墙规则。 若要允许一系列 IP 地址的访问,请提供 IP 地址用作起始 IP 地址和结束 IP 地址,如此示例所示。 此命令还需要使用服务器所在的 Azure 资源组的名称作为参数。

az postgres flexible-server firewall-rule create --name mydemoserver --resource-group testGroup --start-ip-address 13.83.152.0 --end-ip-address 13.83.152.15

若要允许单个 IP 地址的访问,只需提供单个 IP 地址,如此示例所示。

az postgres flexible-server firewall-rule create --name mydemoserver  --resource-group testGroup  --start-ip-address 1.1.1.1

若要允许来自 Azure IP 地址的应用程序连接到 Azure Database for PostgreSQL 灵活服务器实例,请提供 IP 地址 0.0.0.0 作为起始 IP,如以下示例所示。

az postgres flexible-server firewall-rule create --name mydemoserver --resource-group testGroup --start-ip-address 0.0.0.0

重要

该选项将防火墙配置为允许从 Azure 服务和 Azure 中资源对此服务器进行公共访问,包括来自其他客户的订阅的连接。 选择该选项时,请确保登录名和用户权限将访问限制为仅允许授权用户访问。

成功后,每个创建命令输出都会以 JSON 格式(默认情况下)列出创建的防火墙规则的详细信息。 如果失败,输出会改为显示错误消息文本。

列出防火墙规则

使用 az postgres flexible-server firewall-rule list 命令列出服务器上现有的服务器防火墙规则。 请注意,服务器名称属性是在“--name”开关中指定的。

az postgres flexible-server firewall-rule list --name mydemoserver --resource-group testGroup

输出会默认采用 JSON 格式列出规则(如果有)。 可使用“--output table”开关,以更具可读性的表格格式输出结果。

az postgres flexible-server firewall-rule list --name mydemoserver --resource-group testGroup --output table

更新防火墙规则

使用 az postgres flexible-server firewall-rule update 命令更新服务器上现有的防火墙规则。 提供现有防火墙规则的名称作为输入,并提供要更新的起始 IP 地址和结束 IP 地址属性。

az postgres flexible-server firewall-rule update --name mydemoserver --rule-name FirewallRule1 --resource-group testGroup --start-ip-address 13.83.152.0 --end-ip-address 13.83.152.1

成功后,命令输出会以 JSON 格式(默认情况下)列出更新的防火墙规则的详细信息。 如果失败,输出会改为显示错误消息文本。

注意

如果防火墙规则不存在,则规则由更新命令创建。

显示防火墙规则详细信息

使用 az postgres flexible-server firewall-rule show 命令显示服务器中现有的防火墙规则详细信息。 输入现有防火墙规则的名称。

az postgres flexible-server firewall-rule show --name mydemoserver --rule-name FirewallRule1 --resource-group testGroup

成功后,命令输出会列出指定的防火墙规则的详细信息,默认采用 JSON 格式。 如果失败,输出会改为显示错误消息文本。

删除防火墙规则

使用 az postgres flexible-server firewall-rule delete 命令删除服务器中现有的防火墙规则。 输入现有防火墙规则的名称。

az postgres flexible-server firewall-rule delete --name mydemoserver --rule-name FirewallRule1 --resource-group testGroup

成功后没有任何输出。 如果失败,会显示错误消息文本。

后续步骤