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

配置 Azure 存储防火墙和虚拟网络

Azure 存储提供分层安全模型。 使用此模型可以根据所用网络或资源的类型和子集,来保护和控制应用程序与企业环境所需的存储帐户访问级别。 配置网络规则后,只有通过指定的网络集或指定的 Azure 资源集请求数据的应用程序才能访问存储帐户。 可以仅限源自指定 IP 地址、IP 范围、Azure 虚拟网络 (VNet) 中的子网或某些 Azure 服务的资源实例的请求访问存储帐户。

存储帐户具有可通过 internet 访问的公共终结点。 还可以为存储帐户创建专用终结点,该终结点将从 VNet 向存储帐户分配专用 IP 地址,并通过专用链接保护 VNet 和存储帐户之间往来的所有流量。 Azure 存储防火墙为存储帐户的公共终结点提供访问控制。 使用专用终结点时,还可以使用防火墙阻止通过公用终结点进行的所有访问。 通过存储防火墙配置,还可以选择受信任的 Azure 平台服务安全地访问存储帐户。

在网络规则生效后访问存储帐户的应用程序仍需要在请求中提供适当的授权。 支持适用于 Blob 和队列的 Azure Active Directory (Azure AD) 凭据、有效帐户访问密钥或 SAS 令牌提供授权。 如果针对匿名公共访问配置了 Blob 容器,则不需要对读取该容器中数据的请求进行授权,但防火墙规则仍保持有效,并会阻止匿名流量。

重要

默认情况下,除非请求源自在 Azure 虚拟网络 (VNet) 中运行的服务或者源自允许的公共 IP 地址,否则启用存储帐户的防火墙规则会阻止数据传入请求。 被阻止的请求包括来自其他 Azure 服务、来自 Azure 门户、来自日志记录和指标服务等的请求。

通过允许来自托管服务实例的子网的流量,可以授予对在 VNet 内运行的 Azure 服务相应的访问权限。 此外,可以通过下面所述的例外机制,启用有限数量的方案。 若要通过 Azure 门户访问存储帐户中的数据,需要从设置的受信任的边界(IP 或 VNet)内的计算机进行访问。

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

方案

若要保护存储帐户,应该先配置一个规则,以便在公共终结点上默认拒绝来自所有网络的流量(包括 Internet 流量)进行访问。 然后,应配置允许访问特定 vnet 流量的规则。 此外,还可以配置规则为来自所选公共 Internet IP 地址范围的流量授予访问权限,以便能够从特定的 Internet 或本地客户端建立连接。 借助此配置,可为应用程序生成安全网络边界。

可在同一存储帐户中,将允许从特定虚拟网络以及从公共 IP 地址范围进行访问的防火墙规则组合到一起。 可对现有的存储帐户应用存储防火墙规则,或者在创建新存储帐户时应用这些规则。

存储防火墙规则适用于存储帐户的公共终结点。 不需要配置任何防火墙访问规则来允许存储帐户的专用终结点的流量。 通过批准专用终结点的创建,可授予对来自托管该专用终结点的子网的流量的隐式访问权限。

对于面向 Azure 存储的所有网络协议(包括 REST 和 SMB),将强制实施网络规则。 要使用 Microsoft Azure 门户、存储资源管理器和 AZCopy 等工具访问数据,必须配置显式网络规则。

一旦应用网络规则,就会对所有请求强制实施这些规则。 用于向特定 IP 地址授予访问权限的 SAS 令牌可限制令牌持有者的访问权限,但不会越过已配置的网络规则授予新的访问权限。

虚拟机磁盘流量(包括装载和卸载操作以及磁盘 IO)不受网络规则影响。 对页 blob 的 REST 访问受网络规则保护。

经典存储帐户不支持防火墙和虚拟网络。

可通过创建例外,使用应用了网络规则的存储帐户中的非托管磁盘来备份和还原 VM。 此过程在本文的管理例外部分记录。 防火墙例外不适用于托管磁盘,因为它们已由 Azure 托管。

