你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 文件网络注意事项

您可以通过公共互联网可访问的终结点、您网络上的一个或多个专用终结点,或者通过 Azure 文件同步在本地缓存 Azure 文件共享(仅限 SMB 文件共享)的方式来访问 Azure 文件共享。 本文重点介绍如何配置 Azure 文件存储,以便通过公共和/或专用终结点直接访问。 若要了解如何使用 Azure 文件同步在本地缓存 Azure 文件共享,请参阅 Azure 文件同步简介

在阅读本指南之前,建议先阅读 Azure 文件部署的规划

直接访问 Azure 文件共享通常需要对网络进行额外的思考:

  • SMB 文件共享通过端口 445 进行通信,许多组织和 Internet 服务提供商(ISP)会阻止出站(Internet)流量。 这种做法源自有关 SMB 协议已弃用和非 Internet 安全版本的旧版安全指南。 虽然 SMB 3.x 是 Internet 安全协议,但组织或 ISP 策略可能无法更改。 因此,装载 SMB 文件共享通常需要在 Azure 外部使用其他网络配置。

  • NFS 文件共享依赖于网络级身份验证,因此只能通过受限网络进行访问。 使用 NFS 文件共享始终需要完成某种级别的网络配置。

为 Azure 文件配置公共终结点和专用终结点是在 Azure 文件存储(Azure 存储帐户)的顶级管理对象上完成的。 存储帐户是一种管理构造,表示在其中可以部署多个 Azure 文件共享的共享存储池,以及其他 Azure 存储服务的存储资源,例如 Blob 容器或队列。

此视频是有关如何通过五个简单步骤将 Azure 文件共享直接安全地公开给信息工作者和应用的指南和演示。 以下部分提供了指向视频中引用的文档的链接和其他上下文。 请注意,Azure Active Directory 现已更名为 Microsoft Entra ID。 有关详细信息,请参阅 Azure AD 的新名称

适用于

文件共享类型 SMB NFS
标准文件共享 (GPv2)、LRS/ZRS 是的 否
标准文件共享 (GPv2)、GRS/GZRS 是的 否
高级文件共享 (FileStorage)、LRS/ZRS 是的 是的

安全传输

默认情况下,无论是通过公共终结点还是专用终结点访问数据,Azure 存储帐户都需要安全传输。 对于 Azure 文件存储,对 Azure 文件共享上存储的数据(包括 SMB、NFS 和 FileREST)的所有协议访问强制实施 安全传输所需的 设置。 可以禁用 安全传输所需的 设置,以允许未加密的流量。

对于 安全传输所需的 设置,SMB、NFS 和 FileREST 协议的行为略有不同:

  • 在存储帐户上启用 安全传输时 ,该存储帐户中的所有 SMB 文件共享都需要使用 AES-128-CCM、AES-128-GCM 或 AES-256-GCM 加密算法的 SMB 3.x 协议,具体取决于 SMB 客户端和 Azure 文件之间的可用/必需的加密协商。 可以通过 SMB 安全设置切换允许哪些 SMB 加密算法。 禁用 安全传输所需的 设置可启用 SMB 2.1 和 SMB 3.x 装载,而无需加密。

  • NFS Azure 文件共享使用 AZNFS 实用工具包在客户端上安装和设置 Stunnel(开源 TLS 包装器)来简化加密装载。 请参阅 传输中 NFS Azure 文件共享的加密

  • 需要安全传输时,FileREST 协议只能与 HTTPS 一起使用。

注释

客户端与 Azure 存储帐户之间的通信使用传输层安全性(TLS)进行加密。 Azure 文件存储依赖于 Windows 中的 SSL 实现,该实现不是基于 OpenSSL,因此不受 OpenSSL 相关漏洞的影响。 想要在同一存储帐户上的 TLS 和非 TLS 连接之间保持灵活性的用户应禁用 所需的安全传输

公共终结点

存储帐户中 Azure 文件共享的公共终结点是 Internet 公开的终结点。 公共终结点是存储帐户的默认终结点,但是,如果需要,可以禁用它。

SMB、NFS 和 FileREST 协议都可以使用公共终结点。 不过,每个都有略微不同的访问规则。

  • SMB 文件共享可通过具有加密的 SMB 3.x 的存储帐户的公共终结点从世界上任何地方访问。 这意味着经过身份验证的请求(如用户登录标识授权的请求)可以从 Azure 区域内部或外部安全地发起。 如果需要 SMB 2.1 或不带加密的 SMB 3.x,则必须满足两个条件:

    1. 必须禁用存储帐户的 传输所需的 安全设置。
    2. 请求必须源自 Azure 区域内部。 如前所述,允许从 Azure 区域内部或外部的任何位置访问加密的 SMB 请求。
  • 仅当存储帐户的公共终结点限制为使用 服务终结点的特定虚拟网络时,才能从存储帐户的公共终结点访问 NFS 文件共享。 有关服务终结点的其他信息,请参阅公共终结点防火墙设置

  • FileREST 可通过公共终结点访问。 如果需要安全传输,则仅接受 HTTPS 请求。 如果禁用安全传输,则无论源如何,公共终结点都接受 HTTP 请求。

