本文包含关于管理 Lakeflow Jobs 的身份、权限和特权的建议和说明。
注意
不会从群集的 Spark 驱动程序日志  和 stdout 流中修订stderr。 为了保护敏感数据,默认情况下,Spark 驱动程序日志只能由对作业具有 CAN MANAGE 权限的用户、专用访问模式和标准访问模式群集查看。 若要允许具有“CAN ATTACH TO”或“CAN RESTART”权限的用户查看这些群集上的日志,请在群集配置中设置以下 Spark 配置属性:spark.databricks.acl.needAdminPermissionToViewLogs false。
在无隔离共享访问模式群集上,Spark 驱动程序日志可由具有 CAN ATTACH TO、CAN RESTART 或 CAN MANAGE 权限的用户查看。 若要限制只有具有“CAN MANAGE”权限的用户才能读取日志,请将 spark.databricks.acl.needAdminPermissionToViewLogs 设置为 true。
请参阅 Spark 配置来了解如何将 Spark 属性添加到群集配置。
作业特权和以某用户身份运行
作业是 Azure Databricks 中的对象,具有允许访问或管理这些作业的权限。 本页将这些特权描述为 作业特权 (或权限)。
作业还代表具有自己权限的用户(或主体)运行和执行任务,以操作作业所引用的资源。 作业所模拟的用户称为“以用户身份运行”,而此页面上的这些特权称为“以用户身份运行的权限”(或权限)。 运行作业时,将使用 “以用户身份运行 ”权限。
例如,如果用户 A 创建作业并将 运行方式 用户设置为 用户 B,则作业将使用用户 B 的权限运行。 如果用户 C 运行作业,该作业仍将使用用户 B 的权限运行。 这意味着,可以让某人能够运行作业,从他们自己无权访问的数据集获取信息。
作业的默认特权
作业默认设置了以下权限:
- 作业的创建者被授予对作业的 IS OWNER 权限。
- 工作区管理员被授予“CAN MANAGE”权限来管理作业。
- 作业的创建者设置“运行身份”。
- 运行作业时使用 以...身份运行 的用户权限(包括作业中的任务)。
由于默认设置是将创建者同时设置为所有者和 Run as 用户,因此在默认情况下,运行作业时会使用创建者的权限。 Databricks 建议将 以...身份运行 用户更改为服务主体,以便特权可以独立于所有者的权限进行控制,从而在所有者离开或更改权限时,不会导致作业中断。
作业的管理员权限
默认情况下,工作区管理员可以将作业所有者或“运行身份”配置更改为工作区中的任何用户或服务主体。 帐户管理员可以配置 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 中为作业配置“运行身份”设置,请使用以下步骤选择现有作业:
- 在 Azure Databricks 工作区的边栏中,单击作业和管道。 
- (可选)选择 “任务” 和 “我拥有的” 筛选器,以便更轻松地查找任务。 
- 单击列表中的作业名称。 
- 在“作业详细信息”侧面板中,单击“运行身份”字段旁边的铅笔图标。 
- 搜索并选择用户或服务主体。 
- 单击“ 保存”。 
有关使用服务主体的详细信息,请参阅以下内容:
- 服务主体
- 用于管理服务主体的角色
- 列出可用的服务主体。
作业治理最佳做法
Databricks 建议对所有生产作业执行以下操作:
- 使用服务主体运行生产作业 - 默认情况下,作业以作业创建者 身份运行 。 如果以身份运行的用户离开组织,作业可能会失败。 - 如果将 以...身份运行 用户分配给服务主体,作业运行将使用服务主体的权限,当用户离开或权限发生变化时不会更改。 - 默认情况下,工作区管理员可以根据需要管理作业权限并重新分配所有权。 - 使用服务主体进行生产作业还能限制对生产数据的写入权限。 如果你使用用户的权限运行作业,则该用户需要相同的权限才能编辑作业所需的生产数据。 
- 始终使用兼容 Unity Catalog 的计算配置 - Unity Catalog 数据治理要求使用支持的计算配置。 - 对于具有经典计算的作业,Databricks 建议对支持的工作负荷使用标准访问模式。 根据需要使用专用访问模式。 - 配置有 Unity 目录的 Lakeflow 声明性管道存在一些限制。 请参阅限制。 
- 限制生产作业的作业特权 - 作业权限控制谁可以查看、运行或管理作业。 - 查看作业配置或监视运行的用户需要“可以查看”权限。
- 触发、停止或重启作业运行的用户需要“可以管理运行”权限。
- 仅向受信任的用户授予“可管理”或“为所有者”权限以修改生产代码。
 
控制对作业的访问
作业所有者和管理员可以通过作业访问控制授予对作业的精细权限。 可以使用以下权限:
注意
每个权限都包含下表中其下面的权限授予。
| 权限 | 授予 | 
|---|---|
| 为所有者 | 默认情况下,用于“运行身份”的标识。 可以将 “运行方式”设置为 替代此用户。 | 
| 可管理 | 可以编辑作业定义,包括配置、任务和权限。 可以暂停和恢复计划。 | 
| 可管理运行 | 可以触发和取消作业运行。 | 
| 可查看 | 可以查看作业运行结果,包括详细信息、历史记录和状态。 | 
- 默认情况下,作业的创建者具有 IS OWNER 权限。 
- 作业不能有多个所有者。 
- 无法将组作为所有者分配 IS OWNER 权限。 
- 通过 “立即运行” 触发的作业假定 运行为 用户(默认情况下是所有者)的权限,而不是发出 “立即运行”的用户。 
- 作业访问控制适用于 作业和管道 UI 中显示的作业及其运行。 它不适用于: 
有关作业权限级别的信息,请参阅 作业 ACL。
配置作业权限
若要在工作区 UI 中配置作业的权限,请使用以下步骤选择现有作业:
- 在 Azure Databricks 工作区的边栏中,单击作业和管道。 
- (可选)选择作业和归我所有筛选器。 
- 单击作业的名称链接。 
- 在“作业详细信息”面板中,单击“编辑权限”。 此时将显示权限设置对话框。 
- 单击“选择用户、组或服务主体...”字段,然后开始键入用户、组或服务主体。 该字段搜索工作区中的所有可用标识。 
- 单击“添加” 。 
- 单击“ 保存”。 
管理作业所有者
只有工作区管理员可以编辑作业所有者。 必须只分配一个作业所有者。 作业所有者可以是用户或服务主体。