Skip to content

Commit e1491ea

Browse files
authored
Merge pull request #9465 from wastoresh/fileaadga
[Storage] Support File AAD Domain Service Authentication GA
2 parents ef98443 + beaaf55 commit e1491ea

File tree

15 files changed

+1289
-13
lines changed

15 files changed

+1289
-13
lines changed

src/EventGrid/EventGrid.Test/EventGrid.Test.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<PackageReference Include="Microsoft.Azure.Management.EventHub" Version="2.5.0" />
1616
<PackageReference Include="Microsoft.Azure.Management.Relay" Version="2.0.2" />
1717
<PackageReference Include="Microsoft.Azure.Management.ServiceBus" Version="2.1.0" />
18-
<PackageReference Include="Microsoft.Azure.Management.Storage" Version="11.0.0" />
18+
<PackageReference Include="Microsoft.Azure.Management.Storage" Version="12.0.0" />
1919
</ItemGroup>
2020

2121
</Project>

src/EventGrid/EventGrid.sln

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ScenarioTest.ResourceManage
2121
EndProject
2222
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestFx", "..\..\tools\TestFx\TestFx.csproj", "{BC80A1D0-FFA4-43D9-AA74-799F5CB54B58}"
2323
EndProject
24+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Relay", "..\Relay\Relay\Relay.csproj", "{10C8273F-7C1B-455C-B358-420DD2EA8FF8}"
25+
EndProject
26+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceBus", "..\ServiceBus\ServiceBus\ServiceBus.csproj", "{70B4325F-044A-44CE-AAC3-78CD5A8347DF}"
27+
EndProject
2428
Global
2529
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2630
Debug|Any CPU = Debug|Any CPU
@@ -59,6 +63,14 @@ Global
5963
{BC80A1D0-FFA4-43D9-AA74-799F5CB54B58}.Debug|Any CPU.Build.0 = Debug|Any CPU
6064
{BC80A1D0-FFA4-43D9-AA74-799F5CB54B58}.Release|Any CPU.ActiveCfg = Release|Any CPU
6165
{BC80A1D0-FFA4-43D9-AA74-799F5CB54B58}.Release|Any CPU.Build.0 = Release|Any CPU
66+
{10C8273F-7C1B-455C-B358-420DD2EA8FF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
67+
{10C8273F-7C1B-455C-B358-420DD2EA8FF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
68+
{10C8273F-7C1B-455C-B358-420DD2EA8FF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
69+
{10C8273F-7C1B-455C-B358-420DD2EA8FF8}.Release|Any CPU.Build.0 = Release|Any CPU
70+
{70B4325F-044A-44CE-AAC3-78CD5A8347DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
71+
{70B4325F-044A-44CE-AAC3-78CD5A8347DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
72+
{70B4325F-044A-44CE-AAC3-78CD5A8347DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
73+
{70B4325F-044A-44CE-AAC3-78CD5A8347DF}.Release|Any CPU.Build.0 = Release|Any CPU
6274
EndGlobalSection
6375
GlobalSection(SolutionProperties) = preSolution
6476
HideSolutionNode = FALSE

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,14 @@ public void TestNewAzureStorageAccountBlockBlobStorage()
141141
{
142142
TestRunner.RunTestScript("Test-NewAzureStorageAccountBlockBlobStorage");
143143
}
144-
144+
145+
[Fact]
146+
[Trait(Category.AcceptanceType, Category.CheckIn)]
147+
public void TestNewSetAzStorageAccountFileAADDS()
148+
{
149+
TestRunner.RunTestScript("Test-NewSetAzStorageAccountFileAADDS");
150+
}
151+
145152
[Fact]
146153
[Trait(Category.AcceptanceType, Category.CheckIn)]
147154
public void TestStorageAccountManagementPolicy()

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

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,67 @@ function Test-NewAzureStorageAccountBlockBlobStorage
783783
}
784784
}
785785

786+
787+
788+
<#
789+
.SYNOPSIS
790+
Test NewSet-AzStorageAccountFileAADDS
791+
.DESCRIPTION
792+
Smoke[Broken]Test
793+
#>
794+
function Test-NewSetAzStorageAccountFileAADDS
795+
{
796+
# Setup
797+
$rgname = Get-StorageManagementTestResourceName;
798+
799+
try
800+
{
801+
# Test
802+
$stoname = 'sto' + $rgname;
803+
$stotype = 'Standard_LRS';
804+
$kind = 'StorageV2'
805+
806+
$loc = Get-ProviderLocation ResourceManagement;
807+
New-AzureRmResourceGroup -Name $rgname -Location $loc;
808+
$loc = Get-ProviderLocation_Stage ResourceManagement;
809+
810+
$sto = New-AzStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $loc -Type $stotype -Kind $kind -EnableAzureActiveDirectoryDomainServicesForFile $true;
811+
Assert-AreEqual $stoname $sto.StorageAccountName;
812+
Assert-AreEqual $stotype $sto.Sku.Name;
813+
Assert-AreEqual $loc.ToLower().Replace(" ", "") $sto.Location;
814+
Assert-AreEqual $kind $sto.Kind;
815+
Assert-AreEqual 'AADDS' $sto.AzureFilesIdentityBasedAuth.DirectoryServiceOptions;
816+
817+
$sto = Get-AzStorageAccount -ResourceGroupName $rgname -Name $stoname;
818+
Assert-AreEqual $stoname $sto.StorageAccountName;
819+
Assert-AreEqual $stotype $sto.Sku.Name;
820+
Assert-AreEqual $loc.ToLower().Replace(" ", "") $sto.Location;
821+
Assert-AreEqual $kind $sto.Kind;
822+
Assert-AreEqual 'AADDS' $sto.AzureFilesIdentityBasedAuth.DirectoryServiceOptions;
823+
824+
$sto = Set-AzStorageAccount -ResourceGroupName $rgname -Name $stoname -EnableAzureActiveDirectoryDomainServicesForFile $false
825+
Assert-AreEqual $stoname $sto.StorageAccountName;
826+
Assert-AreEqual $stotype $sto.Sku.Name;
827+
Assert-AreEqual $loc.ToLower().Replace(" ", "") $sto.Location;
828+
Assert-AreEqual $kind $sto.Kind;
829+
Assert-AreEqual 'None' $sto.AzureFilesIdentityBasedAuth.DirectoryServiceOptions;
830+
831+
$sto = Get-AzStorageAccount -ResourceGroupName $rgname -Name $stoname;
832+
Assert-AreEqual $stoname $sto.StorageAccountName;
833+
Assert-AreEqual $stotype $sto.Sku.Name;
834+
Assert-AreEqual $loc.ToLower().Replace(" ", "") $sto.Location;
835+
Assert-AreEqual $kind $sto.Kind;
836+
Assert-AreEqual 'None' $sto.AzureFilesIdentityBasedAuth.DirectoryServiceOptions;
837+
838+
Retry-IfException { Remove-AzureRmStorageAccount -Force -ResourceGroupName $rgname -Name $stoname; }
839+
}
840+
finally
841+
{
842+
# Cleanup
843+
Clean-ResourceGroup $rgname
844+
}
845+
}
846+
786847
<#
787848
.SYNOPSIS
788849
Test Set/Get/Remove-AzureStorageAccountManagementPolicy

src/Storage/Storage.Management.Test/SessionRecords/Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests.StorageAccountTests/TestNewSetAzStorageAccountFileAADDS.json

Lines changed: 1059 additions & 0 deletions
Large diffs are not rendered by default.

src/Storage/Storage.Management.Test/Storage.Management.Test.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</PropertyGroup>
1212

1313
<ItemGroup>
14-
<PackageReference Include="Microsoft.Azure.Management.Storage" Version="11.0.0" />
14+
<PackageReference Include="Microsoft.Azure.Management.Storage" Version="12.0.0" />
1515
</ItemGroup>
1616

1717
</Project>

src/Storage/Storage.Management/Blob/GetAzureStorageContainer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public override void ExecuteCmdlet()
9191
var container = this.StorageClient.BlobContainers.List(
9292
this.ResourceGroupName,
9393
this.StorageAccountName);
94-
WriteContainerList(container.Value);
94+
WriteContainerList(container);
9595
}
9696
}
9797
}

src/Storage/Storage.Management/ChangeLog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
- Enable-AzStorageStaticWebsite
2323
* Update help of Get-AzStorageBlobContent by add an example
2424
* Show more error information when cmdlet failed with StorageException
25+
* Support create or update Storage account with Azure Files AAD DS Authentication
26+
- New-AzStorageAccount
27+
- Set-AzStorageAccount
2528
* Support list or close file handles of a file share, file directory or a file
2629
- Get-AzStorageFileHandle
2730
- Close-AzStorageFileHandle
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// ----------------------------------------------------------------------------------
2+
//
3+
// Copyright Microsoft Corporation
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
// ----------------------------------------------------------------------------------
14+
15+
using Microsoft.Azure.Management.Storage.Models;
16+
17+
namespace Microsoft.Azure.Commands.Management.Storage.Models
18+
{
19+
public class PSAzureFilesIdentityBasedAuthentication
20+
{
21+
public PSAzureFilesIdentityBasedAuthentication(AzureFilesIdentityBasedAuthentication auth)
22+
{
23+
this.DirectoryServiceOptions = auth != null ? auth.DirectoryServiceOptions : null;
24+
}
25+
// Gets or sets indicates the directory service used. Possible values include: 'None','AADDS'
26+
public string DirectoryServiceOptions { get; set; }
27+
}
28+
}

src/Storage/Storage.Management/Models/PSStorageAccount.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public PSStorageAccount(StorageModels.StorageAccount storageAccount)
5252
this.EnableHttpsTrafficOnly = storageAccount.EnableHttpsTrafficOnly;
5353
this.NetworkRuleSet = PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkRuleSet);
5454
this.EnableHierarchicalNamespace = storageAccount.IsHnsEnabled;
55+
this.AzureFilesIdentityBasedAuth = storageAccount.AzureFilesIdentityBasedAuthentication is null ? null : new PSAzureFilesIdentityBasedAuthentication(storageAccount.AzureFilesIdentityBasedAuthentication);
5556
}
5657

