教程:为 Snowflake 配置自动用户预配
本教程演示要将 Microsoft Entra ID 配置为自动将用户和组预配和到 Snowflake 以及取消其预配,而需要在 Snowflake 和 Microsoft Entra ID 中执行的步骤。 有关此服务的功能、工作原理以及常见问题解答的重要详细信息,请参阅什么是 Microsoft Entra ID 中的自动 SaaS 应用用户预配?。
支持的功能
- 在 Snowflake 中创建用户
- 在用户不再有访问需求的情况下,在 Snowflake 中删除用户
- 使用户属性在 Microsoft Entra ID 和 Snowflake 之间保持同步
- 在 Snowflake 中预配组和组成员身份
- 允许单一登录到 Snowflake(推荐)
先决条件
本教程中概述的方案假定你已具有以下先决条件:
- 一个 Microsoft Entra 租户
- 以下角色之一:应用程序管理员、云应用程序管理员或应用程序所有者。
- Snowflake 租户
- Snowflake 中至少一个具有帐户管理员角色的用户。
步骤 1:规划预配部署
- 了解预配服务的工作原理。
- 确定谁在预配范围中。
- 确定在 Microsoft Entra ID 与 Snowflake 之间映射的数据。
步骤 2:配置 Snowflake 以支持使用 Microsoft Entra ID 进行预配
通过 Microsoft Entra ID 为 Snowflake 配置自动用户预配之前,需要在 Snowflake 上启用跨域身份管理系统 (SCIM) 预配。
以管理员身份登录到 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');
使用 ACCOUNTADMIN 角色。
创建自定义角色 AAD_PROVISIONER。 Microsoft Entra ID 创建的 Snowflake 中的所有用户和角色都将为范围限定的 AAD_PROVISIONER 角色所有。
让 ACCOUNTADMIN 角色使用 AAD_PROVISIONER 自定义角色创建安全集成。
创建授权令牌并将其复制到剪贴板,然后安全存储以备后用。 将此令牌用于每个 SCIM REST API 请求,并将其置于请求头中。 访问令牌在六个月后过期,可以使用此语句生成新的访问令牌。
步骤 3:从 Microsoft Entra 应用程序库中添加 Snowflake
从 Microsoft Entra 应用程序库中添加 Snowflake,开始管理 Snowflake 的预配。 如果以前为 Snowflake 设置过单一登录 (SSO),则可以使用同一应用程序。 但是,我们建议你在最初测试集成时创建一个单独的应用。 详细了解如何从库中添加应用程序。
步骤 4:定义谁在预配范围中
借助 Microsoft Entra 预配服务,可根据对应用程序的分配或者用户或组的属性来限定谁在预配范围内。 如果选择根据分配来限定要将谁预配到应用,可以使用以下步骤将用户和组分配到应用程序。 如果选择仅根据用户或组的属性来限定要对谁进行预配,可以使用范围筛选器。
请记住以下提示:
将用户和组分配到 Snowflake 时,必须选择“默认访问”以外的角色。 具有“默认访问”角色的用户被排除在预配范围之外,并在预配日志中被标记为无有效资格。 如果应用程序上唯一可用的角色是默认访问角色,则可以更新应用程序清单以添加更多角色。
如果你需要其他角色,可以更新应用程序清单以添加新角色。
步骤 5:配置到 Snowflake 的自动用户预配
本部分介绍了如何配置 Microsoft Entra 预配服务以在 Snowflake 中创建、更新以及禁用用户和组。 可以根据 Microsoft Entra ID 中的用户和组分配进行配置。
在 Microsoft Entra ID 中为 Snowflake 配置自动用户预配:
至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心。
浏览到“标识”>“应用程序”>“企业应用程序”。
在应用程序列表中,选择“Snowflake”。
选择“预配”选项卡。
将“预配模式”设置为“自动”。
在“管理员凭据”部分中,分别在“租户 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 帐户具有管理员权限,然后重试。
在“通知电子邮件”框中输入应接收预配错误通知的人员或组的电子邮件地址。 然后,选中“发生故障时发送电子邮件通知”复选框。
选择“保存”。
在“映射”部分,选择“将 Microsoft Entra 用户同步到 Snowflake”。
在“属性映射”部分,查看从 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 自定义扩展属性。
在“映射”部分,选择“将 Microsoft Entra 组同步到 Snowflake”。
在“属性映射”部分,查看从 Microsoft Entra ID 同步到 Snowflake 的组属性。 选为“匹配”属性的特性用于匹配 Snowflake 中的组以执行更新操作。 选择“保存”按钮以提交任何更改 。
Attribute 类型 displayName 字符串 members 参考 若要配置范围筛选器,请参阅范围筛选器教程中的说明。
若要为 Snowflake 启用 Microsoft Entra 预配服务,请在“设置”部分将“预配状态”更改为“打开”。
通过在“设置”部分的“范围”中选择所需的值,定义要预配到 Snowflake 的用户和组 。
如果此选项不可用,请在管理员凭据下配置必填字段,选择“保存”并刷新页面 。
准备好预配时,选择“保存”。
此操作会对“设置”部分的“范围”中定义的所有用户和组启动初始同步 。 初始同步所需的时间比后续同步要长。 只要 Microsoft Entra 预配服务正在运行,后续同步大约每 40 分钟就会进行一次。
步骤 6:监视部署
配置预配后,请使用以下资源来监视部署:
- 通过预配日志来确定哪些用户已预配成功或失败。
- 检查进度栏以查看预配周期的状态以及完成进度。
- 如果怀疑预配配置处于非正常状态,则应用程序将进入隔离状态。 了解有关隔离状态的详细信息。
连接器限制
Snowflake 生成的 SCIM 令牌将在 6 个月后过期。 请注意,需要在这些令牌过期前对它们进行刷新,以便“预配同步”能够继续生效。
故障排除提示
Microsoft Entra 预配服务当前在特定 IP 范围下运行。 如有必要,可以限制其他 IP 范围,并将这些特定的 IP 范围添加到你的应用程序允许列表中。 该方法允许流量从 Microsoft Entra 预配服务传递到应用程序。
更改日志
- 2020/07/21:为所有用户启用软删除(通过活动属性)。
- 2022/10/12:更新了 Snowflake SCIM 配置。