Skip to content

Commit e7d213f

Browse files
committed
Support NetworkACL
1 parent b87bc4e commit e7d213f

28 files changed

+10518
-11
lines changed

src/ResourceManager/Storage/AzureRM.Storage.psd1

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,11 @@ CmdletsToExport = 'Get-AzureRmStorageAccount', 'Get-AzureRmStorageAccountKey',
7878
'Remove-AzureRmStorageAccount', 'Set-AzureRmCurrentStorageAccount',
7979
'Set-AzureRmStorageAccount',
8080
'Get-AzureRmStorageAccountNameAvailability',
81-
'Get-AzureRmStorageUsage'
81+
'Get-AzureRmStorageUsage',
82+
'Update-AzureRmStorageAccountNetworkACL',
83+
'Get-AzureRmStorageAccountNetworkACL',
84+
'Add-AzureRmStorageAccountNetworkACLRule',
85+
'Remove-AzureRmStorageAccountNetworkACLRule'
8286

8387
# Variables to export from this module
8488
# VariablesToExport = @()

src/ResourceManager/Storage/Commands.Management.Storage.Test/Commands.Management.Storage.Test.csproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Authorization.2.0.0\lib\net40\Microsoft.Azure.Management.Authorization.dll</HintPath>
5353
</Reference>
5454
<Reference Include="Microsoft.Azure.Management.Storage, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
55-
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Storage.6.4.0-preview\lib\net452\Microsoft.Azure.Management.Storage.dll</HintPath>
55+
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Storage.6.5.0-preview\lib\net452\Microsoft.Azure.Management.Storage.dll</HintPath>
5656
</Reference>
5757
<Reference Include="Microsoft.Azure.ResourceManager, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
5858
<SpecificVersion>False</SpecificVersion>
@@ -170,6 +170,9 @@
170170
<None Include="SessionRecords\Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests.StorageAccountTests\TestGetAzureStorageAccountKey.json">
171171
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
172172
</None>
173+
<None Include="SessionRecords\Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests.StorageAccountTests\TestNetworkAcl.json" >
174+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
175+
</None>
173176
<None Include="SessionRecords\Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests.StorageAccountTests\TestNewAzureStorageAccount.json">
174177
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
175178
</None>

src/ResourceManager/Storage/Commands.Management.Storage.Test/ScenarioTests/Common.ps1

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,4 +147,13 @@ Gets the default location for a provider
147147
function Get-ProviderLocation($provider)
148148
{
149149
"westus"
150+
}
151+
152+
<#
153+
.SYNOPSIS
154+
Gets the Canary location for a provider
155+
#>
156+
function Get-ProviderLocation_Canary($provider)
157+
{
158+
"eastus2euap"
150159
}

src/ResourceManager/Storage/Commands.Management.Storage.Test/ScenarioTests/StorageAccountTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,5 +105,12 @@ public void TestSetAzureRmStorageAccountKeySource()
105105
TestController.NewInstance.RunPsTest("Test-SetAzureRmStorageAccountKeySource");
106106
}
107107

108+
[Fact]
109+
[Trait(Category.AcceptanceType, Category.CheckIn)]
110+
public void TestNetworkAcl()
111+
{
112+
TestController.NewInstance.RunPsTest("Test-NetworkAcl");
113+
}
114+
108115
}
109116
}

src/ResourceManager/Storage/Commands.Management.Storage.Test/ScenarioTests/StorageAccountTests.ps1

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ function Test-GetAzureStorageAccount
159159
$kind = 'Storage'
160160

161161
New-AzureRmResourceGroup -Name $rgname -Location $loc;
162+
Write-Output ("Resource Group created")
162163

163164
New-AzureRmStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $loc -Type $stotype ;
164165

