本页介绍如何使用 Databricks CLI 和 REST API 授权访问 Azure Databricks 资源。 它介绍了不同的授权方法、何时使用它们以及如何为用例配置身份验证。
若要使用 CLI 或 REST API 访问 Azure Databricks 资源,必须使用具有适当权限的 Azure Databricks 帐户进行身份验证。 Azure Databricks 管理员或具有管理员权限的用户配置帐户。
帐户和 API 类型
有两种类型的帐户可用于身份验证:
- 用户帐户: 对于交互式 CLI 命令和 API 调用。
- 服务主体: 对于无需人工交互的自动化 CLI 命令和 API 调用。
可以使用 MS Entra 服务主体来授权访问 Azure Databricks 帐户或工作区。 请参阅使用 Microsoft Entra 服务主体进行身份验证。 但是,Databricks 建议将 Databricks 服务主体与 OAuth 配合使用,因为它的访问令牌对于仅 Databricks 授权更可靠。
Azure Databricks 有两种类型的 API,这些 API 需要不同的身份验证方法:
- 帐户级 API: 可用于帐户所有者和管理员,托管在帐户控制台 URL 上。 请参阅 帐户级 API。
- 工作区级 API: 可用于工作区用户和管理员,托管在工作区 URL 中。 请参阅 工作区级 API。
授权方法
选择最适合你的用例的授权方法。 Azure Databricks 工具和 SDK 支持多种授权方法,因此你可以为方案选择最合适的方法。
| Method | Description | 用例 |
|---|---|---|
| Databricks OAuth 令牌联合身份验证(建议) | 来自用户或服务主体标识提供程序的 OAuth 令牌。 | 使你能够在不管理 Databricks 机密的情况下向 Azure Databricks 进行身份验证。 |
| Databricks 服务主体的 OAuth | 服务主体的短期 OAuth 令牌。 | 无人值守、自动化和 CI/CD 工作流,使用带有客户端密钥的机器对机器(M2M)OAuth。 作为服务主体进行交互式访问且不使用客户端机密时,请使用测试版中的 OAuth 代表用户(OBO)流。 参见 使用 OAuth OBO 以服务主体身份进行身份验证。 |
| 面向用户的 OAuth(OAuth U2M) | 用户的短期 OAuth 令牌。 | 有人参与的身份验证应用场景,在出现提示时使用 Web 浏览器实时对 Azure Databricks 进行身份验证。 |
| Azure 托管服务标识授权 | 适用于 Azure 托管标识的 Microsoft Entra ID 令牌。 | 仅用于支持托管标识的 Azure 资源(例如 Azure 虚拟机)。 |
| Microsoft Entra ID 服务主体授权 | Microsoft Entra ID 服务主体的 Microsoft Entra ID 令牌。 | 仅用于支持 Microsoft Entra ID 令牌但不支持托管标识的 Azure 资源(例如 Azure DevOps)。 |
| Azure CLI 授权 | 用户或 Microsoft Entra ID 服务主体的 Microsoft Entra ID 令牌。 | 用于使用 Azure CLI 授权访问 Azure 资源和 Azure Databricks。 |
| Microsoft Entra ID 用户授权 | 用户的 Microsoft Entra ID 令牌。 | 仅用于只支持 Microsoft Entra ID 令牌的 Azure 资源。 Databricks 不建议为 Azure Databricks 用户手动创建 Microsoft Entra ID 令牌。 |
统一身份验证
Azure Databricks 统一身份验证 提供了跨所有受支持的工具和 SDK 配置身份验证的一致方法。 此方法使用标准环境变量和配置文件来存储凭据值,因此可以运行 CLI 命令或调用 API,而无需重复配置身份验证。
统一身份验证以不同的方式处理帐户类型:
- 用户授权: OAuth 会自动为支持统一身份验证的工具创建和管理访问令牌。 请参阅 授权用户使用 OAuth 访问 Azure Databricks。
- 服务主体授权: 将服务主体分配给工作区后,OAuth 需要 Azure Databricks 提供的客户端凭据(客户端 ID 和机密)。 请参阅 使用 OAuth 授权服务主体访问 Azure Databricks。
若要使用 OAuth 访问令牌,Azure Databricks 工作区或帐户管理员必须向您的用户帐户或服务主体授予用于访问您的代码将涉及的帐户和工作区功能的 CAN USE 权限。
环境变量
若要配置统一身份验证,请设置以下环境变量。 某些变量同时适用于用户和服务主体授权,而其他变量则仅适用于服务主体。
| 环境变量 | Description |
|---|---|
DATABRICKS_HOST |
Azure Databricks 帐户控制台(https://accounts.azuredatabricks.net)或 Azure Databricks 工作区(https://{workspace-url-prefix}.azuredatabricks.net)的 URL。 根据代码执行的作类型进行选择。 |
DATABRICKS_ACCOUNT_ID |
用于 Azure Databricks 帐户操作。 这是你的 Azure Databricks 帐户 ID。 若要获取它,请参阅查找帐户 ID。 |
DATABRICKS_CLIENT_ID |
(仅限服务主体 OAuth)创建服务主体时向你分配的客户端 ID。 |
DATABRICKS_CLIENT_SECRET |
(仅限服务主体 OAuth)创建服务主体时生成的客户端密码。 |
请考虑在客户端计算机上的 Databricks 配置文件 (.databrickscfg) 中定义环境变量,而不是手动设置它们。
配置文件
Azure Databricks 配置文件包含 Azure Databricks 工具和 SDK 需要授权访问的设置和凭据。 这些配置文件存储在本地客户端文件中(通常命名 .databrickscfg),供您的工具、SDK、脚本和应用程序使用。
有关详细信息,请参阅 Azure Databricks 配置文件。
第三方集成
与第三方服务和工具集成时,必须使用这些服务提供的身份验证机制。 但是,Azure Databricks 为常见集成提供支持:
- Databricks Terraform 提供程序: 使用 Azure Databricks 用户帐户从 Terraform 访问 Azure Databricks API。 请参阅 使用 Terraform 预配服务主体。
- Git 提供程序: GitHub、GitLab 和 Bitbucket 可以使用 Databricks 服务主体访问 Azure Databricks API。 请参阅 CI/CD 的服务主体。
- 詹金斯: 使用 Databricks 服务主体访问 Azure Databricks API。 请参阅 在 Azure Databricks 上使用 Jenkins 的 CI/CD。
- Azure DevOps: 使用基于 MS Entra ID 的服务主体访问 Azure Databricks API。 请参阅 在 Azure Databricks 上使用 Azure DevOps 进行身份验证。