公共终结点防火墙设置

存储帐户防火墙限制对存储帐户的公共终结点的访问。 使用存储帐户防火墙,可以限制对特定 IP 地址/IP 地址范围、特定虚拟网络的访问,或完全禁用公共终结点。

将公共终结点的流量限制为一个或多个虚拟网络时,将使用名为 服务终结点的虚拟网络的功能。 定向到 Azure 文件存储的服务终结点的请求仍会转到存储帐户公共 IP 地址;但是,网络层正在对请求进行额外的验证,以验证它是否来自授权的虚拟网络。 SMB、NFS 和 FileREST 协议都支持服务终结点。 但是,与 SMB 和 FileREST 不同,只能通过 使用服务终结点通过公共终结点访问 NFS 文件共享。

若要详细了解如何配置存储帐户防火墙,请参阅 配置 Azure 存储防火墙和虚拟网络

公共终结点网络路由

Azure 文件支持多个网络路由选项。 默认选项“Microsoft 路由”适用于所有 Azure 文件存储配置。 Internet 路由选项不支持 AD 域加入方案或 Azure 文件同步。

专用终结点

除了存储帐户的默认公共终结点之外,Azure 文件还提供一个或多个专用终结点的选项。 专用终结点是只能在 Azure 虚拟网络中访问的终结点。 为存储帐户创建专用终结点时,存储帐户从虚拟网络的地址空间内获取专用 IP 地址,这与本地文件服务器或 NAS 设备在本地网络的专用地址空间内接收 IP 地址的方式类似。

单个专用终结点与特定的 Azure 虚拟网络子网相关联。 存储帐户可能具有多个虚拟网络中的专用终结点。

使用专用终结点与 Azure 文件存储可以实现以下功能:

  • 结合专用对等互连使用 VPN 或 ExpressRoute 连接,从本地网络安全连接到 Azure 文件共享。
  • 通过将存储帐户防火墙配置为阻止公共终结点上的所有连接,来保护 Azure 文件共享。 默认情况下,创建专用终结点不会阻止与公共终结点的连接。
  • 阻止数据从虚拟网络(和对等互连边界)渗出,从而提高虚拟网络的安全性。

若要创建专用终结点,请参阅 为 Azure 文件配置专用终结点

通过虚拟专用网络或 ExpressRoute 以隧道方式传输流量

若要使用专用终结点从本地访问 SMB 或 NFS 文件共享,必须在本地网络和 Azure 之间建立网络隧道。 虚拟网络或 VNet 类似于传统的本地网络。 与 Azure 存储帐户或 Azure VM 一样,VNet 是部署在资源组中的 Azure 资源。

Azure 文件存储支持通过以下机制在本地工作站和服务器与 Azure SMB/NFS 文件共享之间以隧道方式传输流量:

  • Azure VPN 网关:VPN 网关是一种特定类型的虚拟网关,用于通过 Internet 在 Azure 虚拟网络和备用位置(例如,本地)之间发送加密流量。 Azure VPN 网关是一种 Azure 资源,可与存储帐户或其他 Azure 资源一起部署在资源组中。 VPN 网关公开两种不同类型的连接:
  • ExpressRoute,用于在 Azure 与本地网络之间创建未遍历 Internet 的已定义路由。 由于 ExpressRoute 在本地数据中心和 Azure 之间提供了专用路径,因此当考虑网络性能时,ExpressRoute 非常有用。 组织的策略或法规要求使用确定的路径访问云中的资源时,ExpressRoute 也是一个不错的选择。

注释

尽管我们建议使用专用终结点来帮助将本地网络扩展到 Azure,但从技术上来说,可以通过 VPN 连接路由到公共终结点。 但是,这需要对提供存储帐户的 Azure 存储群集的公共终结点的 IP 地址进行硬编码。 由于存储帐户可能随时在存储群集之间移动,并且新群集经常被添加和删除,因此这需要定期将所有可能的 Azure 存储 IP 地址编码到路由规则中。

DNS 配置

创建专用终结点时,我们默认还会创建与子域对应的 privatelink (或更新现有)专用 DNS 区域。 严格地说,创建专用 DNS 区域不需要为存储帐户使用专用终结点。 但是,一般情况下,我们强烈建议创建专用 DNS 区域,而在使用 Active Directory 用户主体装载 Azure 文件共享或者从 FileREST API 访问文件共享时,则明确要求创建专用 DNS 区域。

注释

本文将使用 Azure 公共区域的存储帐户 DNS 后缀 core.windows.net。 此段注释也适用于 Azure 主权云(例如 Azure 美国政府云和由世纪互联运营的 Microsoft Azure 云)- 只需根据环境替换相应的后缀即可。

