0

目标: 通过代码在预防和检测模式之间切换应用程序网关 WAF。

配置详情:

  • 应用 GW SKU:WAFv2
  • 已部署应用程序网关 WAF
  • 实施自定义规则和托管策略
  • WAF关联应用网关

先决条件命令:

$policyName = *Input*
$appGWName = *Input*
$appGWRG = *Input*
$location = *Input*
$gw = Get-AzApplicationGateway -Name $appGWName -ResourceGroupName $appGWRG
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $appGWRG

我尝试过的:

  1. 手动我能够从预防切换到检测。(成功的)

  2. 使用 Powershell 命令,我可以直接更新 WAF 策略设置,但它不会复制到资源本身。

    $policy.PolicySettings.Mode = "Prevention"
    $policy.PolicySettings.Mode = "Detection"
    
  3. 使用 Powershell 命令,我可以通过应用程序网关更新 WAF 策略,但它不会复制到 WAF 或应用程序网关。

    Set-AzApplicationGatewayWebApplicationFirewallConfiguration -FirewallMode Detection -ApplicationGateway $gw -Enabled $true
    

收到以下错误:

quoteSet-AzApplicationGateway:当存在与之关联的 WAF 策略 /subscriptions/7bba5d50-5df8-49be-b59d-b737e7663335/resourceGroups/pbolkun-RG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/WafPolicyProdEusAgw 时,无法更改 WebApplicationFirewallConfiguration。

我也尝试过Set-AzApplicationGateway -ApplicationGateway $gw在每个实现结束时再次不起作用..

我想要一种编程方式,以便最大限度地利用 IaC。每次我想在两者之间切换以进行测试时,我宁愿避免部署 ARM 模板。

提前谢谢你!

4

1 回答 1

0

我通过创建应用程序网关和 WAF 策略并将该策略与应用程序网关相关联,在我的环境中进行了相同的测试。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

然后我使用以下代码更改防火墙策略设置并更新应用程序网关:

param
(
[string] $policyName = "ansumanwafpolicy",
[string]$appGWName = "appansumangw",
[string]$appGWRG = "ansumantest",
[string]$location = "West US 2",
[string] $policyMode = "Detection"
)
$gw = Get-AzApplicationGateway -Name $appGWName -ResourceGroupName $appGWRG
$policy= Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $appGWRG 
$update = @{
Mode = $policyMode
State = $policy.PolicySettings.State
RequestBodyCheck = $policy.PolicySettings.RequestBodyCheck
MaxRequestBodySizeInKb = $policy.PolicySettings.MaxRequestBodySizeInKb
FileUploadLimitInMb = $policy.PolicySettings.FileUploadLimitInMb
}

$UpdatePolicy = Set-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $appGWRG -PolicySetting $update
$UpdateAPPGW = Set-AzApplicationGatewayWebApplicationFirewallConfiguration -FirewallMode $policyMode -ApplicationGateway $gw -Enabled $gw.WebApplicationFirewallConfiguration.Enabled -RuleSetType $gw.WebApplicationFirewallConfiguration.RuleSetType -RuleSetVersion $gw.WebApplicationFirewallConfiguration.RuleSetVersion

输出:

在此处输入图像描述 在此处输入图像描述

它不会立即反映,但几分钟后运行 get appgw 命令会显示如下更改:

在此处输入图像描述

于 2022-02-02T10:05:24.030 回答