更改默认网络访问规则

默认情况下,存储帐户接受来自任何网络上客户端的连接。 你可以限制对所选网络的访问,或阻止来自所有网络的流量,仅允许通过专用终结点进行访问。

警告

更改此设置可能会影响你的应用程序连接到 Azure 存储的能力。 在更改此设置之前,请确保授予对任何允许的网络的访问权限,或设置通过专用终结点进行访问。

  1. 转至要保护的存储帐户。

  2. 在“安全和网络”下找到“网络”设置。

  3. 选择要允许的公共网络访问类型。

    • 要允许来自所有网络的流量,请选择“允许从所有网络”。

    • 若要仅允许来自特定虚拟网络的流量,请选择“允许从选定的虚拟网络和 IP 地址”。

    • 若要阻止来自所有网络的流量,请选择“已禁用”。

  4. 单击“保存”应用所做的更改。

注意

根据设计,从受信任的服务访问存储帐户优先于其他网络访问限制。 因此,如果先将“公用网络访问”设置为“已从所选虚拟网络和 IP 地址启用”,再将其设置为“已禁用”,则之前配置的任何资源实例异常(包括允许受信任服务列表中的 Azure 服务访问此存储帐户)都将一直有效。 因此,在将“公用网络访问”设置为“已禁用”后,这些资源和服务可能仍有权访问存储帐户。

允许从虚拟网络进行访问

可将存储帐户配置为仅允许从特定子网进行访问。 允许的子网可以属于同一订阅中的 VNet,也可以属于不同订阅(包括属于不同 Azure Active Directory 租户的订阅)中的 VNet。

可以在 VNet 内为 Azure 存储启用服务终结点。 服务终结点通过最佳路径将流量从 VNet 路由到 Azure 存储服务。 子网和虚拟网络的标识也随每个请求进行传输。 管理员随后可以配置存储帐户的网络规则,允许从 VNet 中的特定子网接收请求。 通过这些网络规则获得访问权限的客户端必须继续满足存储帐户的授权要求,才能访问数据。

每个存储帐户最多支持 200 条虚拟网络规则,这些规则可与 IP 网络规则组合使用。

重要

如果删除网络规则中包含的子网,系统将从存储帐户的网络规则中删除该子网。 如果使用相同的名称创建新子网,其将无法访问存储帐户。 若要允许访问,则必须在存储帐户的网络规则中明确授权新子网。

所需的权限

若要向存储帐户应用虚拟网络规则,用户必须对要添加的子网拥有适当的权限。 应用规则的操作可由存储帐户参与者执行,也可由通过自定义 Azure 角色获得 Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/actionAzure 资源提供程序操作权限的用户来执行。

存储帐户和获得访问权限的虚拟网络可以位于不同的订阅中,包括属于不同 Azure AD 租户的订阅。

注意

当前仅通过 PowerShell、CLI 和 REST API 来支持配置为其他 Azure Active Directory 租户的虚拟网络中的子网授予访问权限的规则。 无法通过 Azure 门户配置此类规则,但可以在门户中查看此类规则。

可用的虚拟网络区域

服务终结点默认在位于同一 Azure 区域的虚拟网络和服务实例之间运行。 将服务终结点与 Azure 存储结合使用时,服务终结点也可在配对区域中的虚拟网络和服务实例之间工作。 若要使用服务终结点授予对其他区域中虚拟网络的访问权限,则必须在虚拟网络的订阅中注册 AllowGlobalTagsForStorage 功能。 此功能目前以公共预览版提供。

服务终结点可以在区域性故障转移期间提供连续性,并允许访问读取访问权限异地冗余存储 (RA-GRS) 实例。 允许从虚拟网络访问存储帐户的网络规则同样允许访问所有 RA-GRS 实例。

