Einschränken von Webdatenverkehr mithilfe der Azure-Befehlszeilenschnittstelle
Dieses Skript erstellt ein Anwendungsgateway mit einer Web Application Firewall, das eine VM-Skalierungsgruppe als Back-End-Server verwendet. Die Web Application Firewall schränkt den Webdatenverkehr anhand von OWASP-Regeln ein. Nach dem Ausführen des Skripts können Sie das Anwendungsgateway mit dessen öffentlicher IP-Adresse testen.
Installieren Sie zum Ausführen dieses Beispiels die aktuelle Version der Azure-Befehlszeilenschnittstelle. Führen Sie zum Starten az login
aus, um eine Verbindung mit Azure herzustellen.
Beispiele für die Azure-Befehlszeilenschnittstelle sind für die bash
-Shell geschrieben. Wenn Sie dieses Beispiel in Windows PowerShell oder an der Eingabeaufforderung ausführen möchten, müssen Sie unter Umständen Elemente des Skripts ändern.
Sollten Sie über kein Azure-Abonnement verfügen, erstellen Sie zunächst ein kostenloses Azure-Konto.
Beispielskript
# Create a resource group
az group create --name myResourceGroupAG --location eastus
# Create network resources
az network vnet create \
--name myVNet \
--resource-group myResourceGroupAG \
--location eastus \
--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 eastus \
--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 Ubuntu2204 \
--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/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
# Create a storage account
az storage account create \
--name myagstore1 \
--resource-group myResourceGroupAG \
--location eastus \
--sku Standard_LRS \
--encryption blob
# Configure diagnostics
appgwid=$(az network application-gateway show --name myAppGateway --resource-group myResourceGroupAG --query id -o tsv)
storeid=$(az storage account show --name myagstore1 --resource-group myResourceGroupAG --query id -o tsv)
az monitor diagnostic-settings create --name appgwdiag --resource $appgwid \
--logs '[ { "category": "ApplicationGatewayAccessLog", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } }, { "category": "ApplicationGatewayPerformanceLog", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } }, { "category": "ApplicationGatewayFirewallLog", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } } ]' \
--storage-account $storeid
# Get the IP address
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv
Bereinigen der Bereitstellung
Führen Sie den folgenden Befehl aus, um die Ressourcengruppe, das Anwendungsgateway und alle zugehörigen Ressourcen zu entfernen.
az group delete --name myResourceGroupAG --yes
Erläuterung des Skripts
Dieses Skript verwendet die folgenden Befehle zum Erstellen der Bereitstellung. Jedes Element in der Tabelle ist mit der befehlsspezifischen Dokumentation verknüpft.
Get-Help | Notizen |
---|---|
az group create | Erstellt eine Ressourcengruppe, in der alle Ressourcen gespeichert sind. |
az network vnet create | Erstellen Sie ein virtuelles Netzwerk. |
az network vnet subnet create | Erstellt ein Subnetz in einem virtuellen Netzwerk. |
az network public-ip create | Erstellt die öffentliche IP-Adresse für das Anwendungsgateway. |
az network application-gateway create | Erstellen eines Anwendungsgateways |
az vmss create | Erstellt eine VM-Skalierungsgruppe. |
az storage account create | Erstellt ein Speicherkonto. |
az monitor diagnostic-settings create | Erstellt ein Speicherkonto. |
az network public-ip show | Ruft die öffentliche IP-Adresse für das Anwendungsgateway ab. |
Nächste Schritte
Weitere Informationen zur Azure CLI finden Sie in der Azure CLI-Dokumentation.