5758
[Ps1Xml(Label = "ResourceGroupName", Target = ViewControl.Table, Position = 1)]
@@ -103,7 +104,9 @@ public PSStorageAccount(StorageModels.StorageAccount storageAccount)
103104

104105
[Ps1Xml(Label = "EnableHttpsTrafficOnly", Target = ViewControl.Table, Position = 8)]
105106
public bool? EnableHttpsTrafficOnly { get; set; }
106-
107+
108+
public PSAzureFilesIdentityBasedAuthentication AzureFilesIdentityBasedAuth { get; set; }
109+
107110
public bool? EnableHierarchicalNamespace { get; set; }
108111

109112
public PSNetworkRuleSet NetworkRuleSet { get; set; }

src/Storage/Storage.Management/Storage.Management.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<RootNamespace>$(LegacyAssemblyPrefix)$(PsModuleName)</RootNamespace>
1515
</PropertyGroup>
1616
<ItemGroup>
17-
<PackageReference Include="Microsoft.Azure.Management.Storage" Version="11.0.0" />
17+
<PackageReference Include="Microsoft.Azure.Management.Storage" Version="12.0.0" />
1818
<PackageReference Include="Microsoft.Azure.Storage.Blob" Version="10.0.3" />
1919
<PackageReference Include="Microsoft.Azure.Storage.File" Version="10.0.3" />
2020
<PackageReference Include="Microsoft.Azure.Storage.Queue" Version="10.0.3" />

