-
Notifications
You must be signed in to change notification settings - Fork 4.2k
[Storage] Support encryption in transit #29083
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
01d3bd2
10e4211
335924c
97ef45a
391e51f
f36e3bd
0eb5221
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -162,6 +162,40 @@ public bool EnableSmbMultichannel | |
| IgnoreCase = true)] | ||
| public string[] SmbKerberosTicketEncryption { get; set; } | ||
|
|
||
| [Parameter( | ||
| Mandatory = false, | ||
| HelpMessage = "Enable Multichannel by set to $true, disable Multichannel by set to $false. Applies to Premium FileStorage only.")] | ||
| [ValidateNotNullOrEmpty] | ||
| public bool SmbEncryptionInTransitRequired | ||
| { | ||
| get | ||
| { | ||
| return smbEncryptionInTransitRequired is null ? false : smbEncryptionInTransitRequired.Value; | ||
| } | ||
| set | ||
| { | ||
| smbEncryptionInTransitRequired = value; | ||
| } | ||
| } | ||
| private bool? smbEncryptionInTransitRequired = null; | ||
|
|
||
| [Parameter( | ||
| Mandatory = false, | ||
| HelpMessage = "Enable Multichannel by set to $true, disable Multichannel by set to $false. Applies to Premium FileStorage only.")] | ||
|
vidai-msft marked this conversation as resolved.
|
||
| [ValidateNotNullOrEmpty] | ||
| public bool NfsEncryptionInTransitRequired | ||
|
Comment on lines
+182
to
+186
|
||
| { | ||
| get | ||
| { | ||
| return nfsEncryptionInTransitRequired is null ? false : nfsEncryptionInTransitRequired.Value; | ||
| } | ||
| set | ||
| { | ||
| nfsEncryptionInTransitRequired = value; | ||
| } | ||
| } | ||
| private bool? nfsEncryptionInTransitRequired = null; | ||
|
|
||
| [Parameter(Mandatory = false, | ||
| HelpMessage = "Specifies CORS rules for the File service.")] | ||
| [ValidateNotNull] | ||
|
|
@@ -221,11 +255,12 @@ public override void ExecuteCmdlet() | |
| fileServiceProperties.ShareDeleteRetentionPolicy = deleteRetentionPolicy; | ||
|
|
||
| ProtocolSettings protocolSettings = null; | ||
| if(this.SmbProtocolVersion != null || | ||
| if (this.SmbProtocolVersion != null || | ||
| this.SmbAuthenticationMethod != null || | ||
| this.SmbKerberosTicketEncryption != null || | ||
| this.SmbChannelEncryption != null || | ||
| this.enableSmbMultichannel != null) | ||
| this.enableSmbMultichannel != null || | ||
|
vidai-msft marked this conversation as resolved.
|
||
| this.smbEncryptionInTransitRequired != null) | ||
| { | ||
| protocolSettings = new ProtocolSettings(); | ||
| protocolSettings.Smb = new SmbSetting(); | ||
|
|
@@ -250,7 +285,22 @@ public override void ExecuteCmdlet() | |
| protocolSettings.Smb.Multichannel = new Multichannel(); | ||
| protocolSettings.Smb.Multichannel.Enabled = this.enableSmbMultichannel; | ||
| } | ||
| if (this.smbEncryptionInTransitRequired != null) | ||
| { | ||
| protocolSettings.Smb.EncryptionInTransit = new EncryptionInTransit(this.smbEncryptionInTransitRequired); | ||
| } | ||
| } | ||
|
|
||
| if (nfsEncryptionInTransitRequired != null) | ||
| { | ||
| if (protocolSettings == null) | ||
| { | ||
| protocolSettings = new ProtocolSettings(); | ||
| } | ||
| protocolSettings.Nfs = new NfsSetting(); | ||
| protocolSettings.Nfs.EncryptionInTransit = new EncryptionInTransit(this.nfsEncryptionInTransitRequired); | ||
| } | ||
|
|
||
| fileServiceProperties.ProtocolSettings = protocolSettings; | ||
|
|
||
| if (this.CorsRule != null) | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -447,6 +447,14 @@ | |||||
| <Label>ProtocolSettings.Smb.ChannelEncryption</Label> | ||||||
| <ScriptBlock>$_.ProtocolSettings.Smb.ChannelEncryption</ScriptBlock> | ||||||
| </ListItem> | ||||||
| <ListItem> | ||||||
| <Label>ProtocolSettings.Smb.EncryptionInTransit.Required</Label> | ||||||
| <ScriptBlock>$_.ProtocolSettings.Smb.EncryptionInTransit.Required</ScriptBlock> | ||||||
| </ListItem> | ||||||
| <ListItem> | ||||||
| <Label>ProtocolSettings.Nfs.EncryptionInTransit.Required</Label> | ||||||
| <ScriptBlock>$_.ProtocolSettings.Nfs.EncryptionInTransit.Required</ScriptBlock> | ||||||
| </ListItem> | ||||||
|
||||||
| </ListItem> | |
| </ListItem> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -15,19 +15,19 @@ Gets service properties for Azure Storage File services. | |
| ### AccountName (Default) | ||
| ``` | ||
| Get-AzStorageFileServiceProperty [-ResourceGroupName] <String> [-StorageAccountName] <String> | ||
| [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] | ||
| [-DefaultProfile <IAzureContextContainer>] [-ProgressAction <ActionPreference>] [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### AccountObject | ||
| ``` | ||
| Get-AzStorageFileServiceProperty -StorageAccount <PSStorageAccount> [-DefaultProfile <IAzureContextContainer>] | ||
| [<CommonParameters>] | ||
| [-ProgressAction <ActionPreference>] [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### FileServicePropertiesResourceId | ||
| ``` | ||
| Get-AzStorageFileServiceProperty [-ResourceId] <String> [-DefaultProfile <IAzureContextContainer>] | ||
| [<CommonParameters>] | ||
| [-ProgressAction <ActionPreference>] [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ## DESCRIPTION | ||
|
|
@@ -41,15 +41,17 @@ Get-AzStorageFileServiceProperty -ResourceGroupName "myresourcegroup" -AccountNa | |
| ``` | ||
|
|
||
| ```output | ||
| StorageAccountName : mystorageaccount | ||
| ResourceGroupName : myresourcegroup | ||
| ShareDeleteRetentionPolicy.Enabled : True | ||
| ShareDeleteRetentionPolicy.Days : 3 | ||
| ProtocolSettings.Smb.Multichannel.Enabled : False | ||
| ProtocolSettings.Smb.Versions : {SMB2.1, SMB3.0, SMB3.1.1} | ||
| ProtocolSettings.Smb.AuthenticationMethods : {Kerberos, NTLMv2} | ||
| ProtocolSettings.Smb.KerberosTicketEncryption : {RC4-HMAC, AES-256} | ||
| ProtocolSettings.Smb.ChannelEncryption : {AES-128-CCM, AES-128-GCM, AES-256-GCM} | ||
| StorageAccountName : mystorageaccount | ||
| ResourceGroupName : myresourcegroup | ||
| ShareDeleteRetentionPolicy.Enabled : True | ||
| ShareDeleteRetentionPolicy.Days : 3 | ||
| ProtocolSettings.Smb.Multichannel.Enabled : False | ||
| ProtocolSettings.Smb.Versions : {SMB2.1, SMB3.0, SMB3.1.1} | ||
| ProtocolSettings.Smb.AuthenticationMethods : {Kerberos, NTLMv2} | ||
| ProtocolSettings.Smb.KerberosTicketEncryption : {RC4-HMAC, AES-256} | ||
| ProtocolSettings.Smb.ChannelEncryption : {AES-128-CCM, AES-128-GCM, AES-256-GCM} | ||
| ProtocolSettings.Smb.EncryptionInTransit.Required : True | ||
| ProtocolSettings.Nfs.EncryptionInTransit.Required : | ||
| ``` | ||
|
|
||
| This command gets the File services property of a specified Storage Account. | ||
|
|
@@ -71,6 +73,21 @@ Accept pipeline input: False | |
| Accept wildcard characters: False | ||
| ``` | ||
|
|
||
| ### -ProgressAction | ||
| {{ Fill ProgressAction Description }} | ||
|
Comment on lines
+76
to
+77
|
||
|
|
||
| ```yaml | ||
| Type: System.Management.Automation.ActionPreference | ||
| Parameter Sets: (All) | ||
| Aliases: proga | ||
|
|
||
| Required: False | ||
| Position: Named | ||
| Default value: None | ||
| Accept pipeline input: False | ||
| Accept wildcard characters: False | ||
| ``` | ||
|
|
||
| ### -ResourceGroupName | ||
| Resource Group Name. | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -17,8 +17,9 @@ Modifies the service properties for the Azure Storage File service. | |||||
| Update-AzStorageFileServiceProperty [-ResourceGroupName] <String> [-StorageAccountName] <String> | ||||||
| [-EnableShareDeleteRetentionPolicy <Boolean>] [-ShareRetentionDays <Int32>] [-EnableSmbMultichannel <Boolean>] | ||||||
| [-SmbProtocolVersion <String[]>] [-SmbAuthenticationMethod <String[]>] [-SmbChannelEncryption <String[]>] | ||||||
| [-SmbKerberosTicketEncryption <String[]>] [-CorsRule <PSCorsRule[]>] | ||||||
| [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] | ||||||
| [-SmbKerberosTicketEncryption <String[]>] [-SmbEncryptionInTransitRequired <Boolean>] | ||||||
| [-NfsEncryptionInTransitRequired <Boolean>] [-CorsRule <PSCorsRule[]>] | ||||||
| [-DefaultProfile <IAzureContextContainer>] [-ProgressAction <ActionPreference>] [-WhatIf] [-Confirm] | ||||||
| [<CommonParameters>] | ||||||
| ``` | ||||||
|
|
||||||
|
|
@@ -27,8 +28,9 @@ Update-AzStorageFileServiceProperty [-ResourceGroupName] <String> [-StorageAccou | |||||
| Update-AzStorageFileServiceProperty -StorageAccount <PSStorageAccount> | ||||||
| [-EnableShareDeleteRetentionPolicy <Boolean>] [-ShareRetentionDays <Int32>] [-EnableSmbMultichannel <Boolean>] | ||||||
| [-SmbProtocolVersion <String[]>] [-SmbAuthenticationMethod <String[]>] [-SmbChannelEncryption <String[]>] | ||||||
| [-SmbKerberosTicketEncryption <String[]>] [-CorsRule <PSCorsRule[]>] | ||||||
| [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] | ||||||
| [-SmbKerberosTicketEncryption <String[]>] [-SmbEncryptionInTransitRequired <Boolean>] | ||||||
| [-NfsEncryptionInTransitRequired <Boolean>] [-CorsRule <PSCorsRule[]>] | ||||||
| [-DefaultProfile <IAzureContextContainer>] [-ProgressAction <ActionPreference>] [-WhatIf] [-Confirm] | ||||||
| [<CommonParameters>] | ||||||
| ``` | ||||||
|
|
||||||
|
|
@@ -37,8 +39,9 @@ Update-AzStorageFileServiceProperty -StorageAccount <PSStorageAccount> | |||||
| Update-AzStorageFileServiceProperty [-ResourceId] <String> [-EnableShareDeleteRetentionPolicy <Boolean>] | ||||||
| [-ShareRetentionDays <Int32>] [-EnableSmbMultichannel <Boolean>] [-SmbProtocolVersion <String[]>] | ||||||
| [-SmbAuthenticationMethod <String[]>] [-SmbChannelEncryption <String[]>] | ||||||
| [-SmbKerberosTicketEncryption <String[]>] [-CorsRule <PSCorsRule[]>] | ||||||
| [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] | ||||||
| [-SmbKerberosTicketEncryption <String[]>] [-SmbEncryptionInTransitRequired <Boolean>] | ||||||
| [-NfsEncryptionInTransitRequired <Boolean>] [-CorsRule <PSCorsRule[]>] | ||||||
| [-DefaultProfile <IAzureContextContainer>] [-ProgressAction <ActionPreference>] [-WhatIf] [-Confirm] | ||||||
| [<CommonParameters>] | ||||||
| ``` | ||||||
|
|
||||||
|
|
@@ -171,7 +174,22 @@ The second command sets the rules in $CorsRules to the File service of a Storage | |||||
| Update-AzStorageFileServiceProperty -ResourceGroupName myresourcegroup -StorageAccountName mystorageaccount -CorsRule @() | ||||||
| ``` | ||||||
|
|
||||||
| This command cleans up the CORS rules of a Storage account by inputting @() to parameter CorsRule. | ||||||
| This command cleans up the CORS rules of a Storage account by inputting @() to parameter CorsRule | ||||||
|
|
||||||
| ### Example 7: Enable SMB encryption in transit | ||||||
| ```powershell | ||||||
| Update-AzStorageFileServiceProperty -ResourceGroupName myresourcegroup -StorageAccountName mystorageaccount -SmbEncryptionInTransitRequired $true | ||||||
| ``` | ||||||
|
|
||||||
| This command enabled SMB encryption in transit for the specified storage account. | ||||||
|
|
||||||
| ### Example 8: Enable NFS encryption in transit | ||||||
| ```powershell | ||||||
| Update-AzStorageFileServiceProperty -ResourceGroupName myresourcegroup -StorageAccountName mystorageaccount -NfsEncryptionInTransitRequired $true | ||||||
| ``` | ||||||
|
|
||||||
| This command enabled NFS encryption in transit for the specified storage account. | ||||||
|
|
||||||
|
|
||||||
| ## PARAMETERS | ||||||
|
|
||||||
|
|
@@ -235,6 +253,36 @@ Accept pipeline input: False | |||||
| Accept wildcard characters: False | ||||||
| ``` | ||||||
|
|
||||||
| ### -NfsEncryptionInTransitRequired | ||||||
| Enable Multichannel by set to $true, disable Multichannel by set to $false. Applies to Premium FileStorage only. | ||||||
|
||||||
| Enable Multichannel by set to $true, disable Multichannel by set to $false. Applies to Premium FileStorage only. | |
| Require NFS encryption in transit by setting to $true, or allow NFS connections without enforced encryption in transit by setting to $false. Applies to Premium FileStorage only. |
Copilot
AI
Jan 26, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The -ProgressAction parameter help still contains the platyPS placeholder {{ Fill ProgressAction Description }}, which is not a usable description for users. Please replace this placeholder with a concise explanation of what -ProgressAction does and how it affects cmdlet execution, in line with the reference help guidelines.
Copilot
AI
Jan 26, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The description for -SmbEncryptionInTransitRequired is also a copy of the Multichannel text and does not mention SMB encryption in transit, which makes the parameter behavior unclear. Please revise this description so it clearly states that this flag enables or disables SMB encryption in transit (and keep the wording aligned with the cmdlet HelpMessage and NFS counterpart).
| Enable Multichannel by set to $true, disable Multichannel by set to $false. Applies to Premium FileStorage only. | |
| Enable SMB encryption in transit when set to $true, disable SMB encryption in transit when set to $false. Applies to Premium FileStorage only. |
Uh oh!
There was an error while loading. Please reload this page.