【问题标题】:Toggle an Application Gateway WAF to Prevention/Detection mode将应用程序网关 WAF 切换到预防/检测模式
【发布时间】:2022-02-02 18:05:24
【问题描述】:

目标: 通过代码在预防和检测模式之间切换应用程序网关 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 模板。

谢谢你!

【问题讨论】:

  • 感谢 @James Z 更正格式。

标签: azure-powershell azure-application-gateway azure-cloud-shell azure-waf


【解决方案1】:

我通过创建应用网关和 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 命令会显示如下更改:

【讨论】:

  • 您好 AnsumanBal-MT,感谢您的回复。我的问题是在运行“Set-AzApplicationGateway”时您的应用程序网关是否有任何更改,因为这意味着更新 App GW,但在测试中我注意到它修改了缩放设置。我没有在我的沙箱中配置任何侦听器和路由,这是值得关注的(即这些是否被修改过?)。您是否还注意到任何 WAF 策略设置更改,例如自定义规则/托管规则?
猜你喜欢
  • 2023-03-31
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
相关资源
最近更新 更多