在专用 DNS 区域中,我们将为存储帐户的常规名称创建 A 记录 storageaccount.privatelink.file.core.windows.net 和 CNAME 记录,该记录遵循模式 storageaccount.file.core.windows.net。 由于 Azure 专用 DNS 区域已连接到包含专用终结点的虚拟网络,因此可以通过从 Azure VM 中的 PowerShell 调用 Resolve-DnsName cmdlet 来观察 DNS 配置(也可 nslookup 在 Windows 和 Linux 中):

Resolve-DnsName -Name "storageaccount.file.core.windows.net"

在本示例中,存储帐户 storageaccount.file.core.windows.net 解析为专用终结点的专用 IP 地址(正好是 192.168.0.4)。

Name                              Type   TTL   Section    NameHost
----                              ----   ---   -------    --------
storageaccount.file.core.windows. CNAME  29    Answer     csostoracct.privatelink.file.core.windows.net
net

Name       : storageaccount.privatelink.file.core.windows.net
QueryType  : A
TTL        : 1769
Section    : Answer
IP4Address : 192.168.0.4


Name                   : privatelink.file.core.windows.net
QueryType              : SOA
TTL                    : 269
Section                : Authority
NameAdministrator      : azureprivatedns-host.microsoft.com
SerialNumber           : 1
TimeToZoneRefresh      : 3600
TimeToZoneFailureRetry : 300
TimeToExpiration       : 2419200
DefaultTTL             : 300

如果从本地运行相同的命令,将看到相同的存储帐户名称解析为存储帐户的公共 IP 地址。 例如,storageaccount.file.core.windows.netstorageaccount.privatelink.file.core.windows.net 的 CNAME 记录,而 storageaccount.privatelink.file.core.windows.net 则是托管存储帐户的 Azure 存储群集的 CNAME 记录。

Name                              Type   TTL   Section    NameHost
----                              ----   ---   -------    --------
storageaccount.file.core.windows. CNAME  60    Answer     storageaccount.privatelink.file.core.windows.net
net
storageaccount.privatelink.file.c CNAME  60    Answer     file.par20prdstr01a.store.core.windows.net
ore.windows.net

Name       : file.par20prdstr01a.store.core.windows.net
QueryType  : A
TTL        : 60
Section    : Answer
IP4Address : 52.239.194.40

这反映了存储帐户可以公开公共终结点和一个或多个专用终结点的事实。 若要确保存储帐户名称解析为专用终结点的专用 IP 地址,必须更改本地 DNS 服务器上的配置。 可通过多种方式实现此目的:

  • 将客户端上的 hosts 文件修改为使 storageaccount.file.core.windows.net 解析到所需专用终结点的专用 IP 地址。 对于生产环境,强烈建议不要这样做,因为需要对要装载 Azure 文件共享的每个客户端进行这些更改,并且不会自动处理对存储帐户或专用终结点的更改。
  • storageaccount.file.core.windows.net 本地 DNS 服务器创建 A 记录。 这有优势,本地环境中的客户端将能够自动解析存储帐户,而无需配置每个客户端。 但是,此解决方案与修改 主机 文件类似脆弱,因为不会反映更改。 尽管此解决方法不太可靠,但在某些环境中,它却是最佳的选择。
  • core.windows.net 区域从本地 DNS 服务器转发到 Azure 专用 DNS 区域。 可以通过特殊 IP 地址 (168.63.129.16) 访问 Azure 专用 DNS 主机,该 IP 地址只能在链接到 Azure 专用 DNS 区域的虚拟网络内部访问。 若要解决此限制,可以在要转发 core.windows.net 到 Azure 专用 DNS 区域的虚拟网络中运行其他 DNS 服务器。 为了简化此设置,我们提供了 PowerShell cmdlet,用于在 Azure 虚拟网络中自动部署 DNS 服务器,并根据需要对其进行配置。 若要了解如何设置 DNS 转发,请参阅配置 Azure 文件存储的 DNS

基于 QUIC 的 SMB

Windows Server 2022 Azure Edition 为文件服务器角色提供的 SMB 服务器支持名为 QUIC 的新传输协议。 QUIC 是基于 UDP 构建的 TCP 的替代项,它比 TCP 提供了许多优势,同时仍提供可靠的传输机制。 SMB 协议的一个关键优势是,而不是使用端口 445,而是通过端口 443 完成所有传输,后者广泛开放出站以支持 HTTPS。 这实际上意味着通过 QUIC 上的 SMB 提供用于通过公共 Internet 进行文件共享的“SMB VPN”。 Windows 11 随附了支持 SMB over QUIC 的客户端。

目前,Azure 文件存储不支持通过 QUIC 直接支持 SMB。 但是,可以通过在 Windows Server 上运行的 Azure 文件同步访问 Azure 文件共享,如下图所示。 此外,还可以选择在本地或不同 Azure 数据中心让 Azure 文件同步缓存,以便为分布式员工提供本地缓存。 若要了解有关此选项的详细信息,请参阅通过 QUIC部署 Azure 文件同步和 SMB。

使用 Azure 文件同步在 Windows Server 2022 Azure Edition VM 上创建 Azure 文件共享轻型缓存的示意图。

另请参阅