src/Storage/Storage.Management/StorageAccount/NewAzureStorageAccount.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,23 @@ public bool EnableHierarchicalNamespace
164164
}
165165
private bool? enableHierarchicalNamespace = null;
166166

167+
[Parameter(
168+
Mandatory = false,
169+
HelpMessage = "Enable Azure Files Azure Active Directory Domain Service Authentication for the storage account.")]
170+
[ValidateNotNullOrEmpty]
171+
public bool EnableAzureActiveDirectoryDomainServicesForFile
172+
{
173+
get
174+
{
175+
return enableAzureActiveDirectoryDomainServicesForFile.Value;
176+
}
177+
set
178+
{
179+
enableAzureActiveDirectoryDomainServicesForFile = value;
180+
}
181+
}
182+
private bool? enableAzureActiveDirectoryDomainServicesForFile = null;
183+
167184
[Parameter(Mandatory = false, HelpMessage = "Run cmdlet in the background")]
168185
public SwitchParameter AsJob { get; set; }
169186

@@ -223,6 +240,18 @@ public override void ExecuteCmdlet()
223240
{
224241
createParameters.IsHnsEnabled = enableHierarchicalNamespace;
225242
}
243+
if (enableAzureActiveDirectoryDomainServicesForFile !=null)
244+
{
245+
createParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
246+
if (enableAzureActiveDirectoryDomainServicesForFile.Value)
247+
{
248+
createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.AADDS;
249+
}
250+
else
251+
{
252+
createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.None;
253+
}
254+
}
226255

