Skip to content

Commit 1a7a357

Browse files
calvinhzyCopilot
andauthored
[Storage] az storage account file-service-properties update: Add --require-smb-encryption-in-transit and --require-nfs-encryption-in-transit (#32619)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent d630b92 commit 1a7a357

File tree

4 files changed

+467
-5
lines changed

4 files changed

+467
-5
lines changed

src/azure-cli/azure/cli/command_modules/storage/_params.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,6 +762,12 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem
762762
c.argument('channel_encryption', arg_group='SMB Setting',
763763
help="SMB channel encryption supported by server. Valid values are AES-128-CCM, AES-128-GCM, "
764764
"AES-256-GCM. Should be passed as a string with delimiter ';' ")
765+
c.argument('require_smb_encryption_in_transit', arg_group='SMB Setting',
766+
arg_type=get_three_state_flag(), options_list=['--require-smb-encryption-in-transit', '--smb-eit'],
767+
help="Whether SMB Encryption in transit is required.")
768+
c.argument('require_nfs_encryption_in_transit', arg_group='NFS Setting',
769+
arg_type=get_three_state_flag(), options_list=['--require-nfs-encryption-in-transit', '--nfs-eit'],
770+
help="Whether NFS Encryption in transit is required.")
765771

766772
with self.argument_context('storage account generate-sas', resource_type=ResourceType.DATA_STORAGE_BLOB) as c:
767773
t_account_permissions = self.get_sdk('_shared.models#AccountSasPermissions',

src/azure-cli/azure/cli/command_modules/storage/operations/account.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -931,7 +931,8 @@ def update_blob_service_properties(cmd, instance, enable_change_feed=None, chang
931931
def update_file_service_properties(cmd, instance, enable_delete_retention=None,
932932
delete_retention_days=None, enable_smb_multichannel=None,
933933
versions=None, authentication_methods=None, kerberos_ticket_encryption=None,
934-
channel_encryption=None):
934+
channel_encryption=None, require_smb_encryption_in_transit=None,
935+
require_nfs_encryption_in_transit=None):
935936
from azure.cli.core.azclierror import ValidationError
936937
params = {}
937938
# set delete retention policy according input
@@ -958,11 +959,18 @@ def update_file_service_properties(cmd, instance, enable_delete_retention=None,
958959
params['share_delete_retention_policy'] = instance.share_delete_retention_policy
959960

960961
# set protocol settings
961-
if not instance.protocol_settings or not instance.protocol_settings.smb:
962-
instance.protocol_settings = cmd.get_models('ProtocolSettings')(smb=cmd.get_models('SmbSetting')())
962+
smbSetting = cmd.get_models('SmbSetting')
963+
nfsSetting = cmd.get_models('NfsSetting')
964+
if not instance.protocol_settings:
965+
instance.protocol_settings = cmd.get_models('ProtocolSettings')(smb=smbSetting(), nfs=nfsSetting())
966+
else:
967+
if not instance.protocol_settings.smb:
968+
instance.protocol_settings.smb = smbSetting()
969+
if not instance.protocol_settings.nfs:
970+
instance.protocol_settings.nfs = nfsSetting()
971+
963972
if enable_smb_multichannel is not None:
964973
instance.protocol_settings.smb.multichannel = cmd.get_models('Multichannel')(enabled=enable_smb_multichannel)
965-
966974
if versions is not None:
967975
instance.protocol_settings.smb.versions = versions
968976
if authentication_methods is not None:
@@ -971,7 +979,14 @@ def update_file_service_properties(cmd, instance, enable_delete_retention=None,
971979
instance.protocol_settings.smb.kerberos_ticket_encryption = kerberos_ticket_encryption
972980
if channel_encryption is not None:
973981
instance.protocol_settings.smb.channel_encryption = channel_encryption
974-
if instance.protocol_settings and instance.protocol_settings.smb and any(instance.protocol_settings.smb.__dict__.values()):
982+
if require_smb_encryption_in_transit is not None:
983+
instance.protocol_settings.smb.encryption_in_transit = (
984+
cmd.get_models('EncryptionInTransit')(required=require_smb_encryption_in_transit))
985+
if require_nfs_encryption_in_transit is not None:
986+
instance.protocol_settings.nfs.encryption_in_transit = (
987+
cmd.get_models('EncryptionInTransit')(required=require_nfs_encryption_in_transit))
988+
989+
if any(instance.protocol_settings.smb.__dict__.values()) or any(instance.protocol_settings.nfs.__dict__.values()):
975990
params['protocol_settings'] = instance.protocol_settings
976991

977992
return params

0 commit comments

Comments
 (0)