Skip to content

Commit 75fc17e

Browse files
committed
Disable network firewall by default in resource creation/removal
1 parent d096083 commit 75fc17e

2 files changed

Lines changed: 33 additions & 35 deletions

File tree

eng/common/TestResources/Remove-TestResources.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ $verifyDeleteScript = {
257257
# Get any resources that can be purged after the resource group is deleted coerced into a collection even if empty.
258258
$purgeableResources = Get-PurgeableGroupResources $ResourceGroupName
259259

260-
SetResourceNetworkAccessRules -ResourceGroupName $ResourceGroupName -AllowIpRanges $AllowIpRanges -Override -CI:$CI
260+
SetResourceNetworkAccessRules -ResourceGroupName $ResourceGroupName -AllowIpRanges $AllowIpRanges -SetFirewall -CI:$CI
261261
Remove-WormStorageAccounts -GroupPrefix $ResourceGroupName -CI:$CI
262262

263263
Log "Deleting resource group '$ResourceGroupName'"

eng/common/scripts/Helpers/Resource-Helpers.ps1

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -308,11 +308,11 @@ function Remove-WormStorageAccounts() {
308308
}
309309
}
310310

311-
function SetResourceNetworkAccessRules([string]$ResourceGroupName, [array]$AllowIpRanges, [switch]$CI, [switch]$Override) {
312-
SetStorageNetworkAccessRules -ResourceGroupName $ResourceGroupName -AllowIpRanges $AllowIpRanges -CI:$CI -Override:$Override
311+
function SetResourceNetworkAccessRules([string]$ResourceGroupName, [array]$AllowIpRanges, [switch]$CI, [switch]$SetFirewall) {
312+
SetStorageNetworkAccessRules -ResourceGroupName $ResourceGroupName -AllowIpRanges $AllowIpRanges -CI:$CI -SetFirewall:$SetFirewall
313313
}
314314

315-
function SetStorageNetworkAccessRules([string]$ResourceGroupName, [array]$AllowIpRanges, [switch]$CI, [switch]$Override) {
315+
function SetStorageNetworkAccessRules([string]$ResourceGroupName, [array]$AllowIpRanges, [switch]$CI, [switch]$SetFirewall) {
316316
$clientIp = $null
317317
$storageAccounts = Retry { Get-AzResource -ResourceGroupName $ResourceGroupName -ResourceType "Microsoft.Storage/storageAccounts" }
318318
# Add client IP to storage account when running as local user. Pipeline's have their own vnet with access
@@ -331,45 +331,43 @@ function SetStorageNetworkAccessRules([string]$ResourceGroupName, [array]$AllowI
331331
# otherwise it's not worth updating due to timing and throttling issues.
332332
# If the network rules are deny only without any vnet/ip allowances, then we can't ever purge the storage account
333333
# when immutable blobs need to be removed.
334-
if ($Override -and $rules.DefaultAction -eq "Deny") {
335-
if ($rules.VirtualNetworkRules.Length -gt 0 -or $rules.IpRules.Length -gt 0) {
336-
return
337-
}
334+
if (!$rules -or !$SetFirewall -or $rules.DefaultAction -eq "Allow") {
335+
return
338336
}
339337

340-
if ($rules -and ($Override -or $rules.DefaultAction -eq "Allow")) {
341-
Write-Host "Restricting network rules in storage account '$($account.Name)' to deny access by default"
342-
Retry { Update-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name -DefaultAction Deny }
343-
if ($CI -and $env:PoolSubnet) {
344-
Write-Host "Enabling access to '$($account.Name)' from pipeline subnet $($env:PoolSubnet)"
345-
Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -VirtualNetworkResourceId $env:PoolSubnet }
346-
$appliedRule = $true
347-
}
348-
elseif ($AllowIpRanges) {
349-
Write-Host "Enabling access to '$($account.Name)' to $($AllowIpRanges.Length) IP ranges"
350-
$ipRanges = $AllowIpRanges | ForEach-Object {
351-
@{ Action = 'allow'; IPAddressOrRange = $_ }
352-
}
353-
Retry { Update-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name -IPRule $ipRanges | Out-Null }
354-
$appliedRule = $true
338+
# Add firewall rules in cases where existing rules added were incomplete to enable blob removal
339+
Write-Host "Restricting network rules in storage account '$($account.Name)' to deny access by default"
340+
Retry { Update-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name -DefaultAction Deny }
341+
if ($CI -and $env:PoolSubnet) {
342+
Write-Host "Enabling access to '$($account.Name)' from pipeline subnet $($env:PoolSubnet)"
343+
Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -VirtualNetworkResourceId $env:PoolSubnet }
344+
$appliedRule = $true
345+
}
346+
elseif ($AllowIpRanges) {
347+
Write-Host "Enabling access to '$($account.Name)' to $($AllowIpRanges.Length) IP ranges"
348+
$ipRanges = $AllowIpRanges | ForEach-Object {
349+
@{ Action = 'allow'; IPAddressOrRange = $_ }
355350
}
356-
elseif (!$CI) {
357-
Write-Host "Enabling access to '$($account.Name)' from client IP"
358-
$clientIp ??= Retry { Invoke-RestMethod -Uri 'https://icanhazip.com/' } # cloudflare owned ip site
359-
$clientIp = $clientIp.Trim()
360-
$ipRanges = Get-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name
361-
if ($ipRanges) {
362-
foreach ($range in $ipRanges.IpRules) {
363-
if (DoesSubnetOverlap $range.IPAddressOrRange $clientIp) {
364-
return
365-
}
351+
Retry { Update-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name -IPRule $ipRanges | Out-Null }
352+
$appliedRule = $true
353+
}
354+
elseif (!$CI) {
355+
Write-Host "Enabling access to '$($account.Name)' from client IP"
356+
$clientIp ??= Retry { Invoke-RestMethod -Uri 'https://icanhazip.com/' } # cloudflare owned ip site
357+
$clientIp = $clientIp.Trim()
358+
$ipRanges = Get-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name
359+
if ($ipRanges) {
360+
foreach ($range in $ipRanges.IpRules) {
361+
if (DoesSubnetOverlap $range.IPAddressOrRange $clientIp) {
362+
return
366363
}
367364
}
368-
Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -IPAddressOrRange $clientIp | Out-Null }
369-
$appliedRule = $true
370365
}
366+
Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -IPAddressOrRange $clientIp | Out-Null }
367+
$appliedRule = $true
371368
}
372369
}
370+
373371
if ($appliedRule) {
374372
Write-Host "Sleeping for 15 seconds to allow network rules to take effect"
375373
Start-Sleep 15

0 commit comments

Comments
 (0)