227256
var createAccountResponse = this.StorageClient.StorageAccounts.Create(
228257
this.ResourceGroupName,

src/Storage/Storage.Management/StorageAccount/SetAzureStorageAccount.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,23 @@ public PSNetworkRuleSet NetworkRuleSet
183183
HelpMessage = "Upgrade Storage Account Kind to StorageV2.")]
184184
public SwitchParameter UpgradeToStorageV2 { get; set; }
185185

186+
[Parameter(
187+
Mandatory = false,
188+
HelpMessage = "Enable Azure Files Azure Active Directory Domain Service Authentication for the storage account.")]
189+
[ValidateNotNullOrEmpty]
190+
public bool EnableAzureActiveDirectoryDomainServicesForFile
191+
{
192+
get
193+
{
194+
return enableAzureActiveDirectoryDomainServicesForFile.Value;
195+
}
196+
set
197+
{
198+
enableAzureActiveDirectoryDomainServicesForFile = value;
199+
}
200+
}
201+
private bool? enableAzureActiveDirectoryDomainServicesForFile = null;
202+
186203
[Parameter(Mandatory = false, HelpMessage = "Run cmdlet in the background")]
187204
public SwitchParameter AsJob { get; set; }
188205

@@ -250,6 +267,18 @@ public override void ExecuteCmdlet()
250267
{
251268
updateParameters.Kind = Kind.StorageV2;
252269
}
270+
if (enableAzureActiveDirectoryDomainServicesForFile != null)
271+
{
272+
updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
273+
if (enableAzureActiveDirectoryDomainServicesForFile.Value)
274+
{
275+
updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.AADDS;
276+
}
277+
else
278+
{
279+
updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.None;
280+
}
281+
}
253282

254283
var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
255284
this.ResourceGroupName,

src/Storage/Storage.Management/help/New-AzStorageAccount.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ Creates a Storage account.
1717
New-AzStorageAccount [-ResourceGroupName] <String> [-Name] <String> [-SkuName] <String> [-Location] <String>
1818
[-Kind <String>] [-AccessTier <String>] [-CustomDomainName <String>] [-UseSubDomain <Boolean>]
1919
[-Tag <Hashtable>] [-EnableHttpsTrafficOnly <Boolean>] [-AssignIdentity] [-NetworkRuleSet <PSNetworkRuleSet>]
20-
[-EnableHierarchicalNamespace <Boolean>] [-AsJob] [-DefaultProfile <IAzureContextContainer>]
21-
[<CommonParameters>]
20+
[-EnableHierarchicalNamespace <Boolean>] [-EnableAzureActiveDirectoryDomainServicesForFile <Boolean>] [-AsJob]
21+
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
2222
```
2323

2424
## DESCRIPTION
@@ -66,6 +66,13 @@ PS C:\>New-AzStorageAccount -ResourceGroupName "MyResourceGroup" -AccountName "m
6666

6767
This command creates a Storage account with Hierarchical Namespace enabled.
6868

69+
### Example 6: Create a Storage account with Azure Files AAD DS Authentication.
70+
```
71+
PS C:\>New-AzStorageAccount -ResourceGroupName "MyResourceGroup" -AccountName "mystorageaccount" -Location "eastus2euap" -SkuName "Standard_LRS" -Kind StorageV2 -EnableAzureActiveDirectoryDomainServicesForFile $true
72+
```
73+
74+
This command creates a Storage account with Azure Files AAD DS Authentication.
75+
6976
## PARAMETERS
7077

7178
### -AccessTier
@@ -149,6 +156,21 @@ Accept pipeline input: False
149156
Accept wildcard characters: False
150157
```
151158
159+
### -EnableAzureActiveDirectoryDomainServicesForFile
160+
Enable Azure Files Azure Active Directory Domain Service Authentication for the storage account.
161+
162+
```yaml
163+
Type: System.Boolean
164+
Parameter Sets: (All)
165+
Aliases:
166+
167+
Required: False
168+
Position: Named
169+
Default value: None
170+
Accept pipeline input: False
171+
Accept wildcard characters: False
172+
```
173+
152174
### -EnableHierarchicalNamespace
153175
Indicates whether or not the Storage account enables Hierarchical Namespace.
154176

0 commit comments

Comments
 (0)