在计划区域性服务中断期间的灾难恢复时,应该在配对区域中提前创建 VNet。 为 Azure 存储启用服务终结点,并提供允许从这些备用虚拟网络进行访问的网络规则。 然后将这些规则应用于异地冗余存储帐户。

启用对其他区域中虚拟网络的访问权限(预览版)

重要

此功能目前以预览版提供。

有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

若要通过服务终结点从位于另一个区域的虚拟网络进行访问,请在虚拟网络的订阅中注册 AllowGlobalTagsForStorage 功能。 订阅中启用了 AllowedGlobalTagsForStorage 功能的所有子网都不再使用公共 IP 地址与任何存储帐户通信。 相反,从这些子网到存储帐户的所有流量都将使用专用 IP 地址作为源 IP。 因此,任何使用 IP 网络规则来允许来自这些子网的流量的存储帐户都不再有效。

备注

对于更新现有服务终结点以访问另一个区域中的存储帐户,请在使用 AllowGlobalTagsForStorage 功能注册订阅后在子网上执行更新子网操作。 同样,若要返回到旧配置,请在使用 AllowGlobalTagsForStorage 功能注销订阅后执行更新子网操作。

在预览期间,必须使用 PowerShell 或 Azure CLI 来启用此功能。

管理虚拟网络规则

可以通过 Azure 门户、PowerShell 或 CLIv2 管理存储帐户的虚拟网络规则。

注意

如果已注册 AllowGlobalTagsForStorage 功能,并希望允许从另一个 Azure AD 租户中的虚拟网络/子网,或存储帐户所在区域或其配对区域以外的区域访问你的存储帐户,则必须使用 PowerShell 或 Azure CLI。 Azure 门户不显示其他 Azure AD 租户中或存储帐户所在区域或其配对区域以外的区域中的子网,因此不能用于为其他区域中的虚拟网络配置访问规则。

  1. 转至要保护的存储帐户。

  2. 选择名为“网络”的设置菜单。

  3. 检查并确保已选择允许从“所选网络”进行访问。

  4. 若要使用新的网络规则授予对虚拟网络的访问权限,请在“虚拟网络”下依次选择“添加现有虚拟网络”、“虚拟网络”和“子网”选项、“添加” 。 若要创建新的虚拟网络并向其授予访问权限,请选择“添加新的虚拟网络”。 提供创建新的虚拟网络所需的信息,然后选择“创建”。

    注意

    如果之前没有为所选的虚拟网络和子网配置 Azure 存储的服务终结点,则可在执行此操作时进行配置。

    目前,在创建规则期间,只会显示属于同一 Azure Active Directory 租户的虚拟网络供用户选择。 若要为属于其他租户的虚拟网络中的子网授予访问权限,请使用 PowerShell、CLI 或 REST API。

    即使注册了 AllowGlobalTagsForStorageOnly 功能,也不会显示存储帐户所在区域或其配对区域以外的区域中的子网,作为可供选择的项。 若要从不同区域的虚拟网络/子网启用对存储帐户的访问,请使用 PowerShell 或 Azure CLI 选项卡中的说明。

  5. 若要删除虚拟网络或子网规则,请选择“...”打开虚拟网络或子网的上下文菜单,然后选择“删除” 。

  6. 选择“保存”以应用所做的更改。

允许从 Internet IP 范围进行访问

可以通过创建 IP 网络规则来使用 IP 网络规则允许从特定的公共 Internet IP 地址范围进行访问。 每个存储帐户最多支持 200 个规则。 这些规则向基于 Internet 的特定服务和本地网络授予访问权限,并阻止一般 Internet 流量。

以下限制适用于 IP 地址范围。

  • IP 网络规则仅适用于公共 Internet IP 地址。

    IP 规则不允许使用为专用网络保留的 IP 地址范围(如 RFC 1918 中所定义)。 专用网络包括以“10.**”、“172.16. - *172.31.”和“*192.168.”开头的地址。

  • 必须使用 CIDR 表示法以 16.17.18.0/24 的形式,或使用单独的 IP 地址(如 16.17.18.19)提供允许的 Internet 地址范围。

  • 不支持使用“/31”或“/32”前缀大小的小型地址范围。 这些范围应使用单独的 IP 地址规则配置。

  • 存储防火墙规则的配置仅支持 IPV4 地址。

