管理管道的标识、权限和特权

标识、权限和特权控制谁可以运行、管理和查询管道及其生成的数据。

Databricks 建议对所有新管道使用 Unity Catalog。 默认情况下,由配置了 Unity Catalog 的管道创建的具体化视图和流式处理表只能由管道所有者查询。 请参阅 将 Unity Catalog 与管道结合使用。

如果您的管道将数据集发布到旧版 Hive 元存储,请参阅 将 Lakeflow 管道与旧版 Hive 元存储配合使用。

有关标识配置的一般最佳做法,请参阅 标识最佳做法。

哪种身份用于管道更新?

管道以 run-as 用户的身份处理更新。 默认情况下,管道创建者会作为运行用户,但你可以将运行用户更改为其他用户或服务主体。 请参阅设置以用户身份运行。

Databricks 建议将“运行身份”用户设置为服务主体,以便管道更新不会依赖于某个个人用户的账户。 请参阅 服务主体。

仅向该服务主体授予管道所需的 Unity Catalog 权限,而不是授予宽泛的账户级访问权限。 例如,在目标目录上授予 USE CATALOG,在输出架构上授予 SELECT 和相应的 CREATE 权限(CREATE MATERIALIZED VIEW 或 CREATE TABLE),并在其源对象上授予 USE SCHEMA。 关于发布到Unity目录所需的全部权限,请参见 需求。

谁可以执行管道更新?

管道更新可由具有 CAN RUN、CAN MANAGE 或 IS OWNER 权限的任何用户或服务主体运行。

谁可以查看管道及其输出?

若要打开管道并查看其详细信息,用户至少需要具有该管道的 CAN VIEW 权限。 有关管道权限级别的完整列表以及各级别授予的权限,请参阅 Lakeflow 管道 ACL。

若要查看支撑流式表或物化视图的管道,非管理员用户除了对该管道拥有相应权限外,还需要对该流式表或物化视图具有 REFRESH 权限。 REFRESH如果没有权限,管道 URL 会显示管道不可用。

配置管道权限

你必须在管道上拥有 CAN MANAGE 和 IS OWNER 权限才能管理权限。 管道使用访问控制列表(ACL)来控制权限。 有关权限及其功能的完整列表,请参阅 Lakeflow 管道 ACL。

  1. 在侧边栏中,单击作业和管道。

  2. 选择管道 的名称 。

  3. 单击“共享”。 此时会显示 “权限设置” 对话框。

  4. 单击 “选择用户、组或服务主体...” ,然后选择用户、组或服务主体。

  5. 从“权限”下拉菜单中选择权限。

  6. 单击 添加。

  7. 单击“ 保存”。

更改管道所有者

默认情况下,管道所有者也是管道更新操作所使用的“运行方式用户”。 更改所有者会更改用于将来更新的标识。

如果想在不更改所有者的情况下更改管道更新所使用的标识,请设置“运行方式用户”。 请参阅设置以用户身份运行。

若要更改管道的所有者,必须同时是元存储管理员和工作区管理员。使用 UI 或 REST API 更改所有者。

使用用户界面(UI)

  1. 在侧边栏中,单击作业和管道。
  2. 选择管道 的名称 。
  3. 单击“共享”。 此时会显示 “权限设置” 对话框。
  4. 清除当前所有者,然后选择新所有者。 所有者可以是用户或服务主体。 Databricks 建议使用服务主体。 请参阅 服务主体。
  5. 单击“ 保存”。

使用 REST API

如果 UI 中的所有者控件不可用,例如对于某些内部管理的管道,请使用 “设置管道权限 REST API”操作更改所有者。 使用具有 user_name 权限级别的 service_principal_name(对于服务主体,则使用 IS_OWNER)指定新所有者:

{
  "access_control_list": [
    {
      "user_name": "new.owner@example.com",
      "permission_level": "IS_OWNER"
    }
  ]
}

如果没有用户同时是元存储管理员和工作区管理员

如果组织中的任何人都不是元存储管理员和工作区管理员,请联系 Databricks 代表以更改管道所有者。

允许非管理员用户从已启用 Unity 目录的管道查看驱动程序日志

默认情况下,只有管道所有者和工作区管理员可以从运行启用了 Unity 目录的管道的群集中查看驱动程序日志。 可以通过将以下 Spark 配置参数添加到管道设置中的对象,为具有 configuration的任何用户启用对驱动程序日志的访问权限:

{
  "configuration": {
    "spark.databricks.acl.needAdminPermissionToViewLogs": "false"
  }
}

从密钥作用域引用凭据

绝不要在流水线源代码中硬编码API密钥、数据库密码或令牌。 将它们存储在机密作用域中,并在运行时引用它们:

api_token = dbutils.secrets.get(scope="orders-pipeline-secrets", key="external_api_token")

Azure Databricks 会自动遮盖机密值 ([REDACTED]),无论这些值原本会显示在笔记本还是日志输出中的任何位置;你还可以使用机密 ACL 来限制哪些用户可以读取某个作用域。 请参阅机密管理。

保护管道输出中的敏感数据

对于包含个人身份信息(PII)的列,请对流水线生成的表应用 Unity 目录治理,而不是在流水线代码中编写自定义遮罩逻辑:

  • 列掩码根据发起查询的用户所属的组,对列值进行隐藏处理或哈希处理。
  • 行筛选 限制用户能看到的行。

在 Unity Catalog 表上应用这些控制措施,可以为该表的所有使用方一致地保护个人身份信息,包括仪表板、即席查询和下游作业,而不仅仅局限于管道内部。 请参阅 行筛选器和列掩码。 进一步来说,应将个人身份信息(PII)隔离在名称清晰的架构中的特定列或表内,以便更容易管理和审计访问授权。