标识最佳做法

本文提供有关如何在 Azure Databricks 中以最佳方式配置标识的观点。 其中包括有关如何迁移到标识联合,以便能够管理 Azure Databricks 帐户中的所有用户、组和服务主体的指南。

有关 Azure Databricks 标识模型的概述,请参阅 Azure Databricks 标识

有关如何安全地访问 Azure Databricks API 的信息,请参阅管理个人访问令牌权限

配置用户、服务主体和组

Azure Databricks 标识有三种类型:

  • 用户:由 Azure Databricks 识别并由电子邮件地址表示的用户标识。
  • 服务主体:用于作业、自动化工具和系统(例如脚本、应用和 CI/CD 平台)的标识。
  • 组:组简化了标识管理,使分配对工作区、数据和其他安全对象的访问权限变得更加容易。

Databricks 建议创建服务主体来运行生产作业或修改生产数据。 如果所有处理生产数据的进程都使用服务主体运行,那么交互式用户在生产环境中将不需要任何写入、删除或修改权限。 这样就不会产生用户意外覆盖生产数据的风险。

最佳做法是在 Unity Catalog 中将工作区访问权限和访问控制策略分配给组,而不是单独分配给用户。 所有 Azure Databricks 标识都可以分配为组的成员,成员将继承分配给其组的权限。

以下是可以管理 Azure Databricks 标识的管理角色:

  • 帐户管理员可以将用户、服务主体和组添加到帐户,并为他们分配管理员角色。 只要工作区使用身份联合,他们就可以向用户授予对这些工作区的访问权限。
  • 工作区管理员可以将用户、服务主体添加到 Azure Databricks 帐户。 如果他们的工作区启用了身份联合,他们还可以将组添加到 Azure Databricks 帐户。 工作区管理员可以向用户、服务主体和组授予对其工作区的访问权限。
  • 组管理员可以管理组成员身份。 他们还可以为其他用户分配组管理员角色。
  • 服务主体管理员可以管理服务主体上的角色。

Databricks 建议限制每个帐户的帐户管理员数量和每个工作区中的工作区管理员数量。

将用户和组从 Microsoft Entra ID 同步到 Azure Databricks 帐户

Databricks 推荐使用 SCIM 预配将用户和组从 Microsoft Entra ID 自动同步到 Azure Databricks 帐户。 SCIM 使用 Microsoft Entra ID 在 Azure Databricks 中创建用户和组并为其提供适当的访问级别,以此来简化新员工或团队的加入流程。 如果用户离开组织或不再需要访问 Azure Databricks,管理员可在 Microsoft Entra ID 中终止该用户,该用户的帐户也将从 Azure Databricks 中移除。 这样可确保一致的脱离流程,防止未经授权的用户访问敏感数据。

应该将 Microsoft Entra ID 中的所有用户和组同步到帐户控制台而不是单个工作区。 这样,只需配置一个 SCIM 预配应用程序,即可在帐户的所有工作区中让所有标识保持一致。 请参阅允许所有 Microsoft Entra ID 用户访问 Azure Databricks

重要

如果已有直接将标识同步到工作区的 SCIM 连接器,则必须在启用帐户级 SCIM 连接器时禁用这些 SCIM 连接器。 请参阅升级到标识联合

帐户级 SCIM 示意图

帐户级别 SCIM 示意图

如果标识提供者中的用户数不足 10,000 人,Databricks 建议将标识提供者中包含所有用户的组分配到帐户级 SCIM 应用程序。 然后,可以使用标识联合将特定用户、组和服务主体从帐户分配到 Azure Databricks 中的特定工作区。

启用标识联合

使用标识联合可以在帐户控制台中配置用户、服务主体和组,然后为这些标识分配对特定工作区的访问权限。 这简化了 Azure Databricks 管理和数据治理。

重要

Databricks 于 2023 年 11 月 9 日自动为联合身份验证和 Unity Catalog 启用了新工作区,并逐步跨帐户推出。 如果工作区默认启用了联合身份验证,则无法禁用。 有关详细信息,请参阅 Unity Catalog 的自动启用

使用标识联合只需在帐户控制台中配置 Azure Databricks 用户、服务主体和组一次,而无需单独在每个工作区中重复配置。 这既减少了将新团队加入 Azure Databricks 时产生的摩擦,又能使用 Microsoft Entra ID 在 Azure Databricks 帐户中维护一个 SCIM 预配应用程序,而无需为每个工作区单独维护一个 SCIM 预配应用程序。 将用户、服务主体和组添加到帐户后,可为其分配对工作区的权限。 只能为启用了标识联合的帐户级标识分配对工作区的访问权限。

帐户级标识关系图

若要为工作区启用标识联合,请参阅管理员如何在工作区上启用标识联合?。 分配完成后,在帐户控制台中工作区的“配置”选项卡上,联合身份验证会被标记为“已启用”。

将在工作区级别启用标识联合,你可以将标识联合的工作区与非标识联合的工作区结合使用。 对于未启用标识联合的工作区,工作区管理员需要完全在工作区范围内管理其工作区用户、服务主体和组(旧模型)。 他们无法使用帐户控制台或帐户级 API 将帐户中的用户分配到这些工作区,但可以使用任何工作区级接口。 每当使用工作区级接口将新的用户或服务主体添加到工作区时,该用户或服务主体就会同步到帐户级别。 这样,你的帐户中就会使用一组一致的用户和服务主体。

但是,当使用工作区级接口将组添加到非标识联合的工作区时,该组是工作区本地组,不会添加到帐户。 你应该使用帐户组而不是工作区本地组。 工作区本地组不能被授予 Unity Catalog 中的访问控制策略或对其他工作区的权限。

升级到标识联合

如果你要在现有工作区上启用标识联合,请执行以下操作:

  1. 将工作区级 SCIM 预配迁移到帐户级别

    如果为工作区设置了工作区级 SCIM 预配,则应设置帐户级 SCIM 预配并关闭工作区级 SCIM 预配程序。 工作区级 SCIM 将继续创建并更新工作区本地组。 Databricks 建议使用帐户组而不是工作区本地组,以便通过 Unity Catalog 来利用集中式工作区分配和数据访问管理。 工作区级 SCIM 也无法识别分配给联合标识工作区的帐户组,如果它们涉及帐户组,则工作区级 SCIM API 调用将失败。 有关如何禁用工作区级 SCIM 的详细信息,请参阅将工作区级 SCIM 预配迁移到帐户级别

  2. 将工作区本地组转换为帐户组

    Databricks 建议将现有工作区本地组转换为帐户组。 有关说明,请参阅将工作区本地组迁移到帐户组

分配组工作区权限

在工作区上启用标识联合后,可为帐户中的用户、服务主体和组分配对该工作区的权限。 Databricks 建议为组分配对工作区的权限,而不要单独为用户分配工作区权限。 所有 Azure Databricks 标识都可以分配为组的成员,成员将继承分配给其组的权限。

添加工作区权限

了解更多