我将托管的Azure数据库服务器的“允许Azure服务和资源访问此服务器”设置为“开”。
每天晚上11:00,我们运行一个脚本来删除所有在工作日访问数据库的开发人员制定的防火墙规则。 (基本上,这是我们对数据库访问的JIT防火墙访问的实现。)我注意到,“允许Azure服务和资源访问该服务器”选项始终在此脚本运行后切换为“关闭”。
以下是我们的Runbook中相关的代码行:
Get-AzSqlServerFirewallRule -ServerName r******ql -ResourceGroupName r*****rg | Where {$_.FirewallRuleName -notlike "Locked_*"} | Remove-AzSqlServerFirewallRule
我想,尽管未明确显示,但允许Azure服务的选项会创建一个防火墙规则,该规则正被我的脚本删除。我需要知道此防火墙规则名称的模式,以便可以将其从删除语句中排除。
答案 0 :(得分:2)
您可以将允许Azure服务和资源访问该服务器的选项更改为Yes
,然后运行Get-AzSqlServerFirewallRule -ServerName r******ql -ResourceGroupName r*****rg
,您会看到 FirewallRuleName 是AllowAllWindowsAzureIps
PS C:\Users\myuser> Get-AzSqlServerFirewallRule -ServerName xxx-Server -ResourceGroupName xxx-Resources
ResourceGroupName : xxx-Resources
ServerName : xxx-Server
StartIpAddress : 0.0.0.0
EndIpAddress : 0.0.0.0
FirewallRuleName : AllowAllWindowsAzureIps
您想要的是这样
Get-AzSqlServerFirewallRule -ServerName r******ql -ResourceGroupName r*****rg | Where {$_.FirewallRuleName -notlike "Locked_*" -and $_.FirewallRuleName -notlike "AllowAllWindowsAzureIps" } | Remove-AzSqlServerFirewallRule