在 Microsoft Purview 中连接和管理 Azure Synapse Analytics 工作区

本文概述了如何注册 Azure Synapse Analytics 工作区。 它还介绍了如何在 Microsoft Purview 中对 Azure Synapse Analytics 工作区进行身份验证和交互。 有关 Microsoft Purview 的详细信息,请阅读 介绍性文章

支持的功能

元数据提取 完整扫描 增量扫描 作用域扫描 分类 标记 访问策略 血统 数据共享 实时视图
是 - 管道

目前不支持Azure Synapse Analytics 湖数据库。

对于外部表,Azure Synapse Analytics 当前不会捕获这些表与其原始文件的关系。

先决条件

注册

以下过程介绍如何使用 Microsoft Purview 治理门户在 Microsoft Purview 中注册 Azure Synapse Analytics 工作区。

只有至少在 Azure Synapse Analytics 工作区中具有数据读取者角色并且也是 Microsoft Purview 中数据源管理员的用户才能注册Azure Synapse Analytics 工作区。

  1. 打开 Microsoft Purview 治理门户 并选择 Microsoft Purview 帐户。

    或者,转到Azure 门户,搜索并选择 Microsoft Purview 帐户,然后选择 Microsoft Purview 治理门户按钮。

  2. 在左窗格中,选择“ ”。

  3. 选择“注册”。

  4. 在“注册源”下,选择“Azure Synapse Analytics (多个)

  5. 选择 继续

    Microsoft Purview 中所选源的屏幕截图,包括 Azure Synapse Analytics。

  6. “ (Azure Synapse Analytics) 注册源”页上,执行以下操作:

    1. 对于 “名称”,输入数据目录中要列出的数据源的名称。

    2. (可选)对于 Azure 订阅,选择要筛选到的订阅。

    3. 对于 “工作区名称”,请选择正在使用的工作区。

      根据工作区选择自动填充 SQL 终结点的框。

    4. 对于 “选择集合”,请选择正在使用的集合,或创建一个新集合。

    5. 选择“ 注册 ”以完成数据源的注册。

    用于输入有关Azure Synapse源的详细信息的页面的屏幕截图。

扫描

使用以下步骤扫描 Azure Synapse Analytics 工作区,以自动识别资产并对数据进行分类。 有关一般扫描的详细信息,请参阅 Microsoft Purview 中的扫描和引入

  1. 设置用于枚举 专用无服务器 资源的身份验证。 此步骤将允许 Microsoft Purview 枚举工作区资产并执行扫描。
  2. 应用 权限以扫描工作区的内容
  3. 确认 网络已设置为允许 Microsoft Purview 访问

枚举身份验证

使用以下过程设置身份验证。 必须是所有者或用户访问管理员才能添加指定的角色。

用于枚举专用 SQL 数据库资源的身份验证

  1. 在Azure 门户,转到 Azure Synapse Analytics 工作区资源。
  2. 在左窗格中,选择“访问控制 (IAM) ”。
  3. 选择“添加”按钮。
  4. 设置 “读者” 角色并输入 Microsoft Purview 帐户名称,该名称表示其托管服务标识 (MSI) 。
  5. 选择“ 保存” 以完成角色分配。

注意

如果计划注册并扫描 Microsoft Purview 帐户中的多个 Azure Synapse Analytics 工作区,还可以从更高级别(例如资源组或订阅)分配角色。

用于枚举无服务器 SQL 数据库资源的身份验证

有三个位置需要设置身份验证,以允许 Microsoft Purview 枚举无服务器 SQL 数据库资源。

若要为 Azure Synapse Analytics 工作区设置身份验证,请执行以下操作:

  1. 在Azure 门户,转到 Azure Synapse Analytics 工作区资源。
  2. 在左窗格中,选择“访问控制 (IAM) ”。
  3. 选择“添加”按钮。
  4. 设置 “读者” 角色,并输入表示其 MSI 的 Microsoft Purview 帐户名称。
  5. 选择“ 保存” 以完成角色分配。

设置存储帐户的身份验证:

  1. 在Azure 门户中,转到包含与 Azure Synapse Analytics 工作区关联的存储帐户的资源组或订阅。
  2. 在左窗格中,选择“访问控制 (IAM) ”。
  3. 选择“添加”按钮。
  4. 设置 存储 blob 数据读取者 角色,并在 “选择 ”框中输入 Microsoft Purview 帐户名称 (该名称表示其 MSI) 。
  5. 选择“ 保存” 以完成角色分配。

