教程:为 Snowflake 配置自动用户预配

本教程演示要将 Microsoft Entra ID 配置为自动将用户和组预配和到 Snowflake 以及取消其预配,而需要在 Snowflake 和 Microsoft Entra ID 中执行的步骤。 有关此服务的功能、工作原理以及常见问题解答的重要详细信息,请参阅什么是 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。 Microsoft Entra ID 创建的 Snowflake 中的所有用户和角色都将为范围限定的 AAD_PROVISIONER 角色所有。

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

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

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

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

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

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

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

借助 Microsoft Entra 预配服务,可根据对应用程序的分配或者用户或组的属性来限定谁在预配范围内。 如果选择根据分配来限定要将谁预配到应用,可以使用以下步骤将用户和组分配到应用程序。 如果选择仅根据用户或组的属性来限定要对谁进行预配,可以使用范围筛选器

请记住以下提示:

  • 将用户和组分配到 Snowflake 时,必须选择“默认访问”以外的角色。 具有“默认访问”角色的用户被排除在预配范围之外,并在预配日志中被标记为无有效资格。 如果应用程序上唯一可用的角色是默认访问角色,则可以更新应用程序清单以添加更多角色。

  • 如果你需要其他角色,可以更新应用程序清单以添加新角色。

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

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

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

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

  2. 浏览到“标识”>“应用程序”>“企业应用程序”。

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

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

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

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

    “管理”选项的屏幕截图,其中突出显示了“预配”选项。

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

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

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

    注意

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

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

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

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

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

  8. 选择“保存”。

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

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

    Attribute 类型
    活动 Boolean
    displayName 字符串
    emails[type eq "work"].value 字符串
    userName 字符串
    name.givenName 字符串
    name.familyName 字符串
    externalId 字符串

    注意

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

    • DEFAULT_ROLE
    • DEFAULT_WAREHOUSE
    • DEFAULT_SECONDARY_ROLES
    • SNOWFLAKE 名称和 LOGIN_NAME 字段不同

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

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

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

    Attribute 类型
    displayName 字符串
    members 参考
  13. 若要配置范围筛选器,请参阅范围筛选器教程中的说明。

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

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

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

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

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

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

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

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

步骤 6:监视部署

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

连接器限制

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

故障排除提示

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

更改日志

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

其他资源

后续步骤