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

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

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

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

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

哪种身份用于管道更新?

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

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

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

谁可以执行管道更新?

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

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

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

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

配置管道权限

你必须在管道上拥有 CAN MANAGEIS 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)隔离在名称清晰的架构中的特定列或表内,以便更容易管理和审计访问授权。