Compartir a través de

在 Microsoft Purview 中发现和治理 Azure SQL 数据库

本文概述在 Microsoft Purview 中注册 Azure SQL 数据库源的过程。 其中包括有关对 SQL 数据库进行身份验证和与其交互的说明。

支持的功能

元数据提取 完全扫描 增量扫描 限定范围扫描 分类 访问策略 沿袭
是(预览版)

扫描 Azure SQL 数据库时,Microsoft Purview 支持从以下源提取技术元数据:

  • 服务器
  • 数据库
  • 架构
  • 表,包括列
  • 视图,包括列(启用了世系提取,作为扫描的一部分)
  • 存储过程(启用了世系提取)
  • 存储过程运行(启用了世系提取)

在设置扫描时,可在提供数据库名称后根据需要选择表和视图,从而进一步限定扫描范围。

已知的限制

  • 对于存储过程的世系提取
    • 如果 Azure 中的逻辑服务器禁用了公共访问或不允许 Azure 服务访问它,则目前不支持存储过程 (SP) 世系提取扫描。
    • 如果 Microsoft Purview 帐户禁用了公共访问,则目前不支持 SP 世系提取扫描。
    • 默认情况下,SP 世系提取扫描计划为每六小时运行一次。 无法更改该频率。
    • 仅当存储过程执行将数据从一个表传输到另一个表时,才会捕获世系。 临时表不支持它。
    • 函数或触发器不支持世系提取。
    • 请注意,由于以下限制,如果存在此类情况,当前可能会在目录中看到重复的资产。
      • 资产中的对象名称和完全限定的名称遵循存储过程语句中使用的大小写,这可能与原始数据源中的对象大小写不一致。
      • 当存储过程中引用了 SQL 视图时,目前将以 SQL 表的形式捕获这些视图。

注意

如果在 Azure 数据工厂复制和数据流活动中将 Azure SQL 表或视图用作源/接收器,则也支持世系。

先决条件

注册数据源

在扫描之前,必须在 Microsoft Purview 中注册数据源:

  1. 使用以下方法打开 Microsoft Purview 治理门户:

  2. 导航到“数据映射”。

    显示可在其中打开 Microsoft Purview 治理门户的区域的屏幕截图。

  3. 通过转到“集合”并选择“添加集合”来创建集合层次结构。 需要为各个子集合分配权限。

    显示用于为集合层次结构分配访问控制权限的选项的屏幕截图。

  4. 转到“源”下的相应集合,然后选择“注册”图标以注册新的 SQL 数据库。

    显示用于注册数据源的集合的屏幕截图。

  5. 选择“Azure SQL 数据库”数据源,然后选择“继续”。

  6. 对于“名称”,请为数据源提供合适的名称。 依次选择 Azure 订阅的相关名称、“服务器名称”、“选择集合”、“应用”。

    显示为注册数据源而输入的详细信息的屏幕截图。

  7. 确认 SQL 数据库显示在选定的集合下。

    显示映射到集合以启动扫描的数据源的屏幕截图。

更新防火墙设置

如果数据库服务器上启用了防火墙,则需要更新防火墙,允许通过以下方式之一进行访问:

有关防火墙的详细信息,请参阅 Azure SQL 数据库防火墙文档

允许 Azure 连接

启用 Azure 连接可使 Microsoft Purview 能够连接到服务器,而无需由你更新防火墙本身。

  1. 转到你的数据库帐户。
  2. 在“概述”页上选择服务器名称。
  3. 选择“安全性”>“网络”。
  4. 对于“允许 Azure 服务和资源访问此服务器”,请选择“是”。

显示 Azure 门户中用于允许与服务器建立 Azure 连接的选项的屏幕截图。

有关允许从 Azure 内部建立连接的详细信息,请参阅操作指南

安装自承载集成运行时

可在计算机上安装自承载集成运行时,以连接到专用网络中的资源:

  1. 选择适合你的应用场景的集成运行时
  2. 创建并安装集成运行时:
  3. 检查数据库服务器的网络配置,确认包含自承载集成运行时的计算机是否可以访问专用终结点。 如果计算机没有访问权限,请添加该计算机的 IP 地址。
  4. 如果逻辑服务器位于专用终结点后面或虚拟网络中,则你可使用引入专用终结点来确保端到端网络隔离。

为扫描配置身份验证

若要扫描数据源,需要在 Azure SQL 数据库中配置身份验证方法。

重要

如果使用自承载集成运行时连接到资源,系统分配和用户分配的托管标识将不起作用。 需要使用服务主体身份验证或 SQL 身份验证。