@@ -501,3 +502,95 @@ function Test-SetAzureRmCurrentStorageAccount
501502
Clean-ResourceGroup $rgname
502503
}
503504
}
505+
506+
507+
<#
508+
.SYNOPSIS
509+
Test NetworkAcl
510+
#>
511+
function Test-NetworkAcl
512+
{
513+
# Setup
514+
$rgname = Get-StorageManagementTestResourceName;
515+
516+
try
517+
{
518+
# Test
519+
$stoname = 'sto' + $rgname;
520+
$stotype = 'Standard_LRS';
521+
$loc = Get-ProviderLocation_Canary ResourceManagement;
522+
$ip1 = "20.11.0.0/16";
523+
$ip2 = "10.0.0.0/7";
524+
$ip3 = "11.1.1.0/24";
525+
$ip4 = "28.0.2.0/19";
526+
527+
New-AzureRmResourceGroup -Name $rgname -Location $loc;
528+
529+
New-AzureRmStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $loc -Type $stotype -NetworkAcl (@{bypass="Logging,Metrics,AzureServices";
530+
ipRules=(@{IPAddressOrRange="$ip1";Action="allow"},
531+
@{IPAddressOrRange="$ip2";Action="allow"});
532+
defaultAction="Deny"})
533+
534+
$stoacl = (Get-AzureRmStorageAccount -ResourceGroupName $rgname -Name $stoname).NetworkAcls
535+
Assert-AreEqual $stoacl.Bypass 7;
536+
Assert-AreEqual $stoacl.DefaultAction Deny;
537+
Assert-AreEqual $stoacl.IpRules.Count 2
538+
Assert-AreEqual $stoacl.IpRules[0].IPAddressOrRange $ip1;
539+
Assert-AreEqual $stoacl.IpRules[1].IPAddressOrRange $ip2;
540+
Assert-AreEqual $stoacl.VirtualNetworkRules $null
541+
542+
Update-AzureRmStorageAccountNetworkACL -verbose -ResourceGroupName $rgname -Name $stoname -Bypass AzureServices,Metrics -DefaultAction Allow -IpRule (@{IPAddressOrRange="$ip3";Action="allow"},@{IPAddressOrRange="$ip4";Action="allow"})
543+
$stoacl = Get-AzureRmStorageAccountNetworkACL -ResourceGroupName $rgname -Name $stoname
544+
$stoacliprule = $stoacl.IpRules
545+
Assert-AreEqual $stoacl.Bypass 6;
546+
Assert-AreEqual $stoacl.DefaultAction Allow;
547+
Assert-AreEqual $stoacl.IpRules.Count 2
548+
Assert-AreEqual $stoacl.IpRules[0].IPAddressOrRange $ip3;
549+
Assert-AreEqual $stoacl.IpRules[1].IPAddressOrRange $ip4;
550+
Assert-AreEqual $stoacl.VirtualNetworkRules $null
551+
552+
Remove-AzureRmStorageAccountNetworkACLRule -ResourceGroupName $rgname -Name $stoname -IPAddressOrRange "$ip3"
553+
$stoacl = Get-AzureRmStorageAccountNetworkACL -ResourceGroupName $rgname -Name $stoname
554+
Assert-AreEqual $stoacl.Bypass 6;
555+
Assert-AreEqual $stoacl.DefaultAction Allow;
556+
Assert-AreEqual $stoacl.IpRules.Count 1
557+
Assert-AreEqual $stoacl.IpRules[0].IPAddressOrRange $ip4;
558+
Assert-AreEqual $stoacl.VirtualNetworkRules $null
559+
560+
Update-AzureRmStorageAccountNetworkACL -ResourceGroupName $rgname -Name $stoname -IpRule @() -DefaultAction Deny -Bypass None
561+
$stoacl = Get-AzureRmStorageAccountNetworkACL -ResourceGroupName $rgname -Name $stoname
562+
Assert-AreEqual $stoacl.Bypass 0;
563+
Assert-AreEqual $stoacl.DefaultAction Deny;
564+
Assert-AreEqual $stoacl.IpRules $null
565+
Assert-AreEqual $stoacl.VirtualNetworkRules $null
566+
567+
$stoacliprule | Add-AzureRmStorageAccountNetworkACLRule -ResourceGroupName $rgname -Name $stoname
568+
$stoacl = Get-AzureRmStorageAccountNetworkACL -ResourceGroupName $rgname -Name $stoname
569+
Assert-AreEqual $stoacl.Bypass 0;
570+
Assert-AreEqual $stoacl.DefaultAction Deny;
571+
Assert-AreEqual $stoacl.IpRules.Count 2
572+
Assert-AreEqual $stoacl.IpRules[0].IPAddressOrRange $ip3;
573+
Assert-AreEqual $stoacl.IpRules[1].IPAddressOrRange $ip4;
574+
Assert-AreEqual $stoacl.VirtualNetworkRules $null
575+
576+
Set-AzureRmStorageAccount -ResourceGroupName $rgname -Name $stoname -NetworkAcl (@{bypass="AzureServices";
577+
ipRules=(@{IPAddressOrRange="$ip1";Action="allow"},
578+
@{IPAddressOrRange="$ip2";Action="allow"});
579+
defaultAction="Allow"})
580+
581+
$stoacl = Get-AzureRmStorageAccountNetworkACL -ResourceGroupName $rgname -Name $stoname
582+
Assert-AreEqual $stoacl.Bypass 4;
583+
Assert-AreEqual $stoacl.DefaultAction Allow;
584+
Assert-AreEqual $stoacl.IpRules.Count 2
585+
Assert-AreEqual $stoacl.IpRules[0].IPAddressOrRange $ip1;
586+
Assert-AreEqual $stoacl.IpRules[1].IPAddressOrRange $ip2;
587+
Assert-AreEqual $stoacl.VirtualNetworkRules $null
588+
589+
Remove-AzureRmStorageAccount -Force -ResourceGroupName $rgname -Name $stoname;
590+
}
591+
finally
592+
{
593+
# Cleanup
594+
Clean-ResourceGroup $rgname
595+
}
596+
}

0 commit comments

Comments
 (0)