Я хочу изменить (включить / отключить) параметры «Разрешить доступ к службам Azure» Azure SQL Server с помощью powershell, основываясь на значении из моей конфигурации JSON
Я сослался на пару StackOverflow, все ответы должны создать правило брандмауэра «0.0.0.0» для включения и «255.255.255.255» для отключения.
Исходя из ответов, у меня есть логика ниже. Это работает иногда и не работает иногда. Тем не менее, я ищу лучшее решение. Есть ли у нас один командлет PowerShell, который выполняет эту работу?
## Allow/Disallow Access to Microsoft services
# Get the firewall rules list
$full_sql_server_fwrules = Get-AzureRmSqlServerFirewallRule -ResourceGroupName $full_sql_server_list_iterator.ResourceGroupName -ServerName $full_sql_server_list_iterator.ServerName
if(($services | where {$_.name -eq $full_sql_server_list_iterator.ServerName}).allowazureservices){
Write-Output "allowazureservices = True. Enabling Access to Azure services"
# Flag variable to check if the 'Allow access to Azure Services' is ENABLED.
# cmdlet throws an error - If we try to enable 'Allow access to Azure Services', when it is already enabled.
$access_to_MS_services_flag = $false
foreach($full_sql_server_fwrules_iterator in $full_sql_server_fwrules){
if($full_sql_server_fwrules_iterator.StartIpAddress -ne "0.0.0.0" -and $full_sql_server_fwrules_iterator.EndIpAddress -ne "0.0.0.0"){
$access_to_MS_services_flag = $true
}
}
if(!$access_to_MS_services_flag) {
Write-Output "Enabling.. 'Allow access to Azure Services'..."
New-AzureRmSqlServerFirewallRule -ServerName $full_sql_server_list_iterator.ServerName -ResourceGroupName $full_sql_server_list_iterator.ResourceGroupName -AllowAllAzureIPs
}
}elseif(!($services | where {$_.name -eq $full_sql_server_list_iterator.ServerName}).allowazureservices){
Write-Output "allowazureservices = False. Disabling Access to Azure services"
# IF 'Allow access to Azure Services' is ENABLED. SQL Server will have a firewall with StartIP and EndIP as 0.0.0.0
foreach($full_sql_server_fwrules_iterator in $full_sql_server_fwrules){
if($full_sql_server_fwrules_iterator.StartIpAddress -ne "0.0.0.0" -and $full_sql_server_fwrules_iterator.EndIpAddress -ne "0.0.0.0"){
Remove-AzureRmSqlServerFirewallRule -FirewallRuleName $full_sql_server_fwrules_iterator.FirewallRuleName -ServerName $full_sql_server_fwrules_iterator.ServerName -ResourceGroupName $full_sql_server_fwrules_iterator.ResourceGroupName
}
}
}