Microsoft Purview 支持以下选项:

  • 系统分配的托管标识 (SAMI)(建议)。 这是直接与你的 Microsoft Purview 帐户关联的标识。 该标识允许直接对其他 Azure 资源进行身份验证,而无需管理设置的中间用户或凭据。

    SAMI 是在创建 Microsoft Purview 资源时创建的。 它由 Azure 管理,并使用你的 Microsoft Purview 帐户名称。 SAMI 当前不能与 Azure SQL 自承载集成运行时一起使用。

    有关详细信息,请参阅托管标识概述

  • 用户分配的托管标识 (UAMI)(预览版)。 与 SAMI 类似,UAMI 是一个凭据资源,它允许 Microsoft Purview 对 Microsoft Entra ID 进行身份验证。

    UAMI 由 Azure 中的用户管理,而不是由 Azure 本身管理,这样你可以更好地控制安全性。 UAMI 当前不能与 Azure SQL 自承载集成运行时一起使用。

    有关详细信息,请参阅用户分配的托管标识指南

  • 服务主体。 服务主体是一个应用程序,可以像任何其他组或用户一样分配权限,而无需与人员直接关联。 服务主体的身份验证具有过期日期,因此它可用于临时项目。

    有关详细信息,请参阅服务主体文档

  • SQL 身份验证。 使用用户名和密码连接到 SQL 数据库。 有关详细信息,请参阅 SQL 身份验证文档

    如果需要创建登录名,请按照此指南查询 SQL 数据库。 使用此指南通过 T-SQL 创建登录名

    注意

    请务必选择页面上的“Azure SQL 数据库”选项。

有关对 SQL 数据库进行身份验证的步骤,请从下面的选项卡中选择你所选的身份验证方法。

备注

只有服务器级别主体登录(由预配过程创建)或 master 数据库中的 loginmanager 数据库角色成员可以创建新的登录。 在获取权限后,Microsoft Purview 帐户应该能够扫描资源大约 15 分钟。

  1. 需要具有 SQL 登录名,该登录名需至少具有能够访问 Microsoft Purview 扫描数据库所需信息的 db_datareader 权限。 可以按照创建登录名中的说明为 Azure SQL 数据库创建登录名。 保存用户名和密码,以便在后续步骤中使用。

  2. 在 Azure 门户中转到你的密钥保管库。

  3. 选择“设置”>“机密”,然后选择“+ 生成/导入”。

    显示用于生成机密的密钥保管库选项的屏幕截图。

  4. 对于“名称”和“值”,请分别使用 SQL 数据库中的用户名和密码。

  5. 选择“创建”。

  6. 如果密钥保管库尚未连接到 Microsoft Purview,请创建新的密钥保管库连接

  7. 使用密钥创建新凭据以设置扫描。

    显示用于设置凭据的密钥保管库选项的屏幕截图。

    显示用于创建机密的密钥保管库选项的屏幕截图。

创建扫描

  1. 打开你的 Microsoft Purview 帐户,选择“打开 Microsoft Purview 治理门户”。

  2. 转到“数据映射”>“源”查看集合层次结构。

  3. 在前面注册的 SQL 数据库下,选择“新建扫描”图标。

    显示用于创建新扫描的窗格的屏幕截图。

若要详细了解 Azure SQL 数据库中的存储过程数据世系,请参阅本文的提取世系(预览版)部分。

对于扫描步骤,请从以下选项卡中选择身份验证方法。

  1. 对于“名称”,请提供扫描的名称。

  2. 对于“数据库选择方法”,请选择“手动输入”。

  3. 对于“数据库名称”和“凭据”,请输入前面创建的值。

    显示用于运行扫描的 SQL 身份验证选项的数据库和凭据信息的屏幕截图。

  4. 对于“选择连接”,请选择适合用于扫描的集合。

  5. 选择“测试连接”以验证连接。 连接成功后,选择“继续”。

限定扫描范围并运行扫描

  1. 可以通过选择列表中相应的项,将扫描范围限定到特定的数据库对象。

    显示用于限定扫描范围的选项的屏幕截图。

  2. 选择扫描规则集。 可以使用系统默认设置、从现有的自定义规则集中选择,或以内联方式创建新规则集。 完成后,选择“继续”。

    显示用于选择扫描规则集的选项的屏幕截图。

    如果你选择“新建扫描规则集”,则会打开一个窗格,可在其中输入源类型、规则集的名称和说明。 完成后,选择“继续”。

    显示用于创建新扫描规则集的信息的屏幕截图。

    对于“选择分类规则”,请选择要包含在扫描规则集中的分类规则,然后选择“创建”。

    显示扫描规则集的分类规则列表的屏幕截图。

    新的扫描规则集随后会出现在可用规则集列表中。

    显示选择新扫描规则集的屏幕截图。

  3. 选择扫描触发器。 可以设置一个计划或运行一次扫描。

  4. 查看扫描,然后选择“保存并运行”。

