您可以通过公共互联网可访问的终结点、您网络上的一个或多个专用终结点,或者通过 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 文件存储,对 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 装载,而无需加密。
需要安全传输时,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,则必须满足两个条件:
- 必须禁用存储帐户的 传输所需的 安全设置。
- 请求必须源自 Azure 区域内部。 如前所述,允许从 Azure 区域内部或外部的任何位置访问加密的 SMB 请求。
仅当存储帐户的公共终结点限制为使用 服务终结点的特定虚拟网络时,才能从存储帐户的公共终结点访问 NFS 文件共享。 有关服务终结点的其他信息,请参阅公共终结点防火墙设置。
FileREST 可通过公共终结点访问。 如果需要安全传输,则仅接受 HTTPS 请求。 如果禁用安全传输,则无论源如何,公共终结点都接受 HTTP 请求。
公共终结点防火墙设置
存储帐户防火墙限制对存储帐户的公共终结点的访问。 使用存储帐户防火墙,可以限制对特定 IP 地址/IP 地址范围、特定虚拟网络的访问,或完全禁用公共终结点。
将公共终结点的流量限制为一个或多个虚拟网络时,将使用名为 服务终结点的虚拟网络的功能。 发送到Azure 文件存储服务端点的请求仍然会发送到存储账户的公共IP地址。 然而,网络层会对请求进行额外验证,以验证其是否来自授权的虚拟网络。 SMB、NFS 和 FileREST 协议都支持服务终结点。 然而,与SMB和FileREST不同,NFS文件共享只能通过服务 端点访问公共端点。
若要详细了解如何配置存储帐户防火墙,请参阅 配置 Azure 存储防火墙和虚拟网络。
Azure 门户访问和存储帐户防火墙
通过 Azure 门户访问 Azure 文件共享时,会出现两个单独的请求:
- 从浏览器到 Azure 门户 UI(
https://portal.azure.cn)的请求。 - 从浏览器直接请求 Azure 文件存储数据平面终结点(例如
https://<storage-account-name>.file.core.chinacloudapi.cn),通常使用的是为门户体验颁发的 SAS 令牌。
存储帐户防火墙仅评估对 Azure 文件存储数据平面终结点的直接请求,而不是对 Azure portal.azure.cn文件存储数据平面终结点的请求。 因此,即使可以访问 Azure 门户而不出现问题,如果防火墙不允许浏览器到存储请求上的公共出口 IP 地址,则浏览文件共享数据时可能会收到 403 (禁止访问) 错误。 这仅适用于 FileREST/HTTPS 流量,不适用于 SMB 或 NFS。
注释
由于代理、VPN、NAT 或网络路由的差异等因素,错误消息中显示的 IP 地址可能与存储帐户看到的实际源 IP 地址不匹配。 若要验证实际到达存储帐户的源 IP 地址,请为存储帐户启用 Azure Monitor 诊断设置 并收集 存储资源日志。 然后查看相关的文件服务请求条目,并检查 CallerIpAddress 字段,确认哪些 IP 地址已到达存储帐户。
专用终结点
除了存储帐户的默认公共终结点之外,Azure 文件还提供一个或多个专用终结点的选项。 专用终结点是只能在 Azure 虚拟网络中访问的终结点。 为存储帐户创建专用终结点时,存储帐户从虚拟网络的地址空间内获取专用 IP 地址,这与本地文件服务器或 NAS 设备在本地网络的专用地址空间内接收 IP 地址的方式类似。
单个专用终结点与特定的 Azure 虚拟网络子网相关联。 存储帐户可能具有多个虚拟网络中的专用终结点。
使用专用终结点与 Azure 文件存储可以实现以下功能:
- 结合专用对等互连使用 VPN 或 ExpressRoute 连接,从本地网络安全连接到 Azure 文件共享。
- 通过将存储帐户防火墙配置为阻止公共终结点上的所有连接,来保护 Azure 文件共享。 默认情况下,创建专用终结点不会阻止与公共终结点的连接。
- 阻止数据从虚拟网络(和对等互连边界)渗出,从而提高虚拟网络的安全性。
若要创建专用终结点,请参阅 为 Azure 文件配置专用终结点。
通过虚拟专用网络或 ExpressRoute 以隧道方式传输流量
若要使用专用终结点从本地访问 SMB 或 NFS 文件共享,必须在本地网络和 Azure 之间建立网络隧道。 虚拟网络类似于传统的本地网络。 就像 Azure 存储账户或 Azure 虚拟机一样,虚拟网络是你部署在资源组中的 Azure 资源。
Azure 文件存储支持通过以下机制在本地工作站和服务器与 Azure SMB/NFS 文件共享之间以隧道方式传输流量:
点到站点 VPN
Azure VPN 网关 支持点到站点 VPN 连接,即 Azure 与单个客户端之间的 VPN 连接。 此解决方案主要用于不属于组织的本地网络的设备。 常见用例包括远程工作者在家中或者在旅途中的咖啡店或酒店装载其 Azure 文件共享。 要使用Azure 文件存储的点对点VPN连接,你需要为每个想连接的客户端配置一个点对点VPN连接。 参见“配置 Windows 上的点对点 VPN,用于 Azure 文件存储;;参见”配置 Linux 上的点对点 VPN,用于 Azure 文件存储。
站对站 VPN
Azure VPN 网关 还支持站点对站点 VPN 连接,即 Azure 与您组织网络之间的 VPN 连接。 站点对站点VPN连接允许您为组织网络上托管的VPN服务器或设备配置一次VPN连接,而无需为每个需要访问Azure文件共享的客户端设备配置连接。 参见为 Azure 文件存储配置站点到站点 VPN。
ExpressRoute
ExpressRoute 允许你在 Azure 和本地网络之间创建一条不经互联网的定义路由。 由于 ExpressRoute 在本地数据中心和 Azure 之间提供了专用路径,因此当考虑网络性能时,ExpressRoute 非常有用。 组织的策略或法规要求使用确定的路径访问云中的资源时,ExpressRoute 也是一个不错的选择。
注释
尽管我们建议使用专用终结点来帮助将本地网络扩展到Azure,但从技术上来说,可以通过 VPN 连接路由到公共终结点。 不过,这种方法需要为为服务你存储账户的 Azure 存储集群的公共端点硬编码 IP 地址。 由于存储账户可能随时在不同存储集群之间移动,且新集群经常被添加和移除,这种方法需要定期将所有可能的 Azure 存储 IP 地址硬编码到你的路由规则中。
DNS 配置
当你创建私有端点时,Azure 也会创建或更新对应该privatelink子域的私有 DNS 区域。 严格地说,创建专用 DNS 区域不需要为存储帐户使用专用终结点。 不过,强烈建议这样做;而且,在使用 Active Directory 用户主体挂载 Azure 文件共享或通过 FileREST API 访问它时,明确要求必须这样做。
在你的私有 DNS 区域中,Azure 会为 storageaccount.privatelink.file.core.chinacloudapi.cn 创建一条 A 记录,并为存储帐户的常规名称创建一条 CNAME 记录,其格式为 storageaccount.file.core.chinacloudapi.cn。 由于 Azure 专用 DNS 区域已连接到包含专用终结点的虚拟网络,因此可以通过从 Azure VM 中的 PowerShell 调用 Resolve-DnsName cmdlet 来观察 DNS 配置(也可 nslookup 在 Windows 和 Linux 中):
Resolve-DnsName -Name "storageaccount.file.core.chinacloudapi.cn"
在本示例中,存储帐户 storageaccount.file.core.chinacloudapi.cn 解析为专用终结点的专用 IP 地址(正好是 192.168.0.4)。
Name Type TTL Section NameHost
---- ---- --- ------- --------
storageaccount.file.core.chinacloudapi.cn CNAME 29 Answer csostoracct.privatelink.file.core.chinacloudapi.cn
Name : storageaccount.privatelink.file.core.chinacloudapi.cn
QueryType : A
TTL : 1769
Section : Answer
IP4Address : 192.168.0.4
Name : privatelink.file.core.chinacloudapi.cn
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.chinacloudapi.cn 是 storageaccount.privatelink.file.core.chinacloudapi.cn 的 CNAME 记录,而 storageaccount.privatelink.file.core.chinacloudapi.cn 则是托管存储帐户的 Azure 存储群集的 CNAME 记录。
Name Type TTL Section NameHost
---- ---- --- ------- --------
storageaccount.file.core.chinacloudapi.cn CNAME 60 Answer storageaccount.privatelink.file.core.chinacloudapi.cn
storageaccount.privatelink.chinacloudapi.cn CNAME 60 Answer file.par20prdstr01a.store.core.chinacloudapi.cn
Name : file.par20prdstr01a.store.core.chinacloudapi.cn
QueryType : A
TTL : 60
Section : Answer
IP4Address : 52.239.194.40
这种配置反映了存储账户可以同时暴露公共端点和一个或多个私有端点。 若要确保存储帐户名称解析为专用终结点的专用 IP 地址,必须更改本地 DNS 服务器上的配置。 可以通过多种方式来执行此操作:
- 将客户端上的 hosts 文件修改为使
storageaccount.file.core.chinacloudapi.cn解析到所需专用终结点的专用 IP 地址。 对于生产环境,强烈建议不要这样做,因为需要对要装载 Azure 文件共享的每个客户端进行这些更改,并且不会自动处理对存储帐户或专用终结点的更改。 - 为
storageaccount.file.core.chinacloudapi.cn本地 DNS 服务器创建 A 记录。 这有优势,本地环境中的客户端将能够自动解析存储帐户,而无需配置每个客户端。 但是,此解决方案与修改 主机 文件类似脆弱,因为不会反映更改。 尽管此解决方法不太可靠,但在某些环境中,它却是最佳的选择。 - 将
core.chinacloudapi.cn区域从本地 DNS 服务器转发到 Azure 专用 DNS 区域。 可以通过特殊 IP 地址 (168.63.129.16) 访问 Azure 专用 DNS 主机,该 IP 地址只能在链接到 Azure 专用 DNS 区域的虚拟网络内部访问。 若要解决此问题,可以在虚拟网络中运行其他 DNS 服务器,这些服务器会转发core.chinacloudapi.cn到Azure专用 DNS 区域。 为了简化这一设置,Microsoft 提供了 PowerShell 指令小工具,可以自动部署 Azure 虚拟网络中的 DNS 服务器,并按需要配置它们。 若要了解如何设置 DNS 转发,请参阅配置 Azure 文件存储的 DNS。
基于 QUIC 的 SMB
Windows Server 2022 Azure Edition 支持用于文件服务器角色提供的 SMB 服务器的、名为 QUIC 的传输协议。 QUIC是基于UDP构建的TCP替代品,在提供多项优于TCP的同时,仍提供可靠的传输机制。 SMB 协议的一个关键优势是,而不是使用端口 445,而是通过端口 443 完成所有传输,后者广泛开放出站以支持 HTTPS。 这种配置实际上意味着 SMB over QUIC 提供了通过公共互联网共享文件的“SMB VPN”。 Windows 11 随附了支持 SMB over QUIC 的客户端。
目前,Azure 文件存储不支持 SMB over QUIC。 不过,你可以通过运行在 Windows Server 上的 Azure 文件同步 访问 Azure 文件共享,如下图所示。 该配置还允许您在本地或不同 Azure 数据中心设置 Azure 文件同步 缓存,以为分布式员工提供本地缓存。 想了解更多关于此选项的信息,请参阅 Windows Server 文档。 关于Azure 文件同步专用网络的详细信息,请参见SMB over QUIC。
另请参阅
- Azure 文件概述
- 为 Azure 文件存储 部署制定计划