Azure Synapse Analytics 安全白皮书:访问控制

注意

本文是“Azure Synapse Analytics 安全白皮书”系列文章的一部分。 有关该系列的概述,请参阅 Azure Synapse Analytics 安全白皮书

数据治理和访问控制可能要求开发人员和安全管理员使用不同方法或技术组合来实现可靠的安全基础,具体取决于数据的建模和存储方式。

Azure Synapse 支持使用广泛的功能来控制谁可以访问数据以及可以访问哪些数据。 这些功能是基于一组高级访问控制功能构建的,其中包括:

对象级安全性

专用 SQL 池中的每个对象都有可以授予主体的关联权限。 在用户和服务帐户的上下文中,这就是单独的表、视图、存储过程和函数的保护方式。 可以将对象权限(如 SELECT)授予用户帐户(SQL 登录名、Microsoft Entra 用户或组)和数据库角色,为数据库管理员带来灵活性。 此外,还可以将在表和视图上授予的权限与其他访问控制机制(如列级别安全性、行级别安全性和动态数据掩码,见下)结合使用。

在 Azure Synapse 中,所有权限都授予数据库级别用户和角色。 此外,在工作区级别获得内置 Synapse 管理员 RBAC 角色的任何用户都将自动获得对所有专用 SQL 池的完全访问权限。

除了保护 Azure Synapse 中的 SQL 表之外,也可以保护专用 SQL 池(以前称为 SQL DW)、无服务器 SQL 池和 Spark 的表。 默认情况下,如果用户在笔记本中以交互方式执行代码,则分配给已连接到工作区的数据湖的“存储 Blob 数据参与者”角色的用户在所有 Spark 创建的表上都具有读取、写入和执行权限。 它称为 Microsoft Entra 直通,适用于连接到工作区的所有数据湖。 但是,如果同一用户通过管道执行同一笔记本,则可将工作区托管服务标识 (MSI) 用于身份验证。 因此,若要使管道成功执行工作区 MSI,它还必须属于所访问的数据湖的“存储 Blob 数据参与者”角色。

行级安全性

利用行级别安全性,安全管理员可以根据运行某个查询的用户(或进程)的配置文件,建立并控制对特定表行的精细访问权限。 配置文件或用户特征可引用组成员身份或执行上下文。 如果用户从相同的表中查询数据,但必须查看不同的数据子集,则行级别安全性有助于防止未经授权的访问。

备注

行级别安全性在 Azure Synapse 和专用 SQL 池(以前称为 SQL DW)中受支持,但在 Apache Spark 池和无服务器 SQL 池中不受支持。

行级别安全性

使用列级别安全性,安全管理员可以设置权限,以限制能够访问表中敏感列的用户。 它在数据库级别设置,可以在不需更改数据模型或应用层的设计的情况下实现。

注意

Azure Synapse、无服务器 SQL 池视图和专用 SQL 池(以前称为 SQL DW)支持列级安全性,但无服务器 SQL 池外部表和 Apache Spark 池不支持列级安全性。 对于无服务器 SQL 池,可以通过在外部表之上创建视图来应用外部表解决方法。

动态数据屏蔽

使用动态数据掩码,安全管理员可以通过在将数据读取到非特权用户时屏蔽敏感数据来限制敏感数据曝光。 它通过允许管理员决定数据在查询时的显示方式,来防止对敏感数据的未经授权的访问。 查询会返回已屏蔽的或未屏蔽的数据,具体取决于经身份验证的用户的标识及其在 SQL 池中的组分配情况。 无论是直接从表中访问数据,还是通过视图或存储过程来访问数据,都将始终应用掩码。

备注

动态数据掩码在 Azure Synapse 和专用 SQL 池(以前称为 SQL DW)中受支持,但在 Apache Spark 池和无服务器 SQL 池中不受支持。

Synapse 基于角色的访问控制

Azure Synapse 还包括 Synapse 基于角色的访问控制 (RBAC) 角色,用于管理 Synapse Studio 的不同方面。 利用这些内置角色向用户、组或其他安全主体分配权限,以管理谁可以执行以下操作:

  • 发布代码项目以及列出或访问已发布的代码项目。
  • 在 Apaches Spark 池和集成运行时上执行代码。
  • 访问受凭据保护的链接(数据)服务。
  • 监视或取消作业执行、查看作业输出和执行日志。

后续步骤

在本白皮书系列的下一篇文章中,了解身份验证。