在 Microsoft Purview 中连接到并管理 Snowflake

本文概述了如何注册 Snowflake,以及如何在 Microsoft Purview 中对 Snowflake 进行身份验证和交互。 有关 Microsoft Purview 的详细信息,请阅读 介绍性文章

支持的功能

元数据提取 完整扫描 增量扫描 作用域扫描 分类 标记 访问策略 世系沿袭 数据共享 实时视图

扫描 Snowflake 源时,Microsoft Purview 支持:

  • 提取技术元数据,包括:

    • 服务器
    • Databases
    • Schemas
    • 包含列、外键和唯一约束的表
    • 包含列的视图
    • 存储过程,包括参数数据集和结果集
    • 包含参数数据集的函数
    • 管道
    • Stages
    • 包含列的流
    • 任务
    • Sequences
  • 提取表、视图、流和存储过程之间资产关系的静态世系。

对于存储过程,可以选择在 扫描设置上提取的详细信息级别。 Snowflake 脚本支持存储过程世系, (SQL) 和 JavaScript 语言,并根据过程定义生成。

设置扫描时,可以选择完全基于给定名称 () 或名称模式 () 扫描一个或多个 Snowflake 数据库 () ,或者进一步将扫描范围限定为与给定名称 () 或名称模式匹配的架构子集 () 。

已知限制

  • 从数据源中删除对象时,当前后续扫描不会自动删除 Microsoft Purview 中的相应资产。
  • 以下模式不支持存储过程世系:
    • 用 Java、Python 和 Scala 语言定义的存储过程。
    • 使用 SQL EXECUTE IMMEDIATE 和静态 SQL 查询作为变量的存储过程。

先决条件

扫描所需的权限

Microsoft Purview 支持用于扫描 Snowflake 的基本身份验证 (用户名和密码) 。 给定用户的默认角色将用于执行扫描。 Snowflake 用户必须对要扫描的仓库和数据库 () 具有使用权限,并且必须具有对系统表的读取权限才能访问高级元数据。

下面是一个示例演练,用于创建专门用于Microsoft Purview 扫描的用户并设置权限。 如果选择使用现有用户,请确保该用户对仓库和数据库对象具有足够的权限。

  1. 设置 purview_reader 角色。 需要 ACCOUNTADMIN 权限才能执行此操作。

    USE ROLE ACCOUNTADMIN;
    
    --create role to allow read only access - this will later be assigned to the Microsoft Purview user
    CREATE OR REPLACE ROLE purview_reader;
    
    --make sysadmin the parent role
    GRANT ROLE purview_reader TO ROLE sysadmin;
    
  2. 创建仓库供 Microsoft Purview 使用和授予权限。

    --create warehouse - account admin required
    CREATE OR REPLACE WAREHOUSE purview_wh WITH 
        WAREHOUSE_SIZE = 'XSMALL' 
        WAREHOUSE_TYPE = 'STANDARD' 
        AUTO_SUSPEND = 300 
        AUTO_RESUME = TRUE 
        MIN_CLUSTER_COUNT = 1 
        MAX_CLUSTER_COUNT = 2 
        SCALING_POLICY = 'STANDARD';
    
    --grant rights to the warehouse
    GRANT USAGE ON WAREHOUSE purview_wh TO ROLE purview_reader;
    
  3. 创建用于 Microsoft Purview 扫描的用户 purview

    CREATE OR REPLACE USER purview 
        PASSWORD = '<password>'; 
    
    --note the default role will be used during scan
    ALTER USER purview SET DEFAULT_ROLE = purview_reader;
    
    --add user to purview_reader role
    GRANT ROLE purview_reader TO USER purview;
    
  4. 授予数据库对象的读取者权限。

    GRANT USAGE ON DATABASE <your_database_name> TO purview_reader;
    
    --grant reader access to all the database structures that purview can currently scan
    GRANT USAGE ON ALL SCHEMAS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE ON ALL FUNCTIONS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE ON ALL PROCEDURES IN DATABASE <your_database_name> TO role purview_reader;
    GRANT SELECT ON ALL TABLES IN DATABASE <your_database_name> TO role purview_reader;
    GRANT SELECT ON ALL VIEWS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE, READ on ALL STAGES IN DATABASE <your_database_name> TO role purview_reader;
    
    --grant reader access to any future objects that could be created
    GRANT USAGE ON FUTURE SCHEMAS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE ON FUTURE FUNCTIONS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE ON FUTURE PROCEDURES IN DATABASE <your_database_name> TO role purview_reader;
    GRANT SELECT ON FUTURE TABLES IN DATABASE <your_database_name> TO role purview_reader;
    GRANT SELECT ON FUTURE VIEWS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE, READ ON FUTURE STAGES IN DATABASE <your_database_name> TO role purview_reader;
    

注册

本部分介绍如何使用 Microsoft Purview 治理门户在 Microsoft Purview 中注册 Snowflake。

注册步骤

若要在数据目录中注册新的 Snowflake 源,请执行以下步骤:

  1. 在 Microsoft Purview 治理门户中导航到 Microsoft Purview 帐户。
  2. 在左侧导航中选择“ 数据映射 ”。
  3. 选择 “注册”
  4. 在“注册源”上,选择“ Snowflake”。 选择 继续

在“ (Snowflake) 注册源 ”屏幕上,请执行以下步骤:

  1. 输入数据源将在目录中列出的 名称

  2. 以 的形式<account_identifier>.snowflakecomputing.com输入服务器 URL,例如 orgname-accountname.snowflakecomputing.com。 详细了解 Snowflake 帐户标识符。 请注意,此 URL 用作 Snowflake 资产完全限定名称的一部分,并且是 Microsoft Purview 在扫描期间连接到 Snowflake 的默认终结点。

  3. 添加 其他主机 (如果适用)。 如果希望扫描操作连接到除服务器 URL 以外的 Snowflake 终结点,请指定它。 可以在扫描设置过程中选择主机进行连接。

    提示

    如果已扫描 Snowflake,但想要切换到使用另一个终结点(例如,从公共终结点到专用终结点),则可以在数据源中添加其他主机,并在扫描中选择该主机进行连接,以确保 Microsoft Purview 生成与之前相同的完全限定名称的资产。

    注册数据源时,Microsoft Purview 执行唯一性检查服务器 URL 和其他主机不会与任何现有源重叠。

  4. 从列表中选择集合。

  5. 完成以注册数据源。

    注册源选项

扫描

按照以下步骤扫描 Snowflake 以自动识别资产。 有关一般扫描的详细信息,请参阅 扫描和引入简介

扫描身份验证

Snowflake 源支持的身份验证类型为 基本身份验证

创建并运行扫描

若要创建并运行新的扫描,请执行以下步骤:

  1. Microsoft Purview 治理门户中,导航到 “源”。

  2. 选择已注册的 Snowflake 源。

  3. 选择“ + 新建扫描”。

  4. 提供以下详细信息:

    1. 名称:扫描的名称

    2. 通过集成运行时进行连接:根据方案选择 Azure 自动解析的集成运行时、托管 VNet IR 或 SHIR。 有关详细信息,请参阅 为方案选择正确的集成运行时配置。 若要使用托管 VNet IR 通过专用链接连接到 Snowflake,请按照 通过托管专用终结点连接到 Snowflake 中的步骤操作,首先设置专用终结点。

    3. 用于连接的主机:选择用于在扫描期间与 Snowflake 建立连接的终结点。 可以从服务器 URL 或 数据源中配置的其他主机中进行选择。

    4. 凭据:选择要连接到数据源的凭据。 请确保:

      • 创建凭据时选择“ 基本身份验证 ”。
      • 在“用户名”输入字段中提供用于连接到 Snowflake 的用户名。
      • 将用于连接到 Snowflake 的用户密码存储在密钥中。
    5. 仓库:指定用于在大写情况下支持扫描的仓库实例的名称。 分配给凭据中指定的用户的默认角色必须对此仓库具有 USAGE 权限。

    6. 数据库:指定要以大写形式导入的一个或多个数据库实例名称。 使用分号 (;) 分隔列表中的名称。 例如,DB1;DB2。 分配给凭据中指定的用户的默认角色必须对数据库对象具有足够的权限。

      注意

      如果指定了多个数据库实例名称,则不会对表应用分类。

      可接受的数据库名称模式可以是静态名称或包含通配符 %。 例如: A%;%B;%C%;D

      • 从 A 或 开始
      • 以 B 或 结尾
      • 包含 C 或
      • 等于 D
    7. 架构:列出要导入的架构子集,表示为分号分隔列表。 例如,schema1;schema2。 如果该列表为空,则导入所有用户架构。 默认情况下,将忽略所有系统架构和对象。

      使用的可接受的架构名称模式可以是静态名称,也可以包含通配符 %。 例如: A%;%B;%C%;D

      • 从 A 或 开始
      • 以 B 或 结尾
      • 包含 C 或
      • 等于 D

      不能接受使用 NOT 和特殊字符。

    8. 存储过程详细信息:控制从存储过程导入的详细信息数:

      • 签名 (默认) :存储过程的名称和参数。
      • 代码、签名:存储过程的名称、参数和代码。
      • 世系、代码、签名:存储过程的名称、参数和代码,以及派生自代码的数据世系。
      • 无:不包括存储过程详细信息。

      注意

      如果使用自承载Integration Runtime进行扫描,则自版本 5.30.8541.1 起支持默认签名以外的自定义设置。 早期版本始终提取存储过程的名称和参数。

    9. 使用自承载集成运行时) 时,最大可用内存 (适用:扫描进程) 客户 VM 上可用的最大内存 ((GB)。 这取决于要扫描的 Snowflake 源的大小。

      注意

      作为经验法则,请为每 1000 个表提供 1GB 内存。

      扫描 Snowflake

  5. 选择“测试连接”以验证使用 Azure Integration Runtime) 时可用的设置 (。

  6. 选择 继续

  7. 选择用于分类的 扫描规则集 。 可以在系统默认规则集和现有自定义规则集之间进行选择,也可以内联 创建新的规则集 。 有关详细信息,请查看 分类 一文。

    注意

    当表名、视图名称、架构名称或数据库名称包含特殊字符时,不会对表或视图应用分类。

    注意

    如果使用自承载运行时,则需要升级到版本 5.26.404.1 或更高版本才能使用 Snowflake 分类。 可 在此处找到最新版本的 Microsoft 集成运行时。

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

  9. 查看扫描并选择“ 保存并运行”。

查看扫描和扫描运行

查看现有扫描:

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

管理扫描

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

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

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

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

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

注意

  • 删除扫描不会删除从以前的扫描创建的目录资产。

世系沿袭

扫描 Snowflake 源后,可以 浏览数据目录搜索数据目录 以查看资产详细信息。

转到“资产 -> 世系”选项卡,可以看到资产关系(如果适用)。 有关支持的 Snowflake 世系方案,请参阅支持 的功能 部分。 有关世系的一般信息,请参阅 数据世系世系用户指南

雪花世系视图

注意

如果视图是由不同数据库中的表创建的,请使用分号 (;) 列表中的名称同时扫描所有数据库。

通过托管专用终结点连接到 Snowflake

本部分介绍在 Azure 上设置从 Microsoft Purview 到 Snowflake 的托管专用终结点 (PE) 所需的步骤。 详细了解Azure 专用链接和 Snowflake

  1. 在 Snowflake 帐户中,检索目标终结点和资源 ID。使用 Account 管理员 角色运行 system 函数 SYSTEM$GET_PRIVATELINK_CONFIG () ,并记下以下属性的值:

    • privatelink-pls-id
    • privatelink-account-url
    • regionless-privatelink-account-url
    • privatelink_ocsp-url
    use role accountadmin; 
    select key, value::varchar from table(flatten(input=>parse_json(SYSTEM$GET_PRIVATELINK_CONFIG())));
    
  2. 在 Microsoft Purview 中,创建 Snowflake 的托管专用终结点。

    1. 按照步骤创建托管虚拟网络 Integration Runtime。 如果已有,请确保它位于支持 Snowflake PE 的版本 2 中。
    2. 为 Snowflake 创建托管专用终结点。 导航到 托管专用终结点 ->+ 新建 ->Snowflake,并填写以下信息。
      • 资源 ID 或别名:填写检索到的 privatelink-pls-id 的值。
      • 完全限定的域名:添加 privatelink_ocsp-urlregionless-privatelink-account-urlprivatelink-account-url

    为 Snowflake 设置托管专用终结点

  3. 创建 PE 后,可以看到其预配状态为 “成功” ,审批状态为 “挂起”。 打开 PE 并在详细信息页中找到 托管专用终结点资源 ID

  4. 请联系 Snowflake 技术支持 并提供资源 ID,让 Snowflake 批准此 PE。

  5. Snowflake 支持确认 PE 已获批准后,应会看到托管专用终结点审批状态在 Microsoft Purview 中为 “已批准 ”。

  6. 注册数据源设置扫描。 设置扫描时,请选择与 Snowflake PE 关联的托管 VNet IR。

疑难解答提示

  • 在源注册步骤中检查帐户标识符。 不要在前面包含 https:// 部件。
  • 确保扫描设置页上的仓库名称和数据库名称为大写字母。
  • 检查密钥保管库。 请确保密码中没有拼写错误。
  • 检查在 Microsoft Purview 中设置的凭据。 指定的用户必须具有默认角色,该角色对仓库和要扫描的数据库具有必要的访问权限。 请参阅 扫描所需的权限。 使用 DESCRIBE USER; 验证为 Microsoft Purview 指定的用户的默认角色。
  • 使用 Snowflake 中的查询历史记录查看是否有任何活动发生。
    • 如果帐户标识器或密码有问题,则不会看到任何活动。
    • 如果默认角色存在问题,至少应看到语句 USE WAREHOUSE . . .
    • 可以使用 QUERY_HISTORY_BY_USER 表函数 来确定连接正在使用的角色。 设置专用的 Microsoft Purview 用户可更轻松地进行故障排除。

后续步骤

注册源后,请按照以下指南详细了解Microsoft Purview 和数据。