Compartilhamentos de arquivos SMB nos Arquivos do Azure
Artigo
O Azure Files oferece dois protocolos padrão do setor para montar o compartilhamento de arquivos do Azure: o protocolo SMB (Server Message Block) e o protocolo NFS (Network File System). Os Arquivos do Azure permitem que você escolha o protocolo de sistema de arquivos mais adequado para sua carga de trabalho. Os compartilhamentos de arquivos do Azure não oferecem suporte ao acesso a um compartilhamento de arquivos individual do Azure com os protocolos SMB e NFS, embora você possa criar compartilhamentos de arquivos SMB e NFS na mesma conta de armazenamento. Para todos os compartilhamentos de arquivos, o Azure Files oferece compartilhamentos de arquivos de nível empresarial que podem ser dimensionados para atender às suas necessidades de armazenamento e podem ser acessados simultaneamente por milhares de clientes.
Os compartilhamentos de arquivos SMB são usados para uma variedade de aplicativos, incluindo compartilhamentos de arquivos de usuários finais e compartilhamentos de arquivos que apoiam bancos de dados e aplicativos. Os compartilhamentos de arquivos SMB geralmente são usados nos seguintes cenários:
Compartilhamentos de arquivos do usuário final, como compartilhamentos de equipe, diretórios base, etc.
Armazenamento de backup para aplicativos baseados no Windows, como bancos de dados SQL Server ou aplicativos de linha de negócios escritos para APIs de sistema de arquivos locais Win32 ou .NET.
Desenvolvimento de novos aplicativos e serviços, especialmente se esse aplicativo ou serviço tiver um requisito de E/S aleatória e armazenamento hierárquico.
Funcionalidades
O Azure Files suporta os principais recursos do SMB e do Azure necessários para implantações de produção de compartilhamentos de arquivos SMB:
Ingresso no domínio do AD e listas de controle de acesso discricionário (DACLs).
Backup sem servidor integrado com o Backup do Azure.
Isolamento de rede com pontos de extremidade privados do Azure.
Alta taxa de transferência de rede usando SMB Multichannel (somente compartilhamentos de arquivos premium).
Criptografia de canal SMB, incluindo AES-256-GCM, AES-128-GCM e AES-128-CCM.
Suporte a versões anteriores através de snapshots de compartilhamento integrados VSS.
Exclusão suave automática em compartilhamentos de arquivos do Azure para evitar exclusões acidentais.
Opcionalmente, partilhas de ficheiros acessíveis pela Internet com SMB 3.0+ seguro para a Internet.
Todos os dados armazenados nos Arquivos do Azure são criptografados em repouso usando a criptografia do serviço de armazenamento do Azure (SSE). A criptografia do serviço de armazenamento funciona de forma semelhante ao BitLocker no Windows: os dados são criptografados abaixo do nível do sistema de arquivos. Como os dados são criptografados sob o sistema de arquivos do compartilhamento de arquivos do Azure, como são codificados em disco, você não precisa ter acesso à chave subjacente no cliente para ler ou gravar no compartilhamento de arquivos do Azure. A criptografia em repouso aplica-se aos protocolos SMB e NFS.
Por padrão, todas as contas de armazenamento do Azure têm a criptografia em trânsito habilitada. Isso significa que, quando você monta um compartilhamento de arquivos por SMB (ou acessa-o por meio do protocolo FileREST), os Arquivos do Azure só permitirão a conexão se ela for feita com SMB 3.x com criptografia ou HTTPS. Os clientes que não oferecem suporte ao SMB 3.x com criptografia de canal SMB não poderão montar o compartilhamento de arquivos do Azure se a criptografia em trânsito estiver habilitada.
O Azure Files dá suporte a AES-256-GCM com SMB 3.1.1 quando usado com o Windows Server 2022 ou Windows 11. SMB 3.1.1 também suporta AES-128-GCM e SMB 3.0 suporta AES-128-CCM. AES-128-GCM é negociado por padrão no Windows 10, versão 21H1 por motivos de desempenho.
Você pode desabilitar a criptografia em trânsito para uma conta de armazenamento do Azure. Quando a criptografia estiver desabilitada, os Arquivos do Azure também permitirão SMB 2.1 e SMB 3.x sem criptografia. A principal razão para desabilitar a criptografia em trânsito é oferecer suporte a um aplicativo herdado que deve ser executado em um sistema operacional mais antigo, como o Windows Server 2008 R2 ou uma distribuição Linux mais antiga. Os Arquivos do Azure só permitem conexões SMB 2.1 dentro da mesma região do Azure que o compartilhamento de arquivos do Azure; um cliente SMB 2.1 fora da região do Azure do compartilhamento de arquivos do Azure, como no local ou em uma região diferente do Azure, não poderá acessar o compartilhamento de arquivos.
Configurações do protocolo SMB
Os Arquivos do Azure oferecem várias configurações que afetam o comportamento, o desempenho e a segurança do protocolo SMB. Eles são configurados para todos os compartilhamentos de arquivos do Azure em uma conta de armazenamento.
SMB Multicanal
O SMB Multicanal permite que um cliente SMB 3.x estabeleça várias ligações de rede a uma partilha de ficheiros SMB. O Azure Files dá suporte a SMB Multichannel em compartilhamentos de arquivos premium (compartilhamentos de arquivos no tipo de conta de armazenamento FileStorage). Não há custo adicional para habilitar o SMB Multichannel nos Arquivos do Azure. SMB Multichannel está desativado por padrão.
Para visualizar o status do SMB Multichannel, navegue até a conta de armazenamento que contém seus compartilhamentos de arquivos premium e selecione Compartilhamentos de arquivos no título Armazenamento de dados no sumário da conta de armazenamento. O status do SMB Multichannel pode ser visto na seção Configurações de compartilhamento de arquivos.
Para ativar ou desativar o SMB Multichannel, selecione o estado atual (Ativado ou Desativado, dependendo do estado). A caixa de diálogo resultante fornece uma alternância para habilitar ou desabilitar o SMB Multichannel. Selecione o estado desejado e selecione Salvar.
Para obter o status de SMB Multichannel, use o Get-AzStorageFileServiceProperty cmdlet. Lembre-se de substituir <resource-group> e <storage-account> com os valores apropriados para seu ambiente antes de executar esses comandos do PowerShell.
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"
# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $resourceGroupName `
-StorageAccountName $storageAccountName
# If you've never enabled or disabled SMB Multichannel, the value for the SMB Multichannel
# property returned by Azure Files will be null. Null returned values should be interpreted
# as "default settings are in effect". To make this more user-friendly, the following
# PowerShell commands replace null values with the human-readable default values.
$defaultSmbMultichannelEnabled = $false
# Get the current value for SMB Multichannel
Get-AzStorageFileServiceProperty -StorageAccount $storageAccount | `
Select-Object -Property `
ResourceGroupName, `
StorageAccountName, `
@{
Name = "SmbMultichannelEnabled";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.Multichannel.Enabled) {
$defaultSmbMultichannelEnabled
} else {
$_.ProtocolSettings.Smb.Multichannel.Enabled
}
}
}
Para habilitar/desabilitar o SMB Multichannel, use o Update-AzStorageFileServiceProperty cmdlet.
Para obter o status de SMB Multichannel, use o az storage account file-service-properties show comando. Lembre-se de substituir <resource-group> e <storage-account> com os valores apropriados para o seu ambiente antes de executar esses comandos Bash.
RESOURCE_GROUP_NAME="<resource-group>"
STORAGE_ACCOUNT_NAME="<storage-account>"
# If you've never enabled or disabled SMB Multichannel, the value for the SMB Multichannel
# property returned by Azure Files will be null. Null returned values should be interpreted
# as "default settings are in effect". To make this more user-friendly, the following
# PowerShell commands replace null values with the human-readable default values.
## Search strings
REPLACESMBMULTICHANNEL="\"smbMultichannelEnabled\": null"
# Replacement values for null parameters.
DEFAULTSMBMULTICHANNELENABLED="\"smbMultichannelEnabled\": false"
# Build JMESPath query string
QUERY="{"
QUERY="${QUERY}smbMultichannelEnabled: protocolSettings.smb.multichannel.enabled"
QUERY="${QUERY}}"
# Get protocol settings from the Azure Files FileService object
protocolSettings=$(az storage account file-service-properties show \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--query "${QUERY}")
# Replace returned values if null with default values
PROTOCOL_SETTINGS="${protocolSettings/$REPLACESMBMULTICHANNEL/$DEFAULTSMBMULTICHANNELENABLED}"
# Print returned settings
echo $PROTOCOL_SETTINGS
Para ativar/desativar o SMB Multichannel, use o az storage account file-service-properties update comando.
Os Arquivos do Azure expõem configurações que permitem alternar o protocolo SMB para ser mais compatível ou mais seguro, dependendo dos requisitos da sua organização. Por padrão, os Arquivos do Azure são configurados para serem compatíveis ao máximo, portanto, lembre-se de que restringir essas configurações pode fazer com que alguns clientes não consigam se conectar.
Arquivos do Azure expõe as seguintes configurações:
Versões SMB: Quais versões do SMB são permitidas. As versões de protocolo suportadas são SMB 3.1.1, SMB 3.0 e SMB 2.1. Por padrão, todas as versões do SMB são permitidas, embora o SMB 2.1 não seja permitido se "exigir transferência segura" estiver habilitado, porque o SMB 2.1 não suporta criptografia em trânsito.
Métodos de autenticação: quais métodos de autenticação SMB são permitidos. Os métodos de autenticação suportados são NTLMv2 (somente chave de conta de armazenamento) e Kerberos. Por padrão, todos os métodos de autenticação são permitidos. A remoção do NTLMv2 não permite o uso da chave da conta de armazenamento para montar o compartilhamento de arquivos do Azure. Os Arquivos do Azure não oferecem suporte ao uso da autenticação NTLM para credenciais de domínio.
Criptografia de tíquete Kerberos: quais algoritmos de criptografia são permitidos. Os algoritmos de encriptação suportados são AES-256 (recomendado) e RC4-HMAC.
Criptografia de canal SMB: quais algoritmos de criptografia de canal SMB são permitidos. Os algoritmos de encriptação suportados são AES-256-GCM, AES-128-GCM e AES-128-CCM. Se você selecionar apenas AES-256-GCM, precisará dizer aos clientes conectados para usá-lo abrindo um terminal do PowerShell como administrador em cada cliente e executando Set-SmbClientConfiguration -EncryptionCiphers "AES_256_GCM" -Confirm:$falseo . O uso do AES-256-GCM não é suportado em clientes Windows anteriores ao Windows 11/Windows Server 2022.
Você pode exibir e alterar as configurações de segurança do SMB usando o portal do Azure, o PowerShell ou a CLI. Selecione a guia desejada para ver as etapas sobre como obter e definir as configurações de segurança SMB.
Para exibir ou alterar as configurações de segurança do SMB usando o portal do Azure, siga estas etapas:
Procure contas de armazenamento e selecione a conta de armazenamento para a qual pretende ver as definições de segurança.
Selecione Armazenamento de>dados Compartilhamentos de arquivos.
Em Configurações de compartilhamento de arquivos, selecione o valor associado à Segurança. Se você não tiver modificado as configurações de segurança, esse valor será Compatibilidade máxima.
Em Perfil, selecione Compatibilidade máxima, Segurança máxima ou Personalizado. Selecionar Personalizado permite criar um perfil personalizado para versões do protocolo SMB, criptografia de canal SMB, mecanismos de autenticação e criptografia de tíquete Kerberos.
Depois de inserir as configurações de segurança desejadas, selecione Salvar.
Para obter as configurações do protocolo SMB, use o Get-AzStorageFileServiceProperty cmdlet. Lembre-se de substituir <resource-group> e <storage-account> com os valores apropriados para o seu ambiente. Se você definiu deliberadamente qualquer uma das configurações de segurança SMB como nula, por exemplo, desativando a criptografia de canal SMB, consulte as instruções no script sobre como comentar determinadas linhas.
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"
# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $resourceGroupName `
-StorageAccountName $storageAccountName
# If you've never changed any SMB security settings, the values for the SMB security
# settings returned by Azure Files will be null. Null returned values should be interpreted
# as "default settings are in effect". To make this more user-friendly, the following
# PowerShell commands replace null values with the human-readable default values.
# If you've deliberately set any of your SMB security settings to null, for example by
# disabling SMB channel encryption, comment out the following four lines to avoid
# changing the security settings back to defaults.
$smbProtocolVersions = "SMB2.1", "SMB3.0", "SMB3.1.1"
$smbAuthenticationMethods = "NTLMv2", "Kerberos"
$smbKerberosTicketEncryption = "RC4-HMAC", "AES-256"
$smbChannelEncryption = "AES-128-CCM", "AES-128-GCM", "AES-256-GCM"
# Gets the current values of the SMB security settings
Get-AzStorageFileServiceProperty -StorageAccount $storageAccount | `
Select-Object -Property `
ResourceGroupName, `
StorageAccountName, `
@{
Name = "SmbProtocolVersions";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.Versions) {
[String]::Join(", ", $smbProtocolVersions)
} else {
[String]::Join(", ", $_.ProtocolSettings.Smb.Versions)
}
}
},
@{
Name = "SmbChannelEncryption";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.ChannelEncryption) {
[String]::Join(", ", $smbChannelEncryption)
} else {
[String]::Join(", ", $_.ProtocolSettings.Smb.ChannelEncryption)
}
}
},
@{
Name = "SmbAuthenticationMethods";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.AuthenticationMethods) {
[String]::Join(", ", $smbAuthenticationMethods)
} else {
[String]::Join(", ", $_.ProtocolSettings.Smb.AuthenticationMethods)
}
}
},
@{
Name = "SmbKerberosTicketEncryption";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.KerberosTicketEncryption) {
[String]::Join(", ", $smbKerberosTicketEncryption)
} else {
[String]::Join(", ", $_.ProtocolSettings.Smb.KerberosTicketEncryption)
}
}
}
Dependendo dos requisitos de segurança, desempenho e compatibilidade da sua organização, convém modificar as configurações do protocolo SMB. O comando PowerShell a seguir restringe seus compartilhamentos de arquivos SMB apenas às opções mais seguras.
Importante
Restringir os compartilhamentos de arquivos do Azure SMB apenas às opções mais seguras pode resultar em alguns clientes não conseguirem se conectar. Por exemplo, o AES-256-GCM foi introduzido como uma opção para criptografia de canal SMB a partir do Windows Server 2022 e do Windows 11. Isso significa que os clientes mais antigos que não suportam AES-256-GCM não poderão se conectar. Se você selecionar apenas AES-256-GCM, precisará dizer aos clientes Windows Server 2022 e Windows 11 para usar apenas AES-256-GCM abrindo um terminal do PowerShell como administrador em cada cliente e executando Set-SmbClientConfiguration -EncryptionCiphers "AES_256_GCM" -Confirm:$falseo .
Para obter o status das configurações de segurança SMB, use o az storage account file-service-properties show comando. Lembre-se de substituir <resource-group> e <storage-account> com os valores apropriados para o seu ambiente antes de executar esses comandos Bash. Se você definiu deliberadamente qualquer uma das configurações de segurança SMB como nula, por exemplo, desativando a criptografia de canal SMB, consulte as instruções no script sobre como comentar determinadas linhas.
RESOURCE_GROUP_NAME="<resource-group>"
STORAGE_ACCOUNT_NAME="<storage-account>"
# If you've never changed any SMB security settings, the values for the SMB security
# settings returned by Azure Files will be null. Null returned values should be interpreted
# as "default settings are in effect". To make this more user-friendly, the commands in the
# following two sections replace null values with the human-readable default values.
# If you've deliberately set any of your SMB security settings to null, for example by
# disabling SMB channel encryption, comment out the following two sections before
# running the script to avoid changing the security settings back to defaults.
# Values to be replaced
REPLACESMBPROTOCOLVERSION="\"smbProtocolVersions\": null"
REPLACESMBCHANNELENCRYPTION="\"smbChannelEncryption\": null"
REPLACESMBAUTHENTICATIONMETHODS="\"smbAuthenticationMethods\": null"
REPLACESMBKERBEROSTICKETENCRYPTION="\"smbKerberosTicketEncryption\": null"
# Replacement values for null parameters. If you copy this into your own
# scripts, you will need to ensure that you keep these variables up-to-date with any new
# options we may add to these parameters in the future.
DEFAULTSMBPROTOCOLVERSIONS="\"smbProtocolVersions\": \"SMB2.1;SMB3.0;SMB3.1.1\""
DEFAULTSMBCHANNELENCRYPTION="\"smbChannelEncryption\": \"AES-128-CCM;AES-128-GCM;AES-256-GCM\""
DEFAULTSMBAUTHENTICATIONMETHODS="\"smbAuthenticationMethods\": \"NTLMv2;Kerberos\""
DEFAULTSMBKERBEROSTICKETENCRYPTION="\"smbKerberosTicketEncryption\": \"RC4-HMAC;AES-256\""
# Build JMESPath query string
QUERY="{"
QUERY="${QUERY}smbProtocolVersions: protocolSettings.smb.versions,"
QUERY="${QUERY}smbChannelEncryption: protocolSettings.smb.channelEncryption,"
QUERY="${QUERY}smbAuthenticationMethods: protocolSettings.smb.authenticationMethods,"
QUERY="${QUERY}smbKerberosTicketEncryption: protocolSettings.smb.kerberosTicketEncryption"
QUERY="${QUERY}}"
# Get protocol settings from the Azure Files FileService object
PROTOCOLSETTINGS=$(az storage account file-service-properties show \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--query "${QUERY}")
# Replace returned values if null with default values
PROTOCOLSETTINGS="${protocolSettings/$REPLACESMBPROTOCOLVERSION/$DEFAULTSMBPROTOCOLVERSIONS}"
PROTOCOLSETTINGS="${protocolSettings/$REPLACESMBCHANNELENCRYPTION/$DEFAULTSMBCHANNELENCRYPTION}"
PROTOCOLSETTINGS="${protocolSettings/$REPLACESMBAUTHENTICATIONMETHODS/$DEFAULTSMBAUTHENTICATIONMETHODS}"
PROTOCOLSETTINGS="${protocolSettings/$REPLACESMBKERBEROSTICKETENCRYPTION/$DEFAULTSMBKERBEROSTICKETENCRYPTION}"
# Print returned settings
echo $PROTOCOLSETTINGS
Dependendo dos requisitos de segurança, desempenho e compatibilidade da sua organização, convém modificar as configurações do protocolo SMB. O comando da CLI do Azure a seguir restringe seus compartilhamentos de arquivos SMB apenas às opções mais seguras.
Importante
Restringir os compartilhamentos de arquivos do Azure SMB apenas às opções mais seguras pode resultar em alguns clientes não conseguirem se conectar. Por exemplo, o AES-256-GCM foi introduzido como uma opção para criptografia de canal SMB a partir do Windows Server 2022 e do Windows 11. Isso significa que os clientes mais antigos que não suportam AES-256-GCM não poderão se conectar. Se você selecionar apenas AES-256-GCM, precisará dizer aos clientes Windows Server 2022 e Windows 11 para usar apenas AES-256-GCM abrindo um terminal do PowerShell como administrador em cada cliente e executando Set-SmbClientConfiguration -EncryptionCiphers "AES_256_GCM" -Confirm:$falseo .
Os compartilhamentos de arquivos SMB nos Arquivos do Azure dão suporte a um subconjunto de recursos suportados pelo protocolo SMB e pelo sistema de arquivos NTFS. Embora a maioria dos casos de uso e aplicativos não exijam esses recursos, alguns aplicativos podem não funcionar corretamente com os Arquivos do Azure se dependerem de recursos sem suporte. As seguintes caraterísticas não são suportadas:
VSS para compartilhamentos de arquivos SMB (isso permite que os provedores VSS liberem seus dados para o compartilhamento de arquivos SMB antes que um instantâneo seja tirado)
Os compartilhamentos de arquivos do Azure SMB estão disponíveis em todas as regiões do Azure, incluindo todas as regiões públicas e soberanas. Os compartilhamentos de arquivos SMB Premium estão disponíveis em um subconjunto de regiões.