查看扫描

若要检查扫描状态,请转到集合中的数据源,然后选择“查看详细信息”。

显示用于查看扫描详细信息的按钮的屏幕截图。

扫描详细信息在“上次运行状态”中指示扫描进度,并会指示已扫描和已分类的资产数量。 整个扫描成功运行后,“上次运行状态”将更新为“正在进行”,然后更新为“已完成”。

显示上次扫描运行的已完成状态的屏幕截图。

管理扫描

运行扫描后,可以使用运行历史记录来管理它:

  1. 在“最近的扫描”下选择一个扫描。

    显示选择一个最近完成的扫描的屏幕截图。

  2. 在运行历史记录中,可以选择再次运行扫描、编辑扫描或删除扫描。

    显示用于运行、编辑和删除扫描的选项的屏幕截图。

    如果选择了“立即运行扫描”以重新运行扫描,可以选择“增量扫描”或“完全扫描”。

    显示完全扫描或增量扫描选项的屏幕截图。

排查扫描问题

如果在扫描时遇到问题,请尝试按照以下提示解决:

有关详细信息,请参阅排查 Microsoft Purview 中的连接问题

设置策略

此数据资源支持以下类型的 Microsoft Purview 策略:

  • 自助服务策略 - 允许用户请求访问注册到 Microsoft Purview 的数据源的策略。
  • DevOps 策略 - 授予对多个源的数据库系统元数据的访问权限。 这些策略简化了 IT 运营和安全审核人员的访问权限预配。 这些策略仅授予访问权限,不拒绝访问权限。

Azure SQL 数据库的访问策略先决条件

区域支持

支持所有 Microsoft Purview 区域

为 Microsoft Purview 中的策略配置 Azure SQL 数据库实例

要使与 Azure SQL 数据库关联的逻辑服务器遵循 Microsoft Purview 中的策略,需要配置一个 Microsoft Entra 管理员。在 Azure 门户中,转到托管 Azure SQL 数据库实例的逻辑服务器。 在侧菜单上,选择“Microsoft Entra ID”。 将管理员名称设置为你偏好的任何 Microsoft Entra 用户或组,然后选择“保存”

然后,在边侧菜单中选择“标识”。 在“系统分配的托管标识”下,将状态切换为“打开”,然后选择“保存”。

显示将系统分配的托管标识分配到与 Azure SQL 数据库关联的逻辑服务器的屏幕截图。

为策略配置 Microsoft Purview 帐户

在 Microsoft Purview 中注册数据源

你必须先在 Microsoft Purview Studio 中注册一个数据资源,然后才能在 Microsoft Purview 中为该数据资源创建策略。 本指南稍后将会提供与注册数据资源相关的说明。

注意

Azure Purview 策略依赖于数据资源 ARM 路径。 如果数据资源移动到新的资源组或订阅,则需要先将它取消注册,然后在 Microsoft Purview 中重新注册它。

配置权限以启用数据源上的数据策略实施

注册资源后,必须在 Microsoft Purview 中为该资源创建策略之前配置权限。 需要具有一组权限才能启用“数据策略实施”。 这适用于数据源、资源组或订阅。 若要启用“数据策略实施”,则必须同时拥有对资源的特定标识和访问管理 (IAM) 特权以及特定的 Microsoft Purview 特权:

  • 你必须在资源的 Azure 资源管理器路径或其任何父路径上拥有以下任一 IAM 角色组合(即使用 IAM 权限继承):

    • IAM“所有者”
    • IAM“参与者”和 IAM“用户访问管理员”

    若要配置 Azure 基于角色的访问控制 (RBAC) 权限,请按照指南进行操作。 以下屏幕截图显示了如何访问 Azure 门户中的访问控制部分,以便为数据资源添加角色分配。

    显示Azure门户中用于添加角色分配的部分的截图。

    注意

    可以从父资源组、订阅或订阅管理组继承数据源的 IAM 所有者角色。 检查哪些 Microsoft Entra 用户、组和服务主体保留或正在继承资源的“IAM 所有者”角色。

  • 你还需要有集合或父集合(如果启用了继承)的 Microsoft Purview 数据源管理员角色。 有关详细信息,请参阅有关管理 Microsoft Purview 角色分配的指南。

    以下屏幕截图显示了如何在根集合级别分配数据源管理员角色。

    显示在根集合级别分配数据源管理员角色的选项的屏幕截图。

