管理 Databricks 作业的标识、权限和特权
本文包含有关管理 Databricks 作业标识、权限和特权的建议和说明。
注意
不会从群集的 Spark 驱动程序日志 stdout
和 stderr
流中修订机密。 为了保护敏感数据,默认情况下,只有由对作业、单用户访问模式和共享访问模式群集具有“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 中为作业配置“运行身份”设置,请使用以下步骤选择现有作业:
- 单击边栏中 “工作流”。
- 在“名称”列中单击作业名称。
- 在“作业详细信息”侧面板中,单击“运行身份”字段旁边的铅笔图标。
- 搜索并选择用户或服务主体。
- 单击“ 保存”。
有关使用服务主体的详细信息,请参阅以下内容:
作业治理最佳做法
Databricks 建议对所有生产作业执行以下操作:
将作业所有权分配给服务主体
如果拥有作业的用户离开组织,该作业可能会失败。 使用服务主体使作业不受员工流失的影响。
默认情况下,工作区管理员可以根据需要管理作业权限并重新分配所有权。
使用服务主体运行生产作业
默认情况下,作业使用作业所有者的特权运行。 如果将所有权分配给服务主体,作业运行将使用服务主体的权限。
将服务主体用于生产作业可以限制对生产数据的写入权限。 如果你使用用户的权限运行作业,则该用户需要相同的权限才能编辑作业所需的生产数据。
始终使用兼容 Unity Catalog 的计算配置
Unity Catalog 数据治理要求使用支持的计算配置。
对于具有经典计算的作业,Databricks 建议对支持的工作负载使用共享访问模式。 如果需要,请使用单用户访问模式。
配置有 Unity Catalog 的增量实时表管道具有一些限制。 请参阅限制。
限制对生产作业的权限
触发、停止或重启作业运行的用户需要“可以管理运行”权限。
查看作业配置或监视运行的用户需要“可以查看”权限。
仅向受信任的用户授予“可管理”或“为所有者”权限以修改生产代码。
控制对作业的访问
作业所有者和管理员可以通过作业访问控制授予对作业的精细权限。 可以使用以下权限:
注意
每个权限都包含下表中其下面的权限授予。
权限 | 授予 |
---|---|
为所有者 | 默认情况下,用于“运行身份”的标识。 |
可管理 | 用户可以编辑作业定义,包括权限。 用户可以暂停和恢复计划。 |
可以管理运行 | 用户可以触发和取消作业运行。 |
可以查看 | 用户可以查看作业运行结果。 |
有关作业权限级别的信息,请参阅 作业 ACL。
配置作业权限
若要在工作区 UI 中配置作业的权限,请使用以下步骤选择现有作业:
- 单击边栏中 “工作流”。
- 在“名称”列中单击作业名称。
- 在“作业详细信息”面板中,单击“编辑权限”。 此时将显示权限设置对话框。
- 单击“选择用户、组或服务主体...”字段,然后开始键入用户、组或服务主体。 该字段搜索工作区中的所有可用标识。
- 单击“添加” 。
- 单击“ 保存”。
管理作业所有者
只有工作区管理员可以编辑作业所有者。 必须只分配一个作业所有者。 作业所有者可以是用户或服务主体。