在以下情况下,不能使用 IP 网络规则:

  • 限制对与存储帐户位于同一 Azure 区域中的客户端的访问。

    IP 网络规则对源自与存储帐户相同的 Azure 区域的请求不起作用。 请使用虚拟网络规则来允许相同区域的请求。

  • 限制对配对区域中的客户端(在具有服务终结点的 VNet 中)的访问。

  • 限制对与存储帐户部署在同一区域中的 Azure 服务的访问。

    与存储帐户部署在同一区域中的服务使用专用的 Azure IP 地址进行通信。 因此,不能基于特定的 Azure 服务的公共出站 IP 地址范围来限制对其的访问。

配置从本地网络的访问

若要使用 IP 网络规则授予本地网络访问存储帐户的权限,则必须标识网络所用的面向 Internet 的 IP 地址。 若要获得帮助,请联系网络管理员。

如果是在本地使用 ExpressRoute,则在进行公共对等互连或 Microsoft 对等互连时,需标识所用的 NAT IP 地址。 进行公共对等互连时,每条 ExpressRoute 线路默认情况下会使用两个 NAT IP 地址。当流量进入 Microsoft Azure 网络主干时,会向 Azure 服务流量应用这些地址。 进行 Microsoft 对等互连时,所用 NAT IP 地址由客户或服务提供商提供。 若要允许访问服务资源,必须在资源 IP 防火墙设置中允许这些公共 IP 地址。 若要查找公共对等互连 ExpressRoute 线路 IP 地址,请通过 Azure 门户开具 ExpressRoute 支持票证。 详细了解适用于 ExpressRoute 公共对等互连和 Microsoft 对等互连的 NAT

管理 IP 网络规则

可以通过 Azure 门户、PowerShell 或 CLIv2 管理存储帐户的 IP 网络规则。

  1. 转至要保护的存储帐户。

  2. 选择名为“网络”的设置菜单。

  3. 检查并确保已选择允许从“所选网络”进行访问。

  4. 若要向 Internet IP 范围授予访问权限,请在“防火墙”>“地址范围”下输入 IP 地址或地址范围(采用 CIDR 格式) 。

  5. 若要删除某个 IP 网络规则,请选择该地址范围旁边的垃圾桶图标。

  6. 单击“保存”应用所做的更改。

允许从 Azure 资源实例进行访问

在某些情况下,应用程序可能依赖于无法通过虚拟网络或 IP 地址规则隔离的 Azure 资源。 但是,你仍希望存储帐户仅访问你的应用程序的 Azure 资源并且访问方式是安全的。 可以通过创建资源实例规则来配置存储帐户,允许其访问某些 Azure 服务的特定资源实例。

资源实例可以对存储帐户数据执行的操作的类型取决于资源实例的 Azure 角色分配。 资源实例必须来自存储帐户所在的租户,但可以属于租户中的任何订阅。

可以在 Azure 门户中添加或删除资源网络规则。

  1. 登录到 Azure 门户即可开始操作。

  2. 找到存储帐户并显示帐户概览。

  3. 选择“网络”以显示网络的配置页。

  4. 选择“防火墙和虚拟网络”下的“选定的网络”以此允许访问。

  5. 向下滚动以找到“资源实例”,然后在“资源类型”下拉列表中,选择资源实例的资源类型 。

  6. 在“实例名称”下拉列表中,选择资源实例。 还可以选择包括活动租户、订阅或资源组中的所有资源实例。

  7. 单击“保存”应用所做的更改。 资源实例会出现在网络设置页的“资源实例”部分。

若要删除资源实例,请选择资源实例旁边的删除图标 ()。