配置 Microsoft Purview 权限以创建、更新或删除访问策略

若要创建、更新或删除策略,你需要在 Microsoft Purview 中的根集合级别获取“策略创建者”角色:

  • “策略创建者”角色可以创建、更新以及删除 DevOps 和数据所有者策略。
  • 策略创建者角色可以删除自助服务访问策略。

有关管理 Microsoft Purview 角色分配的详细信息,请参阅在Microsoft Purview 数据映射中创建和管理集合

注意

必须在根集合级别配置“策略创建者”角色。

此外,为了在创建或更新策略主题时能够轻松搜索 Microsoft Entra 用户或组,在 Microsoft Entra ID 中获取目录读取者权限可为你提供极大的帮助。 这是 Azure 租户中用户的常见权限。 如果没有目录读取者权限,策略创建者必须键入数据策略主题中包含的所有主体的完整用户名或电子邮件地址。

将访问预配责任委托给 Microsoft Purview 中的角色

在为某个资源启用“数据策略实施”后,任何在根集合级别具有“策略创建者”角色的 Microsoft Purview 用户都可以从 Microsoft Purview 预配对该数据源的访问权限。

注意

任何 Microsoft Purview 根集合管理员都可以将新用户分配到根“策略创建者”角色。 任何集合管理员都可以将新用户分配到该集合下的“数据源管理员”角色。 最大程度地减少具有 Microsoft Purview 集合管理员、数据源管理员或策略创建者角色的用户并对其仔细审查。

如果带有已发布策略的 Microsoft Purview 帐户被删除,则此类策略将在一段时间内停止强制执行,具体取决于特定数据源。 此更改可能对安全性和数据访问可用性都有影响。 IAM 中的参与者角色和所有者角色可以删除 Microsoft Purview 帐户。 可以通过转到 Microsoft Purview 帐户的访问控制 (IAM) 部分并选择“角色分配”来检查这些权限。 还可以使用锁以防止 Microsoft Purview 帐户通过 Azure 资源管理器锁被删除。

注册数据源并启用数据策略强制实施

必须先向 Microsoft Purview 注册 Azure SQL 数据库资源,然后才能创建访问策略。 若要注册资源,请按照在 Microsoft Purview 源上启用数据策略强制实施中的“先决条件”和“注册数据源”部分进行操作。

注册数据源后,需要启用“数据策略强制实施”。 这是一个先决条件,只能满足此条件才能在数据源上创建策略。 数据策略强制实施可能会影响数据的安全性,因为它会委托某些 Microsoft Purview 角色管理对数据源的访问权限。 实施在 Microsoft Purview 源上启用数据策略强制实施中的安全做法。

将数据源的“数据策略强制实施”选项设置为“已启用”后,数据源的情况如以下屏幕截图所示:

屏幕截图显示了用于为策略注册数据源的面板,其中包括名称、服务器名称和数据策略强制实施的区域。

返回到 Azure SQL 数据库的 Azure 门户,验证它现在是否由 Microsoft Purview 治理:

  1. 通过此链接登录到 Azure 门户

  2. 选择要配置的 Azure SQL Server。

  3. 转到左窗格上的“Microsoft Entra ID”

  4. 向下滚动到“Microsoft Purview 访问策略”。

  5. 选择“检查 Microsoft Purview 治理”对应的按钮。 等待请求处理完成。 这可能需要几分钟时间。

    显示 Azure SQL 由 Microsoft Purview 治理的屏幕截图。

  6. 确认 Microsoft Purview 治理状态是否显示为 Governed。 请注意,在 Microsoft Purview 中启用“数据策略强制实施”后,可能需要经过几分钟才会反映正确的状态

注意

如果为此 Azure SQL 数据库数据源禁用了“数据策略强制实施”,则 Microsoft Purview 治理状态最长可能需要经过 24 小时才会自动更新为 Not Governed。 可以通过选择“检查 Microsoft Purview 治理”来加速状态更新。 在为另一个 Microsoft Purview 帐户中的数据源启用“数据策略强制实施”之前,请确保 Purview 治理状态显示为 Not Governed。 然后使用新的 Microsoft Purview 帐户重复上述步骤。

创建访问策略

若要为 Azure SQL 数据库创建访问策略,请遵循以下指南:

若要创建涵盖资源组或 Azure 订阅中所有数据源的策略,请参阅在 Microsoft Purview 中发现和治理多个 Azure 源

提取世系(预览版)

Microsoft Purview 支持 Azure SQL 数据库的视图和存储过程的世系。 虽然在扫描过程中支持视图世系,但设置扫描时,需要打开世系提取开关来提取存储过程世系。

