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 中添加资源。
- 在创建或编辑流的 “应用资源 ”部分中,单击“ + 添加资源”。
- 选择要添加的资源类型。
- 设置资源上应用服务主体的权限。
- 将密钥分配给资源,并在文件中引用该密钥
app.yaml。
管理对资源的应用访问权限
每个应用都有一个专用 的服务主体。 遵循以下最佳做法安全地管理访问。
- 使用应用的服务主体进行身份验证。 从不对代码中的个人访问令牌(PAT)进行硬编码。 访问凭据作为环境变量自动注入:
DATABRICKS_CLIENT_IDDATABRICKS_CLIENT_SECRET
- 不要在应用之间或跨用户共享服务主体凭据。 每个应用都应使用自己的专用凭据进行隔离和安全性。
- 应用最低特权访问权限。 仅向应用的服务主体授予所需的最低权限。 例如:
- 如果应用程序只需要运行查询,则为 SQL 仓库授予
CAN USE权限。 - 如果应用仅发送推理请求,则授予服务端点
CAN QUERY的权限。 - 根据应用的数据访问需求,在 Unity Catalog 目录表上授予
SELECT或MODIFY。
- 如果应用程序只需要运行查询,则为 SQL 仓库授予
后续步骤
在将资源添加到应用后,请在应用配置的env部分中通过valueFrom字段引用这些资源。 有关说明,请参阅 Databricks 应用中定义环境变量。