授予对受信任的 Azure 服务的访问权限

某些 Azure 服务通过无法包含在网络规则中的网络运行。 可向其中的一部分受信任 Azure 服务授予对存储帐户的访问权限,同时对其他应用保持使用网络规则。 然后,这些受信任的服务会使用强身份验证安全地连接到存储帐户。

可以通过创建网络规则例外来授予对受信任的 Azure 服务的访问权限。 有关分步指南,请参阅本文的管理例外部分。

当你授予对受信任的 Azure 服务的访问权限时,你将授予以下访问权限类型:

  • 选定操作对订阅中注册的资源的受信任的访问权限。
  • 基于托管标识的针对资源的受信任访问权限。

已在订阅中注册的资源的受信任的访问权限

某些服务的资源在注册到订阅后,可在同一订阅中访问存储帐户以执行特定的操作,例如写入日志或备份。 下表描述了每项服务和允许的操作。

服务 资源提供程序名称 允许的操作
Azure 备份 Microsoft.RecoveryServices 在 IAAS 虚拟机中运行非托管磁盘的备份和还原。 (不是托管磁盘的必需操作)。 了解详细信息
Azure Data Box Microsoft.DataBox 支持使用 Data Box 将数据导入到 Azure。 了解详细信息
Azure 开发测试实验室 Microsoft.DevTestLab 自定义映像创建和项目安装。 了解详细信息
Azure 事件网格 Microsoft.EventGrid 启用 Blob 存储事件发布并允许事件网格发布到存储队列。 了解有关 blob 存储事件发布到队列的信息。
Azure 事件中心 Microsoft.EventHub 使用事件中心捕获功能存档数据。 了解详细信息
Azure 文件同步 Microsoft.StorageSync 使你能够将本地文件服务器转换为 Azure 文件共享的缓存。 可实现多站点同步、快速灾难恢复和云端备份。 了解详细信息
Azure HDInsight Microsoft.HDInsight 为新的 HDInsight 群集预配默认文件系统的初始内容。 了解详细信息
Azure 导入导出 Microsoft.ImportExport 允许使用 Azure 存储导入/导出服务将数据导入到 Azure 存储或从 Azure 存储导出数据。 了解详细信息
Azure Monitor Microsoft.Insights 允许向受保护的存储帐户写入监视数据,包括资源日志、Azure Active Directory 登录和审核日志,以及 Microsoft Intune 日志。 了解详细信息
Azure 网络 Microsoft.Network 以多种方式(包括使用网络观察程序和流量分析服务)存储和分析网络流量日志。 了解详细信息
Azure Site Recovery Microsoft.SiteRecovery 使用启用了防火墙的缓存、源或目标存储帐户时,请启用复制,以实现 Azure IaaS 虚拟机的灾难恢复。 了解详细信息

基于托管标识的受信任访问权限

下表列出了可访问你的存储帐户数据的服务(如果为这些服务的资源实例授予了相应的权限)。

如果帐户未启用分层命名空间功能,可以通过将 Azure 角色显式分配给每个资源实例的托管标识来授予权限。 在这种情况下,实例的访问范围对应于分配给托管标识的 Azure 角色。

对于已启用分层命名空间功能的帐户,可以使用相同的技术。 但是,如果将托管标识添加到存储帐户中包含的任何目录或 Blob 的访问控制列表 (ACL),则不必分配 Azure 角色。 在这种情况下,实例的访问范围将对应已为托管标识授予访问权限的目录或文件。 还可以将 Azure 角色和 ACL 组合在一起。 要详细了解如何将它们组合在一起以授予访问权限,请参阅 Azure Data Lake Storage Gen2 中的访问控制模型

提示

若要授予对特定资源的访问权限,建议的方法是使用资源实例规则。 要授予对特定资源实例的访问权限,请参阅本文的允许从 Azure 资源实例进行访问部分。