为 Azure Synapse Analytics 无服务器数据库设置身份验证:

  1. 转到 Azure Synapse Analytics 工作区并打开Synapse Studio。

  2. 在左窗格中,选择“ 数据”。

  3. 选择其中一个数据库旁边的省略号 (...) ,然后启动新的 SQL 脚本。

  4. 在 SQL 脚本中运行以下命令,在无服务器 SQL 数据库上添加由帐户名) 表示的 Microsoft Purview 帐户 MSI (:

    CREATE LOGIN [PurviewAccountName] FROM EXTERNAL PROVIDER;
    

应用权限以扫描工作区的内容

必须针对要从 Azure Synapse Analytics 工作区注册和扫描的每个 SQL 数据库设置身份验证。 从以下方案中选择应用权限的步骤。

重要

适用于无服务器数据库的以下步骤 不适用于 复制的数据库。 在 Azure Synapse Analytics 中,从 Spark 数据库复制的无服务器数据库目前是只读的。 有关详细信息,请参阅复制 的数据库不允许操作

对专用 SQL 数据库使用托管标识

若要在以下过程中运行命令,你必须是工作区上的Azure Synapse管理员。 有关Azure Synapse Analytics 权限的详细信息,请参阅为 Azure Synapse Analytics 工作区设置访问控制

  1. 转到 Azure Synapse Analytics 工作区。

  2. 转到 “数据 ”部分,然后查找一个专用 SQL 数据库。

  3. 选择数据库名称旁边的省略号 (...) ,然后启动新的 SQL 脚本。

  4. 在 SQL 脚本中运行以下命令,添加 Microsoft Purview 帐户 MSI (由帐户名称) 表示,如 db_datareader 在专用 SQL 数据库上所示:

    CREATE USER [PurviewAccountName] FROM EXTERNAL PROVIDER
    GO
    
    EXEC sp_addrolemember 'db_datareader', [PurviewAccountName]
    GO
    
  5. 在 SQL 脚本中运行以下命令,验证角色的添加:

    SELECT p.name AS UserName, r.name AS RoleName
    FROM sys.database_principals p
    LEFT JOIN sys.database_role_members rm ON p.principal_id = rm.member_principal_id
    LEFT JOIN sys.database_principals r ON rm.role_principal_id = r.principal_id
    WHERE p.authentication_type_desc = 'EXTERNAL'
    ORDER BY p.name;
    

对要扫描的每个数据库执行相同的步骤。

对无服务器 SQL 数据库使用托管标识

  1. 转到 Azure Synapse Analytics 工作区。

  2. 转到 “数据 ”部分,然后选择一个 SQL 数据库。

  3. 选择数据库名称旁边的省略号 (...) ,然后启动新的 SQL 脚本。

  4. 在 SQL 脚本中运行以下命令,添加 Microsoft Purview 帐户 MSI (,该帐户名称) 表示为 db_datareader 无服务器 SQL 数据库上的帐户名称:

    CREATE USER [PurviewAccountName] FOR LOGIN [PurviewAccountName];
    ALTER ROLE db_datareader ADD MEMBER [PurviewAccountName]; 
    
  5. 在 SQL 脚本中运行以下命令,验证角色的添加:

    SELECT p.name AS UserName, r.name AS RoleName
    FROM sys.database_principals p
    LEFT JOIN sys.database_role_members rm ON p.principal_id = rm.member_principal_id
    LEFT JOIN sys.database_principals r ON rm.role_principal_id = r.principal_id
    WHERE p.authentication_type_desc = 'EXTERNAL'
    ORDER BY p.name;
    

对要扫描的每个数据库执行相同的步骤。

授予对外部表使用凭据的权限

如果 Azure Synapse Analytics 工作区具有任何外部表,则必须对外部表的作用域凭据授予 Microsoft Purview 托管标识引用权限。 借助“引用”权限,Microsoft Purview 可以从外部表读取数据。

  1. 在 SQL 脚本中运行以下命令,获取数据库范围凭据的列表:

    Select name, credential_identity
    from sys.database_scoped_credentials;
    
  2. 若要授予对数据库范围凭据的访问权限,请运行以下命令。 将 替换为 scoped_credential 数据库范围凭据的名称。

    GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[scoped_credential] TO [PurviewAccountName];
    
  3. 若要验证权限分配,请在 SQL 脚本中运行以下命令:

    SELECT dp.permission_name, dp.grantee_principal_id, p.name AS grantee_principal_name
    FROM sys.database_permissions AS dp
    JOIN sys.database_principals AS p ON dp.grantee_principal_id = p.principal_id
    JOIN sys.database_scoped_credentials AS c ON dp.major_id = c.credential_id;
    

为 Azure Synapse Analytics 工作区设置防火墙访问

  1. 在Azure 门户,转到 Azure Synapse Analytics 工作区。

  2. 在左窗格中,选择“ 网络”。

  3. 对于 “允许 Azure 服务和资源访问此工作区 控件”,选择“ 打开”。

  4. 选择“保存”。

重要

如果无法在 Azure Synapse Analytics 工作区上启用“允许 Azure 服务和资源访问此工作区”,在 Microsoft Purview 治理门户中设置扫描时,会出现无服务器数据库枚举失败。 在这种情况下,可以选择 “手动输入” 选项来指定要扫描的数据库名称,然后使用 API 继续或 设置扫描

创建并运行扫描

  1. Microsoft Purview 治理门户的左窗格中,选择“ 数据映射”。

  2. 选择已注册的数据源。

  3. 选择“ 查看详细信息”,然后选择“ 新建扫描”。 或者,可以在源磁贴上选择 “扫描快速操作 ”图标。

  4. 在“ 扫描 详细信息”窗格的“ 名称 ”框中,输入扫描的名称。

注意

对于集成运行时,如果使用 托管 VNet 运行时,请确保已创建所需的托管专用 Enpoints:

  • 若要扫描无服务器池,请为 Synapse 工作区创建 sqlOnDemand 子资源类型的托管专用点。
  • 若要扫描专用池,请为 Synapse 工作区创建 sql 子资源类型的托管专用点。
  • 如果同时扫描无服务器池和专用池,则创建两个托管专用终结点,并在向导中选择一个。
  1. “凭据” 下拉列表中,选择要连接到数据源中的资源的凭据。

  2. 对于 “数据库选择方法”,请选择“ 从 Synapse 工作区 ”或 “手动输入”。 默认情况下,Microsoft Purview 会尝试枚举工作区下的数据库,你可以选择要扫描的数据库。

    Azure Synapse源扫描的详细信息窗格的屏幕截图。

    如果收到错误,指出 Microsoft Purview 无法加载无服务器数据库,则可以 手动选择 Enter 以指定专用或无服务器 () 的数据库类型以及相应的数据库名称。

    设置扫描时用于手动输入数据库名称的选项的屏幕截图。

  3. 选择“ 测试连接 ”以验证设置。 如果遇到任何错误,请在报表页上将鼠标悬停在连接状态上以查看详细信息。

  4. 选择 继续

  5. 选择“扫描 SQL”类型的“Azure Synapse规则集”。 还可以内联创建扫描规则集。

  6. 选择扫描触发器。 可以计划每周 /每月 运行一 次或一次

  7. 查看扫描,然后选择“ 保存” 以完成设置。

查看扫描和扫描运行

查看现有扫描:

  1. 转到 Microsoft Purview 治理门户。 在左窗格中,选择“ 数据映射”。
  2. 选择数据源。 可以在“最近扫描”下查看该数据源上的现有 扫描列表,也可以在“扫描”选项卡上查看所有 扫描
  3. 选择要查看的结果的扫描。 窗格显示之前的所有扫描运行,以及每个扫描运行的状态和指标。
  4. 选择运行 ID 以检查扫描运行详细信息

管理扫描

若要编辑、取消或删除扫描,请执行以下操作:

  1. 转到 Microsoft Purview 治理门户。 在左窗格中,选择“ 数据映射”。

  2. 选择数据源。 可以在“最近扫描”下查看该数据源上的现有 扫描列表,也可以在“扫描”选项卡上查看所有 扫描

  3. 选择要管理的扫描。 然后,可以:

    • 通过选择“编辑扫描 ”来编辑扫描
    • 选择“取消扫描运行”, 取消正在进行的扫描
    • 通过选择“删除扫描” 来删除扫描

注意

  • 删除扫描不会删除从以前的扫描创建的目录资产。
  • 如果源表已更改,并且你在 Microsoft Purview 的“ 架构 ”选项卡上编辑说明后重新扫描源表,则资产将不再使用架构更改进行更新。

使用 API 设置扫描

下面是使用 Microsoft Purview REST API 为无服务器数据库创建扫描的示例。 将大括号中的占位符 ({}) 替换为实际设置。 有关详细信息,请参阅 扫描 - 创建或更新

PUT https://{purview_account_name}.purview.azure.com/scan/datasources/<data_source_name>/scans/{scan_name}?api-version=2022-02-01-preview

在以下代码中, collection_id 不是集合的友好名称,而是由五个字符组成的 ID。 对于根集合, collection_id 是集合的名称。 对于所有子集合,它是可在以下位置之一找到的 ID:

  • Microsoft Purview 治理门户中的 URL。 选择集合,检查 URL 以查找其显示 collection=的位置。 这是你的 ID。 在以下示例中, 投资 集合的 ID 为 50h55c

    URL 中集合 ID 的屏幕截图。

  • 可以 列出根集合的子集合名称 以列出集合,然后使用名称而不是友好名称。

{
    "properties":{
        "resourceTypes":{
            "AzureSynapseServerlessSql":{
                "scanRulesetName":"AzureSynapseSQL",
                "scanRulesetType":"System",
                "resourceNameFilter":{
                    "resources":[ "{serverless_database_name_1}", "{serverless_database_name_2}", ...]
                }
            }
        },
        "credential":{
            "referenceName":"{credential_name}",
            "credentialType":"SqlAuth | ServicePrincipal | ManagedIdentity (if UAMI authentication)"
        },
        "collection":{
            "referenceName":"{collection_id}",
            "type":"CollectionReference"
        },
        "connectedVia":{
            "referenceName":"{integration_runtime_name}",
            "integrationRuntimeType":"SelfHosted (if self-hosted IR) | Managed (if VNet IR)"
        }
    },
    "kind":"AzureSynapseWorkspaceCredential | AzureSynapseWorkspaceMsi (if system-assigned managed identity authentication)"
}

若要计划扫描,请在创建扫描后为其创建触发器。 有关详细信息,请参阅 触发器 - 创建触发器

故障排除

如果扫描时遇到任何问题:

后续步骤

注册源后,请使用以下指南详细了解 Microsoft Purview 和数据: