使用 Microsoft Entra ID 为 Snowflake 配置自动用户预配

本文演示了在 Snowflake 和 Microsoft Entra ID 中执行的步骤,以配置 Microsoft Entra ID,使其能够自动为 Snowflake 预配和撤销用户及组。 有关此服务的功能、工作原理以及常见问题解答的重要详细信息,请参阅什么是 Microsoft Entra ID 中的自动 SaaS 应用用户预配?

支持的功能

  • 在 Snowflake 中创建用户
  • 在用户不再有访问需求的情况下,在 Snowflake 中删除用户
  • 使用户属性在 Microsoft Entra ID 和 Snowflake 之间保持同步
  • 在 Snowflake 中预配组和组成员身份
  • 允许单一登录到 Snowflake(推荐)

先决条件

本文中概述的方案假定你已具备以下先决条件:

步骤 1:规划预配部署

  1. 了解 预配服务的工作原理
  2. 确定哪些对象在预配范围内。
  3. 确定在 Microsoft Entra ID 与 Snowflake 之间映射的数据。

步骤 2:配置 Snowflake 以支持使用 Microsoft Entra ID 进行预配

通过 Microsoft Entra ID 为 Snowflake 配置自动用户预配之前,需要在 Snowflake 上启用跨域身份管理系统 (SCIM) 预配。

  1. 以管理员身份登录到 Snowflake,并从 Snowflake 工作表界面或 SnowSQL 执行以下操作。

    use role accountadmin;
    
     create role if not exists aad_provisioner;
     grant create user on account to role aad_provisioner;
     grant create role on account to role aad_provisioner;
    grant role aad_provisioner to role accountadmin;
     create or replace security integration aad_provisioning
         type = scim
         scim_client = 'azure'
         run_as_role = 'AAD_PROVISIONER';
     select system$generate_scim_access_token('AAD_PROVISIONING');
    
  2. 使用 ACCOUNTADMIN 角色。

    Snowflake UI 中工作表的屏幕截图,其中突出显示了 SCIM 访问令牌。

  3. 创建自定义角色 AAD_PROVISIONER。 在 Snowflake 中,由 Microsoft Entra ID 创建的所有用户和角色的所有权归属于经过限制的 AAD_PROVISIONER 角色。

    显示自定义角色的屏幕截图。

  4. 让 ACCOUNTADMIN 角色使用 AAD_PROVISIONER 自定义角色创建安全集成。

    显示安全集成的屏幕截图。

  5. 创建授权令牌并将其复制到剪贴板,然后安全存储以备后用。 将此令牌用于每个 SCIM REST API 请求,并将其置于请求头中。 访问令牌在六个月后过期,可以使用此语句生成新的访问令牌。

    显示令牌生成的屏幕截图。

从 Microsoft Entra 应用程序库中添加 Snowflake,开始管理 Snowflake 的预配。 如果以前为 Snowflake 设置过单一登录 (SSO),则可以使用同一应用程序。 但是,我们建议你在最初测试集成时创建一个单独的应用。 详细了解如何从库中添加应用程序

步骤 4:定义谁在预配范围内

通过Microsoft Entra 预配服务,你可以根据应用程序分配或用户或组的属性来限定预配的人员的范围。 如果您选择根据分配范围决定将哪些人员预配到您的应用程序,您可以使用 步骤将用户和组分配到应用程序中。 如果选择仅根据用户或组的属性来限定预配的人员,则可以 使用范围筛选器

  • 从小开始。 在向所有人推出之前,先使用一小部分用户和组进行测试。 将预配范围设置为已分配的用户和组时,可以通过向应用分配一两个用户或组来控制此设置。 将范围设置为所有用户和组时,可以指定 基于属性的范围筛选器

  • 如果需要额外的角色,可以 更新应用程序清单 以添加新角色。

步骤 5:配置到 Snowflake 的自动用户预配

本部分介绍了如何配置 Microsoft Entra 预配服务以在 Snowflake 中创建、更新以及禁用用户和组。 可以根据 Microsoft Entra ID 中的用户和组分配进行配置。

在 Microsoft Entra ID 中为 Snowflake 配置自动用户预配:

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到 Entra ID>企业应用

    显示“企业应用程序”窗格的屏幕截图。

  3. 在应用程序列表中,选择“Snowflake”。

    显示应用程序列表的屏幕截图。

  4. 选择“预配”选项卡。

    “管理”选项的屏幕截图,其中标出“预配”选项。

  5. 将“预配模式”设置为“自动”。

    “预配模式”下拉列表的屏幕截图,其中突出显示了“自动”选项。

  6. 在“管理员凭据”部分中,分别在“租户 URL”和“机密令牌”框中输入之前检索到的 SCIM 2.0 基 URL 和身份验证令牌 。

    注释

    Snowflake SCIM 终结点由使用 /scim/v2/ 追加的 Snowflake 帐户 URL 组成。 例如,如果 Snowflake 帐户名称为 acme,并且 Snowflake 帐户位于 east-us-2 Azure 区域中,则租户 URL 的值为

    选择“测试连接”以确保 Microsoft Entra ID 可以连接到 Snowflake。 如果连接失败,请确保 Snowflake 帐户具有管理员权限,然后重试。

    屏幕截图显示了与“测试连接”按钮一起显示的“租户 URL”和“机密令牌”框。

  7. 在“通知电子邮件”框中输入应接收预配错误通知的人员或组的电子邮件地址。 然后,选中“发生故障时发送电子邮件通知”复选框。

    显示通知电子邮件的框的屏幕截图。

  8. 选择“保存”

  9. 在“映射”部分,选择“将 Microsoft Entra 用户同步到 Snowflake”。

  10. 在“属性映射”部分,查看从 Microsoft Entra ID 同步到 Snowflake 的用户属性。 选为“匹配”属性的特性用于匹配 Snowflake 中的用户帐户以执行更新操作。 选择“保存”按钮以提交任何更改 。

    特征 类型
    活跃 布尔型
    显示名称 字符串
    emails[type eq "工作"].value 字符串
    用户名 字符串
    名字.给定名 字符串
    姓名.姓氏 字符串
    externalId 字符串

    注释

    Snowflake 在 SCIM 预配期间支持自定义扩展用户属性:

    • 默认角色
    • 默认仓库
    • 默认辅助角色
    • SNOWFLAKE 名称和 LOGIN_NAME 字段不同

    此处介绍了如何在 Microsoft Entra SCIM 用户预配中设置 Snowflake 自定义扩展属性。

  11. 在“映射”部分,选择“将 Microsoft Entra 组同步到 Snowflake”。

  12. 在“属性映射”部分,查看从 Microsoft Entra ID 同步到 Snowflake 的组属性。 选为“匹配”属性的特性用于匹配 Snowflake 中的组以执行更新操作。 选择“保存”按钮以提交任何更改 。

    特征 类型
    显示名称 字符串
    成员 参考文献
  13. 若要配置范围筛选器,请参阅 范围筛选器文章中的说明。

  14. 若要为 Snowflake 启用 Microsoft Entra 预配服务,请在“设置”部分将“预配状态”更改为“打开”。

    显示“预配状态”切换为“启用”的屏幕截图。

  15. 通过在“设置”部分的“范围”中选择所需的值,定义要预配到 Snowflake 的用户和组 。

    如果此选项不可用,请在 “管理员凭据”下配置必填字段,选择“ 保存”并刷新页面。

    显示预配范围选项的屏幕截图。

  16. 准备好预配时,选择“保存”。

    保存预配配置按钮的屏幕截图。

此操作会对“设置”部分的“范围”中定义的所有用户和组启动初始同步 。 初始同步所需的时间比后续同步要长。 只要 Microsoft Entra 预配服务正在运行,后续同步大约每 40 分钟就会进行一次。

第6步:监控您的部署

配置预配后,请使用以下资源来监视部署:

  1. 使用 预配日志 确定哪些用户已成功或未成功预配
  2. 检查 进度栏 以查看预配周期的状态及其完成程度
  3. 如果预配配置似乎处于不正常状态,则应用程序进入隔离状态。 您可以在应用程序预配隔离状态一文中了解有关隔离状态的更多信息。

连接器限制

Snowflake 生成的 SCIM 令牌将在 6 个月后过期。 请注意,需要在这些令牌过期前对它们进行刷新,以便“预配同步”能够继续生效。

故障排除提示

Microsoft Entra 预配服务当前在特定 IP 范围下运行。 如有必要,可以限制其他 IP 范围,并将这些特定的 IP 范围添加到你的应用程序允许列表中。 该方法允许流量从 Microsoft Entra 预配服务传递到应用程序。

更改日志

  • 2020/07/21:为所有用户启用软删除(通过活动属性)。
  • 2022/10/12:更新了 Snowflake SCIM 配置。

其他资源