服务 资源提供程序名称 目的
Azure API 管理 Microsoft.ApiManagement/service 使用策略允许 API 管理服务访问防火墙后的存储帐户。 了解详细信息
用于 Redis 的 Azure 缓存 Microsoft.Cache/Redis 允许通过 Azure Cache for Redis 访问存储帐户。 了解详细信息
Azure 认知搜索 Microsoft.Search/searchServices 使认知搜索服务能够访问存储帐户,以进行索引编制、处理和查询。
Azure 认知服务 Microsoft.CognitiveService/accounts 使认知服务能够访问存储帐户。 了解详细信息
Azure 容器注册表任务 Microsoft.ContainerRegistry/registries ACR 任务可以在生成容器映像时访问存储帐户。
Azure 数据工厂 Microsoft.DataFactory/factories 允许通过 ADF 运行时访问存储帐户。
Azure Data Share Microsoft.DataShare/accounts 允许通过数据共享访问存储帐户。
Azure 开发测试实验室 Microsoft.DevTestLab/labs 允许通过开发测试实验室访问存储帐户。
Azure 事件网格 Microsoft.EventGrid/topics 允许通过Azure 事件网格访问存储帐户。
Azure Healthcare APIs Microsoft.HealthcareApis/services 允许通过 Azure Healthcare APIs 访问存储帐户。
Azure IoT Central 应用程序 Microsoft.IoTCentral/IoTApps 允许通过 Azure IoT Central 应用程序访问存储帐户。
Azure IoT 中心 Microsoft.Devices/IotHubs 允许将 IoT 中心的数据写入 Blob 存储。 了解详细信息
Azure 逻辑应用 Microsoft.Logic/workflows 使逻辑应用能够访问存储帐户。 了解详细信息
Azure 机器学习服务 Microsoft.MachineLearningServices 经过授权的 Azure 机器学习工作区将实验输出、模型和日志写入 Blob 存储并读取数据。 了解详细信息
Azure 媒体服务 Microsoft.Media/mediaservices 允许通过媒体服务访问存储帐户。
Azure Migrate Microsoft.Migrate/migrateprojects 允许通过 Azure Migrate 访问存储帐户。
Microsoft Purview Microsoft.Purview/accounts 允许 Microsoft Purview 访问存储帐户。
Azure Site Recovery Microsoft.RecoveryServices/vaults 允许通过 Site Recovery 访问存储帐户。
Azure SQL 数据库 Microsoft.Sql 允许将审核数据写入防火墙后的存储帐户。
Azure Synapse Analytics Microsoft.Sql 允许将 COPY 语句、PolyBase(在专用池中)或 openrowset 函数与无服务器池中的外部表结合使用来将数据导入和导出特定 SQL 数据库。 了解详细信息
Azure 流分析 Microsoft.StreamAnalytics 用于将流式处理作业中的数据写入 Blob 存储。 了解详细信息
Azure Synapse Analytics Microsoft.Synapse/workspaces 允许从 Azure Synapse Analytics 访问 Azure 存储中的数据。

授予对存储分析的访问权限

在某些情况下,需要从网络边界外访问读取资源日志和指标。 配置受信任的服务对存储帐户的访问权限时,可以通过创建网络规则例外来允许对日志文件和/或指标表进行读取访问。 有关分步指南,请参阅下面的“管理例外”部分。 若要详细了解如何使用存储分析,请参阅使用 Azure 存储分析收集日志和指标数据

管理异常

可以通过 Azure 门户、PowerShell 或 Azure CLI v2 管理网络规则例外。

  1. 转至要保护的存储帐户。

  2. 选择名为“网络”的设置菜单。

  3. 检查并确保已选择允许从“所选网络”进行访问。

  4. 在“例外”下,选择要允许的例外。

  5. 单击“保存”应用所做的更改。

后续步骤

服务终结点中了解有关 Azure 网络服务终结点的详细信息。

Azure 存储安全指南中深入了解 Azure 存储安全。