注意

目前不支持使用自承载集成运行时或托管 VNET 运行时和 Azure SQL 专用终结点提取世系。 你需要支持 Azure 服务访问 Azure SQL 数据库网络设置下的服务器,并且 Microsoft Purview 帐户需要允许公共访问。 详细了解世系提取扫描中的已知限制

SQL DB 视图的世系

从 2024 年 6 月 30 日开始,SQL DB 元数据扫描将包括视图的世系提取。 只有新的扫描才会包括视图世系提取。 系统会在所有扫描级别 (L1/L2/L3) 提取世系。 如果是增量扫描,在增量扫描的过程中,无论扫描了何种元数据,系统都会提取表/视图的相应静态世系。

显示 SQL DB 视图的世系详细信息的屏幕截图。

使用 SP 世系提取设置扫描的先决条件

  1. 按照本文的为扫描配置身份验证部分中的步骤,授权 Microsoft Purview 扫描你的 SQL 数据库。

  2. 使用你的 Microsoft Entra 帐户登录到 Azure SQL 数据库,并将 db_owner 权限分配给 Microsoft Purview 托管标识。

    注意

    需要“db_owner”权限,因为世系基于 XEvent 会话。 因此 Microsoft Purview 需要可在 SQL 中管理 XEvent 会话的权限。

    使用以下示例 SQL 语法创建用户并授予权限。 将 <purview-account> 替换为你的帐户名称。

    Create user <purview-account> FROM EXTERNAL PROVIDER
    GO
    EXEC sp_addrolemember 'db_owner', <purview-account> 
    GO
    
  3. 对 SQL 数据库运行以下命令以创建主密钥:

    Create master key
    Go
    
  4. 确保在 Azure SQL 资源的网络/防火墙中启用“允许 Azure 服务和资源访问此服务器”。

在打开世系提取的情况下创建扫描

  1. 在用于设置扫描的窗格中,将“启用世系提取”切换为打开状态。

    显示用于创建新扫描的窗格的屏幕截图,其中已打开世系提取。

  2. 按照本文的创建扫描部分中的步骤选择身份验证方法。

  3. 成功设置扫描后,名为“世系提取”的新扫描类型将每隔六小时运行一次增量扫描,以从 Azure SQL 数据库中提取世系。 世系是根据 SQL 数据库中的存储过程运行提取的。

    显示每隔六小时运行一次世系提取的屏幕截图。

搜索 Azure SQL 数据库资产并查看运行时世系

可以浏览数据目录搜索数据目录,以查看 Azure SQL 数据库的资产详细信息。 以下步骤介绍如何查看运行时世系详细信息:

  1. 转到资产的“世系”选项卡。 如果适用,资产世系会显示在此处。

    显示存储过程中的世系详细信息的屏幕截图。

    如果适用,可以进一步向下钻取以查看存储过程中 SQL 语句级别的世系,以及列级世系。 将自承载集成运行时用于扫描时,从版本 5.25.8374.1 开始,支持在扫描期间检索世系向下钻取信息。

    显示存储过程世系向下钻取的屏幕截图。

    有关支持的 Azure SQL 数据库世系方案的信息,请参阅本文的支持的功能部分。 有关世系的一般详细信息,请参阅 Microsoft Purview 中的数据世系Microsoft Purview 数据目录世系用户指南

  2. 转到存储过程资产。 在“属性”选项卡上,转到“相关资产”以获取存储过程的最新运行详细信息。

    显示存储过程属性的运行详细信息的屏幕截图。

  3. 选择“运行”旁边的存储过程超链接,查看“Azure SQL 存储过程运行”概述。 转到“属性”选项卡,查看存储过程中的增强运行时信息,例如“executedTime”、“rowCount”和“客户端连接”。

    显示存储过程的运行属性的屏幕截图。

针对存储过程的世系提取的故障排除

以下提示可帮助你解决与世系相关的问题:

  • 如果在成功运行“世系提取”后未捕获任何世系,则原因可能是自设置扫描以来,尚未运行任何存储过程至少一次。
  • 将捕获成功设置扫描后发生的存储过程运行的世系。 不会捕获以往的存储过程运行的世系。
  • 如果你的数据库正在处理具有大量存储过程运行的繁重工作负载,则世系提取只会筛选最近的运行。 存储过程将在六小时时段的早期运行,否则不会提取创建繁重查询负载的运行实例。 如果缺少任何存储过程运行的世系,请与支持人员联系。
  • 如果存储过程包含 drop 或 create 语句,则当前不会在世系中捕获它们

后续步骤

若要详细了解 Microsoft Purview 和数据,请使用以下指南: