管理 Databricks 作业的标识、权限和特权

本文包含有关管理 Databricks 作业标识、权限和特权的建议和说明。

注意

不会从群集的 Spark 驱动程序日志 stdoutstderr 流中修订机密。 为了保护敏感数据,默认情况下,只有由对作业、单用户访问模式和共享访问模式群集具有“CAN MANAGE”权限的用户才能查看 Spark 驱动程序日志。 若要允许具有“CAN ATTACH TO”或“CAN RESTART”权限的用户查看这些群集上的日志,请在群集配置中设置以下 Spark 配置属性:spark.databricks.acl.needAdminPermissionToViewLogs false

在“无隔离共享”访问模式群集上,具有“CAN ATTACH TO”或“CAN MANAGE”权限的用户可以查看 Spark 驱动程序日志。 若要限制只有具有“CAN MANAGE”权限的用户才能读取日志,请将 spark.databricks.acl.needAdminPermissionToViewLogs 设置为 true

请参阅 Spark 配置来了解如何将 Spark 属性添加到群集配置。

作业的默认特权

作业默认设置了以下权限:

  • 作业的创建者被授予“为所有者”权限。
  • 工作区管理员被授予“可管理”权限。
  • 作业的创建者设置“运行身份”

作业的管理员权限

默认情况下,工作区管理员可以将作业所有者或“运行身份”配置更改为工作区中的任何用户或服务主体。 帐户管理员可以配置 RestrictWorkspaceAdmins 设置以更改此行为。 请参阅限制工作区管理员

作业如何与 Unity Catalog 权限交互?

作业在“运行方式”设置中作为用户的标识运行。 根据以下权限授予评估此标识:

  • Unity Catalog 托管的资产,包括表、卷、模型和视图。
  • 旧版 Hive 元存储中注册的资产的旧表访问控制列表 (ACL)。
  • 计算、笔记本、查询和其他工作区资产的 ACL。
  • Databricks 机密。 请参阅机密管理

注意

Unity Catalog 授予和旧表 ACL 需要兼容的计算访问模式。 请参阅配置作业的计算

SQL 任务和权限

文件任务是唯一完全遵循“运行身份” 标识的 SQL 任务类型。

SQL 查询、警报和旧仪表板任务遵循配置的共享设置。

  • “以所有者身份运行”:计划的 SQL 任务的运行始终使用已配置的 SQL 资产所有者的标识。
  • “以查看者身份运行”:计划的 SQL 任务的运行始终使用作业“运行身份”字段中设置的标识。

要了解有关查询共享设置的详细信息,请参阅配置查询权限

示例

以下应用场景演示了 SQL 共享设置和作业“运行身份”设置的交互:

  • 用户 A 是名为 my_query 的 SQL 查询的所有者。
  • 用户 A 使用共享设置“以所有者身份运行”配置 my_query
  • 用户 B 将 my_query 计划为名为 my_job 的作业中的任务。
  • 用户 B 将 my_job 配置为使用名为 prod_sp 的服务主体运行。
  • my_job 运行时,它将使用用户 A 的标识来运行 my_query

现在假设用户 B 不需要此行为。 从现有配置开始,将发生以下情况:

  • 用户 A 将 my_query 的共享设置更改为“以查看者身份运行”
  • my_job 运行时,它使用标识 prod_sp

为作业运行配置标识

若要更改“运行身份”设置,必须对作业具有“可管理”或“为所有者”权限。

可以将“运行身份”设置设为自己,也可以设置为自己具有“服务主体用户”权利的工作区中的任何服务主体。

若要在工作区 UI 中为作业配置“运行身份”设置,请使用以下步骤选择现有作业:

  1. 单击边栏中 工作流图标工作流”。
  2. 在“名称”列中单击作业名称。
  3. 在“作业详细信息”侧面板中,单击“运行身份”字段旁边的铅笔图标。
  4. 搜索并选择用户或服务主体。
  5. 单击“ 保存”。

有关使用服务主体的详细信息,请参阅以下内容:

作业治理最佳做法

Databricks 建议对所有生产作业执行以下操作:

  • 将作业所有权分配给服务主体

    如果拥有作业的用户离开组织,该作业可能会失败。 使用服务主体使作业不受员工流失的影响。

    默认情况下,工作区管理员可以根据需要管理作业权限并重新分配所有权。

  • 使用服务主体运行生产作业

    默认情况下,作业使用作业所有者的特权运行。 如果将所有权分配给服务主体,作业运行将使用服务主体的权限。

    将服务主体用于生产作业可以限制对生产数据的写入权限。 如果你使用用户的权限运行作业,则该用户需要相同的权限才能编辑作业所需的生产数据。

  • 始终使用兼容 Unity Catalog 的计算配置

    Unity Catalog 数据治理要求使用支持的计算配置。

    对于具有经典计算的作业,Databricks 建议对支持的工作负载使用共享访问模式。 如果需要,请使用单用户访问模式。

    配置有 Unity Catalog 的增量实时表管道具有一些限制。 请参阅限制

  • 限制对生产作业的权限

    触发、停止或重启作业运行的用户需要“可以管理运行”权限。

    查看作业配置或监视运行的用户需要“可以查看”权限。

    仅向受信任的用户授予“可管理”或“为所有者”权限以修改生产代码。

控制对作业的访问

作业所有者和管理员可以通过作业访问控制授予对作业的精细权限。 可以使用以下权限:

注意

每个权限都包含下表中其下面的权限授予。

权限 授予
为所有者 默认情况下,用于“运行身份”的标识。
可管理 用户可以编辑作业定义,包括权限。 用户可以暂停和恢复计划。
可以管理运行 用户可以触发和取消作业运行。
可以查看 用户可以查看作业运行结果。

有关作业权限级别的信息,请参阅 作业 ACL

配置作业权限

若要在工作区 UI 中配置作业的权限,请使用以下步骤选择现有作业:

  1. 单击边栏中 工作流图标工作流”。
  2. 在“名称”列中单击作业名称。
  3. 在“作业详细信息”面板中,单击“编辑权限”。 此时将显示权限设置对话框
  4. 单击“选择用户、组或服务主体...”字段,然后开始键入用户、组或服务主体。 该字段搜索工作区中的所有可用标识。
  5. 单击“添加” 。
  6. 单击“ 保存”。

管理作业所有者

只有工作区管理员可以编辑作业所有者。 必须只分配一个作业所有者。 作业所有者可以是用户或服务主体。