将资源添加到 Databricks 应用

Databricks 应用可以与各种 Azure Databricks 平台功能集成,如用于查询数据的 Databricks SQL、用于数据引入和处理的 Lakeflow Jobs、用于访问生成 AI 模型的 Mosaic AI Model Serving,以及用于管理敏感信息的 Azure Databricks 机密。 在应用上下文中,这些平台功能称为 资源

为什么要使用资源?

若要使应用可移植且安全,请避免硬编码资源 ID。 例如,通过 Databricks Apps UI 将 SQL 仓库配置为资源,而不是在应用代码中嵌入固定 SQL 仓库 ID。

使用 Databricks Apps 资源而不是直接 API 调用具有以下优势:

  • 自动管理凭据和权限,这消除了代码中的手动令牌处理。
  • 自动处理资源路径、终结点和连接详细信息。
  • 提供安全的托管访问,而不是要求使用自管理凭据进行直接 API 调用。
  • 使应用在环境之间可移植,而无需更改代码。

支持的资源类型

下表列出了可添加到 Databricks 应用的所有资源类型:

资源类型 Description 默认资源密钥 可用权限
Genie 空间 适用于自然语言查询的 AI 驱动的分析界面 genie-space
  • 可以查看
  • 可以运行
  • 可以编辑
  • 可以管理
Lakebase 数据库 用于数据存储和查询的 Unity 目录数据库 database
  • 可以连接和创建
Lakeflow 作业 数据引入和处理工作流 job
  • 可以查看
  • 可以管理运行
  • 可以管理
模型服务终结点 用于推理请求的机器学习模型部署 serving-endpoint
  • 可以查看
  • 可以查询
  • 可以管理
机密 保护敏感值的存储,例如 API 密钥和令牌 secret
  • 可以读取
  • 能够写入
  • 可以管理
SQL 仓库 用于运行 SQL 查询的计算资源 sql-warehouse
  • 可使用
  • 可以管理
Unity 目录卷 应用项目和数据在 Unity 目录中的文件存储 volume
  • 可以读取
  • 可以读写

先决条件

若要将资源添加到应用,必须满足以下条件:

  • 资源必须存在。
  • 添加资源的用户必须具有 Can manage 对资源和应用的权限。

应用以最低特权运行,并依赖于 Azure Databricks 平台中的现有资源。 部署后,应用的服务主体将访问这些资源,并且必须具有必要的权限,例如 SQL 查询的表级访问权限或对机密的读取访问权限。 请参阅 Databricks 应用中配置授权

为应用配置资源

资源允许应用安全地连接到它依赖的服务,而无需对敏感值或特定于环境的值进行硬编码。

创建或编辑应用时,直接在 Databricks 应用 UI 中添加资源。

  1. 在创建或编辑流的 “应用资源 ”部分中,单击“ + 添加资源”。
  2. 选择要添加的资源类型。
  3. 设置资源上应用服务主体的权限。
  4. 将密钥分配给资源,并在文件中引用该密钥 app.yaml

在 UI 中将 SQL 仓库添加为应用资源

管理对资源的应用访问权限

每个应用都有一个专用 的服务主体。 遵循以下最佳做法安全地管理访问。

  • 使用应用的服务主体进行身份验证。 从不对代码中的个人访问令牌(PAT)进行硬编码。 访问凭据作为环境变量自动注入:
    • DATABRICKS_CLIENT_ID
    • DATABRICKS_CLIENT_SECRET
  • 不要在应用之间或跨用户共享服务主体凭据。 每个应用都应使用自己的专用凭据进行隔离和安全性。
  • 应用最低特权访问权限。 仅向应用的服务主体授予所需的最低权限。 例如:
    • 如果应用程序只需要运行查询,则为 SQL 仓库授予 CAN USE 权限。
    • 如果应用仅发送推理请求,则授予服务端点 CAN QUERY 的权限。
    • 根据应用的数据访问需求,在 Unity Catalog 目录表上授予 SELECTMODIFY

后续步骤

在将资源添加到应用后,请在应用配置的env部分中通过valueFrom字段引用这些资源。 有关说明,请参阅 Databricks 应用中定义环境变量