使用 Azure CLI 限制 Web 流量

此脚本创建具有 Web 应用程序防火墙且使用虚拟机规模集作为后端服务器的应用程序网关。 Web 应用程序防火墙基于 OWASP 规则限制 Web 流量。 在运行脚本后,可以使用应用程序网关的公用 IP 地址测试该网关。

若要运行此示例,请确保已安装最新版本的 Azure CLI。 若要开始,请运行 az login 以创建与 Azure 的连接。

Note

在运行 az login 之前,请先运行 az cloud set -n AzureChinaCloud 以更改云环境。 如果要切换回全球 Azure,请再次运行 az cloud set -n AzureCloud

此示例在 Bash shell 中正常工作。 有关在 Windows 客户端上运行 Azure CLI 脚本的选项,请参阅在 Windows 上安装 Azure CLI

如果没有 Azure 订阅,可在开始前创建一个试用帐户

示例脚本

# Create a resource group
az group create --name myResourceGroupAG --location chinanorth

# Create network resources
az network vnet create `
  --name myVNet `
  --resource-group myResourceGroupAG `
  --location chinanorth `
  --address-prefix 10.0.0.0/16 `
  --subnet-name myAGSubnet `
  --subnet-prefix 10.0.1.0/24
az network vnet subnet create `
  --name myBackendSubnet `
  --resource-group myResourceGroupAG `
  --vnet-name myVNet `
  --address-prefix 10.0.2.0/24
az network public-ip create `
  --resource-group myResourceGroupAG `
  --name myAGPublicIPAddress

# Create the application gateway with WAF
az network application-gateway create `
  --name myAppGateway `
  --location chinanorth `
  --resource-group myResourceGroupAG `
  --vnet-name myVNet `
  --subnet myAGSubnet `
  --capacity 2 `
  --sku WAF_Medium `
  --http-settings-cookie-based-affinity Disabled `
  --frontend-port 80 `
  --http-settings-port 80 `
  --http-settings-protocol Http `
  --public-ip-address myAGPublicIPAddress
az network application-gateway waf-config set `
  --enabled true `
  --gateway-name myAppGateway `
  --resource-group myResourceGroupAG `
  --firewall-mode Detection `
  --rule-set-version 3.0

# Create a virtual machine scale set
az vmss create `
  --name myvmss `
  --resource-group myResourceGroupAG `
  --image UbuntuLTS `
  --admin-username azureuser `
  --admin-password Azure123456! `
  --instance-count 2 `
  --vnet-name myVNet `
  --subnet myBackendSubnet `
  --vm-sku Standard_DS2 `
  --upgrade-policy-mode Automatic `
  --app-gateway myAppGateway `
  --backend-pool-name appGatewayBackendPool

# Install NGINX
az vmss extension set `
  --publisher Microsoft.Azure.Extensions `
  --version 2.0 `
  --name CustomScript `
  --resource-group myResourceGroupAG `
  --vmss-name myvmss `
  --settings "{ 'fileUris': ['https://raw.githubusercontent.com/davidmu1/samplescripts/master/install_nginx.sh'], 'commandToExecute': './install_nginx.sh' }"

# Get the IP address
az network public-ip show `
  --resource-group myResourceGroupAG `
  --name myAGPublicIPAddress `
  --query [ipAddress] `
  --output tsv

清理部署

运行以下命令来删除资源组、应用程序网关和所有相关资源。

az group delete --name myResourceGroupAG --yes

脚本说明

此脚本使用以下命令创建部署。 表中的每一项均链接到特定于命令的文档。

命令 注释
az group create 创建用于存储所有资源的资源组。
az network vnet create 创建虚拟网络。
az network vnet subnet create 在虚拟网络中创建子网。
az network public-ip create 创建应用程序网关的公用 IP 地址。
az network application-gateway create 创建应用程序网关。
az vmss create 创建虚拟机规模集。
az storage account create 创建存储帐户。
az monitor diagnostic-settings create 创建存储帐户。
az network public-ip show 获取应用程序网关的公共 IP 地址。

后续步骤

有关 Azure CLI 的详细信息,请参阅 Azure CLI 文档

可以在 Azure 应用程序网关文档中找到其他应用程序网关 CLI 脚本示例。