Azure Synapse Analytics 安全白皮书:网络安全
注意
本文是“Azure Synapse Analytics 安全白皮书”系列文章的一部分。 有关该系列的概述,请参阅 Azure Synapse Analytics 安全白皮书。
若要确保 Azure Synapse 的安全,有一系列网络安全选项需要考虑。
网络安全术语
此系列文章的开头部分提供了与网络安全相关的一些 Azure Synapse 关键术语的概述和定义。 阅读本文时,请牢记这些定义。
Synapse 工作区
Synapse 工作区是 Azure Synapse 提供的所有服务的安全逻辑集合。 它包括专用 SQL 池(以前称为 SQL DW)、无服务器 SQL 池、Apache Spark 池、管道和其他服务。 某些网络配置设置(例如用于数据外泄防护的 IP 防火墙规则、托管虚拟网络和已批准的租户)是在工作区级别进行配置和保护的。
Synapse 工作区终结点
终结点是用于访问服务的传入连接点。 每个 Synapse 工作区都包含三个不同的终结点:
- 用于访问专用 SQL 池的专用 SQL 终结点。
- 用于访问无服务器 SQL 池的无服务器 SQL 终结点。
- 用于访问工作区中 Apache Spark 池和管道资源的开发终结点。
这些终结点是在创建 Synapse 工作区时自动创建的。
Synapse Studio
Synapse Studio 是 Azure Synapse 的一个安全 Web 前端开发环境。 它支持多种角色,包括数据工程师、数据科学家、数据开发人员、数据分析师和 Synapse 管理员。
使用 Synapse Studio 可在 Azure Synapse 中执行各种数据和管理操作,例如:
- 连接到专用 SQL 池、无服务器 SQL 池,并运行 SQL 脚本。
- 在 Apache Spark 池上开发和运行笔记本。
- 开发和运行管道。
- 监视专用 SQL 池、无服务器 SQL 池、Apache Spark 池和管道作业。
- 管理工作区项的 Synapse RBAC 权限。
- 创建到数据源和接收器的托管专用终结点连接。
可以使用 Synapse Studio 建立与工作区终结点的连接。 此外,还可以创建专用终结点,以确保与工作区终结点的通信是专用的。
公用网络访问和防火墙规则
默认情况下,工作区终结点在预配时是公共终结点。 支持从任何公用网络(包括客户组织外部的网络)访问这些工作区终结点,而无需到 Azure 的 VPN 连接或 ExpressRoute 连接。
发往工作区终结点的所有流量(甚至通过公用网络)都是在传输过程中通过传输层安全性 (TLS) 协议进行加密和保护的。
若要保护任何敏感数据,建议完全禁用对工作区终结点的公共访问。 这样做可以确保所有工作区终结点只能通过专用终结点进行访问。
通过分配 Azure Policy,强制禁用对订阅或资源组中的所有 Synapse 工作区的公共访问。 还可以根据工作区处理的数据的敏感度,按工作区禁用公用网络访问。
但是,如果需要启用公共访问,强烈建议将 IP 防火墙规则配置为仅允许来自指定公共 IP 地址列表的入站连接。
如果本地环境没有到 Azure 的 VPN 访问或 ExpressRoute,并且需要访问工作区终结点,请考虑启用公共访问。 在这种情况下,请在 IP 防火墙规则中指定本地数据中心和网关的公共 IP 地址列表。
专用终结点
Azure 专用终结点是一个虚拟网络接口,其专用 IP 地址是在客户自己的 Azure 虚拟网络 (VNet) 子网中创建的。 可以为支持专用终结点的任何 Azure 服务创建专用终结点,例如 Azure Synapse、专用 SQL 池(以前称为 SQL DW)、Azure SQL 数据库、Azure 存储或 Azure 中由 Azure专用链接服务支持的任何服务。
可在 VNet 中分别为所有三个 Synapse 工作区终结点创建专用终结点。 这样做可以为 Synapse 工作区的三个终结点创建三个专用终结点:一个用于专用 SQL 池,一个用于无服务器 SQL 池,一个用于开发终结点。
与公共终结点相比,专用终结点具有许多安全优势。 Azure VNet 中的专用终结点只能从以下位置访问:
专用终结点的主要优势是不再需要将工作区终结点公开给公共 Internet。 风险越小越好。
下图描绘了专用终结点。
上图描绘了以下要点:
项目 | 描述 |
---|---|
客户 VNet 内的工作站访问 Azure Synapse 专用终结点。 | |
客户 VNet 与其他 VNet 之间进行对等互连。 | |
对等互连的 VNet 中的工作站访问 Azure Synapse 专用终结点。 | |
本地网络通过 VPN 或 ExpressRoute 访问 Azure Synapse 专用终结点。 | |
工作区终结点通过专用终结点使用 Azure 专用链接服务映射到客户的 VNet。 | |
Synapse 工作区禁用公共访问。 |
在下图中,专用终结点映射到 PaaS 资源的某个实例,而不是映射到整个服务。 如果网络中出现安全事件,则只公开映射的资源实例,最大程度地降低数据泄露和渗透的风险和威胁。
上图描绘了以下要点:
项目 | 描述 |
---|---|
客户 VNet 中的专用终结点映射到工作区 A 中单个专用 SQL 池(以前称为 SQL DW)终结点。 | |
其他工作区(B 和 C)中的其他 SQL 池终结点无法通过此专用终结点访问,从而将风险降至最低。 |
专用终结点跨 Microsoft Entra 租户和区域工作,因此可以跨租户和区域创建到 Synapse 工作区的专用终结点连接。 在本例中,它将通过专用终结点连接批准工作流。 资源所有者控制要批准或拒绝哪些专用终结点连接。 资源所有者完全控制谁可以连接到他们的工作区。
下图描绘了专用终结点连接审批工作流。
上图描绘了以下要点:
项目 | 描述 |
---|---|
租户 A 的工作区 A 中的专用 SQL 池(以前称为 SQL DW)通过租户 A 中客户 VNet 中的专用终结点访问。 | |
租户 A 的工作区 A 中的同一专用 SQL 池(以前称为 SQL DW)由租户 A 中客户 VNet 中的专用终结点通过连接审批工作流访问。 |
托管 VNet
Synapse 托管 VNet 功能为 Synapse 工作区之间的 Apache Spark 池和管道计算资源提供完全托管的网络隔离。 该功能可以在创建工作区时配置。 此外,它还为同一工作区中的 Spark 群集提供网络隔离。 每个工作区都自己的虚拟网络,完全由 Synapse 托管。 托管 VNet 不对用户可见,因此他们无法进行任何修改。 Azure Synapse 在托管 VNet 中启动的任何管道或 Apache Spark 池计算资源均预配在自己的 VNet 中。 这样可以实现与其他工作区的完全网络隔离。
使用此配置,无需创建和管理 Apache Spark 池和管道资源的 VNet 和网络安全组,因为这通常是通过 VNet 注入来完成的。
因此,Synapse 工作区中的多租户服务(例如专用 SQL 池和无服务器 SQL 池)不会预配在托管 VNet 内。
下图描述了工作区 A 和 B 的两个托管 VNet 之间的网络隔离,以及这两个托管 VNet 中的 Apache Spark 池和管道资源。
托管专用终结点连接
使用托管专用终结点连接,可以安全无缝地连接到支持专用链接的任何 Azure PaaS 服务,无需从客户的 VNet 为该服务创建专用终结点。 Synapse 会自动创建和管理专用终结点。 Synapse 托管 VNet 内预配的计算资源(如 Apache Spark 池和管道资源)使用这些连接,以私密方式连接到 Azure PaaS 服务。
例如,如果要从管道以私密方式连接到 Azure 存储帐户,常用方法是为存储帐户创建专用终结点,然后使用自承载集成运行时连接到存储专用终结点。 借助 Synapse 托管 VNet,只需创建直接到该存储帐户的托管专用终结点连接,即可使用 Azure 集成运行时以私密方式连接到存储帐户。 此方法无需使用自承载集成运行时即可以私密方式连接到 Azure PaaS 服务。
因此,Synapse 工作区中的多租户服务(例如专用 SQL 池和无服务器 SQL 池)不会预配在托管 VNet 内。 因此,他们不使用在工作区中创建的托管专用终结点连接进行出站连接。
下图描绘了从工作区 A 中的托管 VNet 连接到 Azure 存储帐户的托管专用终结点。
高级 Spark 安全性
托管 VNet 还为 Apache Spark 池用户提供一些额外的优势。 与 VNet 注入中的操作一样,无需担心如何配置固定的子网地址空间。 Azure Synapse 自动负责为工作负载动态分配这些地址空间。
此外,Spark 池还作为作业群集运行。 这意味着每个用户在与工作区交互时都会获得自己的 Spark 群集。 在工作区中创建 Spark 池是在执行 Spark 工作负载时将分配给用户的元数据信息。 这意味着每个用户将在托管 VNet 内的专用子网中获得自己的 Spark 群集来执行工作负载。 同一用户的 Spark 池会话在同一计算资源上执行。 通过提供此功能,有三大主要优势:
- 由于实现了基于用户的工作负载隔离,安全性更高。
- 减少近邻干扰。
- 性能更高。
数据外泄防护
使用托管 VNet 的 Synapse 工作区具有名为数据外泄防护的附加安全功能。 它可保护所有服务(包括专用 SQL 池、无服务器 SQL 池、Apache Spark 池和管道)从 Azure Synapse 传出的所有出口流量。 它是通过在工作区级别(创建工作区时)启用数据外泄防护来配置的,可将出站连接限制到允许的 Microsoft Entra 租户列表。 默认情况下,只有工作区的主租户会添加到列表中,但可以在创建工作区后随时添加或修改 Microsoft Entra 租户列表。 添加其他租户是一项高特权操作,需要提升的 Synapse 管理员角色。 它可有效地控制数据从 Azure Synapse 外泄到其他组织和租户,而无需实施复杂的网络安全策略。
对于启用了数据外泄防护的工作区,Synapse 管道和 Apache Spark 池必须对其所有出站连接使用托管专用终结点连接。
专用 SQL 池和无服务器 SQL 池不使用托管专用终结点进行出站连接;但是,SQL 池的任何出站连接只能连接到已批准的目标(即托管专用终结点连接的目标)。
Synapse Studio 的专用链接中心
Synapse 专用链接中心允许使用 Azure 专用链接从客户的 VNet 安全地连接到 Synapse Studio。 对于希望在受控和受限环境中使用 Synapse Studio 访问 Synapse 工作区的客户,此功能非常有用,可在该环境中将出站 Internet 流量限制到一组有限的 Azure 服务。
实现方式是从 VNet 创建专用链接中心资源和指向此中心的专用终结点。 然后,使用此专用终结点,通过完全限定的域名 (FQDN) web.azuresynapse.azure.cn 以及来自 VNet 的专用 IP 地址访问工作室。 专用链接中心资源通过 Azure 专用链接将 Synapse Studio 的静态内容下载到用户的工作站。 此外,必须为各个工作区终结点创建单独的专用终结点,以确保与工作区终结点的通信是专用的。
下图描绘了 Synapse Studio 的专用链接中心。
上图描绘了以下要点:
项目 | 描述 |
---|---|
受限客户 VNet 中的工作站使用 Web 浏览器访问 Synapse Studio。 | |
使用为专用链接中心资源创建的专用终结点通过 Azure 专用链接下载静态工作室内容。 | |
为 Synapse 工作区终结点创建的专用终结点使用 Azure 专用链接安全地访问工作区资源。 | |
受限客户 VNet 中的网络安全组规则允许出站流量通过端口 443 路由到一组有限的 Azure 服务,例如 Azure 资源管理器、Azure Front Door 和 Microsoft Entra ID。 | |
受限客户 VNet 中的网络安全组规则拒绝来自 VNet 的所有其他出站流量。 | |
Synapse 工作区禁用公共访问。 |
专用 SQL 池(之前称为 SQL DW)
在 Azure Synapse 产品/服务推出之前,提供了名为 SQL DW 的 Azure SQL 数据仓库产品。 该产品现在已重命名为专用 SQL 池(以前称为 SQL DW)。
专用 SQL 池(以前称为 SQL DW)是在逻辑 Azure SQL 服务器中创建的。 它是一个安全逻辑构造,充当一系列数据库(包括 SQL DW 和其他 Azure SQL 数据库)的中心管理点。
本文前面部分针对 Azure Synapse 讨论的主要网络安全功能也适用于专用 SQL 池(以前称为 SQL DW)。 它们包括:
- IP 防火墙规则
- 禁用公用网络访问
- 专用终结点
- 通过出站防火墙规则的数据外泄防护
由于专用 SQL 池(以前称为 SQL DW)是多租户服务,因此不在托管 VNet 中预配。 这意味着某些功能(如托管 VNet 和托管专用终结点连接)不适用。
网络安全功能矩阵
下面的对照表简要概述了 Azure Synapse 产品/服务支持的网络安全功能:
功能 | Azure Synapse:Apache Spark 池 | Azure Synapse:专用 SQL 池 | Azure Synapse:无服务器 SQL 池 | 专用 SQL 池(之前称为 SQL DW) |
---|---|---|---|---|
IP 防火墙规则 | 是 | 是 | 是 | 是 |
禁用公共访问 | 是 | 是 | 是 | 是 |
专用终结点 | 是 | 是 | 是 | 是 |
数据外泄防护 | 是 | 是 | 是 | 是 |
使用 Synapse Studio 实现安全访问 | 是 | 是 | 是 | 否 |
使用 Synapse 专用链接中心从受限网络访问 | 是 | 是 | 是 | 否 |
托管 VNet 和工作区级别网络隔离 | 是 | 空值 | 不可用 | 空值 |
用于出站连接的托管专用终结点连接 | 是 | 空值 | 不可用 | 空值 |
用户级别网络隔离 | 是 | 空值 | 不可用 | 不适用 |
后续步骤
在本白皮书系列的下一篇文章中,了解威胁防护。