可以使用 Azure 存储帐户 的专用终结点 允许 Azure 虚拟网络上的客户端通过 专用链接安全地访问数据。 专用终结点为每个存储帐户服务使用与虚拟网络地址空间不同的 IP 地址。 虚拟网络上客户端与存储帐户之间的网络流量穿越虚拟网络及Microsoft骨干网络内部的私有连接,从而消除与公共互联网的接触风险。
备注
专用终结点不适用于常规用途 v1 存储帐户。
通过为存储帐户使用专用终结点,你可以:
- 使用专用链接保护存储帐户。 可以手动配置存储防火墙以阻止存储服务的公共终结点上的连接。 创建专用链接不会自动阻止公共终结点上的连接。
- 阻止数据从虚拟网络泄露,从而提高虚拟网络的安全性。
- 从本地网络安全地连接到存储帐户,这些帐户使用带有专用对等的 VPN 或 ExpressRoutes 连接到虚拟网络。
专用终结点是 虚拟网络中 Azure 服务的特殊网络接口。 为存储帐户创建专用终结点时,它会在虚拟网络上的客户端和存储之间提供安全连接。 从虚拟网络的 IP 地址范围为专用终结点分配 IP 地址。 专用终结点与存储服务之间的连接使用安全的专用链接。
虚拟网络中的应用程序可以通过专用终结点无缝连接到存储服务,使用与平常相同的连接字符串和授权机制。 专用终结点可以与存储帐户支持的所有协议(包括 REST 和 SMB)一起使用。
可以在使用服务终结点的子网中创建专用终结点。 因此,子网中的客户端可以使用专用终结点连接到某个存储帐户,同时使用服务终结点访问其他存储帐户。
在虚拟网络中为存储服务创建专用终结点时,会向存储帐户所有者发送同意请求以供审批。 如果请求创建专用终结点的用户还是存储帐户的所有者,则此许可请求会自动获得批准。
存储帐户所有者可以通过 Azure 门户中存储帐户的“专用终结点”选项卡来管理许可请求和专用终结点。
提示
如果要仅通过专用终结点限制对存储帐户的访问,请将存储防火墙配置为拒绝或控制通过公用终结点进行的访问。
通过 配置存储防火墙 以默认拒绝通过其公共终结点的访问,可以保护存储帐户以仅接受来自虚拟网络的连接。 无需防火墙规则即可允许来自具有专用终结点的虚拟网络的流量,因为存储防火墙仅控制通过公共终结点的访问。 专用终结点则是依赖于“同意流”来授予子网对存储服务的访问权限。
备注
在存储帐户之间复制 Blob 时,客户端必须对两个帐户都具有网络访问权限。 因此,如果选择仅对一个帐户(源帐户或目标帐户)使用专用链接,请确保客户端对另一帐户具有网络访问权限。 若要了解配置网络访问的其他方法,请参阅配置 Azure 存储防火墙和虚拟网络。
若要使用 Azure 门户创建专用终结点,请参阅从 Azure 门户中的存储帐户体验专门连接到存储帐户。
若要使用 PowerShell 或 Azure CLI 创建专用终结点,请参阅以下任一文章。 二者均使用 Azure Web 应用作为目标服务,但对于 Azure 存储帐户,创建专用链接的步骤相同。
创建专用终结点时,必须指定存储帐户及其连接到的存储服务。
需要为所要访问的每个存储资源(即 Blob、Data Lake Storage、文件、队列、表或静态网站)单独创建一个专用终结点。 在专用终结点上,这些存储服务定义为关联存储帐户的“目标子资源”。
如果为 Data Lake Storage 存储资源创建专用终结点,则还应为 Blob 存储资源创建一个专用终结点。 这是因为,面向 Data Lake Storage 终结点的操作可能会重定向到 Blob 终结点。 同样,如果仅为 Blob 存储添加专用终结点,而不为 Data Lake Storage 添加专用终结点,一些操作(如管理 ACL、创建目录、删除目录等)将会失败,因为 API 需要使用 DFS 专用终结点。 通过为这两个资源创建专用终结点,可确保成功完成所有操作。
提示
为存储服务的辅助实例创建单独的专用终结点,以便在 RA-GRS 帐户上获得更好的读取性能。 请确保创建常规用途 v2(标准或高级)存储帐户。
若要使用为异地冗余存储配置的存储帐户对次要区域进行读取访问,需要为服务的主实例和辅助实例使用单独的专用终结点。 无需为“故障转移”的辅助实例创建专用终结点。 专用终结点将在故障转移后自动连接到新的主实例。 有关存储冗余选项的详细信息,请参阅 Azure 存储冗余。
使用专用终结点的虚拟网络上的客户端应使用与连接到公共终结点的客户端相同的存储帐户连接字符串。 我们依赖于 DNS 解析,通过专用链接自动将连接从虚拟网络路由到存储帐户。
重要
使用相同的连接字符串通过专用终结点连接到存储帐户,就像在其他情况下使用那样。 不要使用其 privatelink
子域 URL 连接到存储帐户。
默认情况下,我们将创建一个附加到虚拟网络的 专用 DNS 区域 ,其中包含专用终结点的必要更新。 但是,如果使用自己的 DNS 服务器,则可能需要对 DNS 配置进行其他更改。 下面关于 DNS 更改的部分描述了专用终结点所需的更新。
备注
有关如何为专用终结点配置 DNS 设置的详细信息,请参阅 Azure 专用终结点 DNS 配置。
创建专用终结点时,存储帐户的 DNS CNAME 资源记录将更新为具有前缀 privatelink
的子域中的别名。 默认情况下,我们还会创建一个与 子域对应的privatelink
,其中包含专用终结点的 DNS A 资源记录。
使用专用终结点从虚拟网络外部解析存储终结点 URL 时,它会解析为存储服务的公共终结点。 从托管专用终结点的虚拟网络进行解析时,存储终结点 URL 解析为专用终结点的 IP 地址。
对于上面的演示示例,从托管专用终结点的虚拟网络外部解析的存储帐户“StorageAccountA”的 DNS 资源记录将为:
Name | 类型 | Value |
---|---|---|
StorageAccountA.blob.core.chinacloudapi.cn |
CNAME | StorageAccountA.privatelink.blob.core.chinacloudapi.cn |
StorageAccountA.privatelink.blob.core.chinacloudapi.cn |
CNAME | <存储服务公共终结点> |
<存储服务公共终结点> | A | <存储服务公共 IP 地址> |
如前所述,可以使用存储防火墙通过公共终结点拒绝或控制虚拟网络外部客户端的访问。
当 StorageAccountA 的 DNS 资源记录由托管专用终结点的虚拟网络中的客户端解析时,将为:
Name | 类型 | Value |
---|---|---|
StorageAccountA.blob.core.chinacloudapi.cn |
CNAME | StorageAccountA.privatelink.blob.core.chinacloudapi.cn |
StorageAccountA.privatelink.blob.core.chinacloudapi.cn |
A | 10.1.1.5 |
此方法允许对托管专用终结点的虚拟网络上的客户端以及虚拟网络外部的客户端 使用相同的连接字符串 访问存储帐户。
如果在网络上使用自定义 DNS 服务器,则客户端必须能够将存储帐户终结点的 FQDN 解析为专用终结点 IP 地址。 应将 DNS 服务器配置为将专用链接子域委托给虚拟网络的专用 DNS 区域,或者将 StorageAccountA.privatelink.blob.core.chinacloudapi.cn
的 A 记录配置为专用终结点的 IP 地址。
提示
使用自定义或本地 DNS 服务器时,应将 DNS 服务器配置为将 privatelink
子域中的存储帐户名称解析为专用终结点 IP 地址。 您可以通过将privatelink
子域委派到虚拟网络的专用 DNS 区域,或者通过在您的 DNS 服务器上配置 DNS 区域并添加 DNS A 记录来完成此操作。
推荐的用于存储服务的专用终结点的 DNS 区域名称,以及关联的终结点目标子资源,为:
Storage service | Target sub-resource | Zone name |
---|---|---|
BLOB 服务 | blob | privatelink.blob.core.chinacloudapi.cn |
Data Lake Storage | dfs | privatelink.dfs.core.chinacloudapi.cn |
File service | 文件 | privatelink.file.core.chinacloudapi.cn |
队列服务 | 队列 | privatelink.queue.core.chinacloudapi.cn |
表服务 | 表 | privatelink.table.core.chinacloudapi.cn |
Static Websites | web | privatelink.web.core.chinacloudapi.cn |
有关配置自己的 DNS 服务器以支持专用终结点的详细信息,请参阅以下文章:
有关定价详细信息,请参阅 Azure 专用链接定价。
请记住以下关于 Azure 存储专用终结点的已知问题。
访问具有专用终结点的其他存储帐户时,具有现有专用终结点的虚拟网络中的客户端将面临约束。 例如,假设虚拟网络 N1 具有 Blob 存储存储帐户 A1 的专用终结点。 如果存储帐户 A2 在虚拟网络 N2 中具有用于 Blob 存储的专用终结点,则虚拟网络 N1 中的客户端还必须使用专用终结点访问帐户 A2 中的 Blob 存储。 如果存储帐户 A2 没有 Blob 存储的任何专用终结点,则虚拟网络 N1 中的客户端无需专用终结点即可访问该帐户中的 Blob 存储。
此约束是帐户 A2 创建专用终结点时 DNS 发生更改的结果。
仅当使用 Azure REST API 或使用 REST API 的工具时,才能使用专用终结点在存储帐户之间复制 Blob。 这些工具包括 AzCopy、存储资源管理器、Azure PowerShell、Azure CLI 和 Azure Blob 存储 SDK。
仅支持面向 blob
或 file
存储资源终结点的专用终结点。 这包括针对 Data Lake Storage 帐户的 REST API 调用,其中显式或隐式引用了 blob
资源终结点。 尚不支持以 Data Lake Storage dfs
资源终结点为目标的专用终结点。 目前尚不支持通过使用网络文件系统 (NFS) 协议在存储帐户之间进行复制。