标识、权限和特权控制谁可以运行、管理和查询管道及其生成的数据。
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。
在侧边栏中,单击作业和管道。
选择管道 的名称 。
单击“共享”。 此时会显示 “权限设置” 对话框。
单击 “选择用户、组或服务主体...” ,然后选择用户、组或服务主体。
从“权限”下拉菜单中选择权限。
单击 添加。
单击“ 保存”。
更改管道所有者
默认情况下,管道所有者也是管道更新操作所使用的“运行方式用户”。 更改所有者会更改用于将来更新的标识。
如果想在不更改所有者的情况下更改管道更新所使用的标识,请设置“运行方式用户”。 请参阅设置以用户身份运行。
若要更改管道的所有者,必须同时是元存储管理员和工作区管理员。使用 UI 或 REST API 更改所有者。
使用用户界面(UI)
- 在侧边栏中,单击作业和管道。
- 选择管道 的名称 。
- 单击“共享”。 此时会显示 “权限设置” 对话框。
- 清除当前所有者,然后选择新所有者。 所有者可以是用户或服务主体。 Databricks 建议使用服务主体。 请参阅 服务主体。
- 单击“ 保存”。
使用 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)隔离在名称清晰的架构中的特定列或表内,以便更容易管理和审计访问授权。