授权访问 Azure Databricks 资源

本主题讨论使用 Azure Databricks 帐户凭据(例如用户帐户或服务主体)进行安全的 Azure Databricks CLI 或 REST API 调用的基本方法。

Azure Databricks CLI 和 API 的授权

若要使用 Databricks CLI 或 REST API 访问 Azure Databricks 资源,客户端必须使用 Azure Databricks 帐户授权。 此帐户必须有权访问资源,该资源可由 Azure Databricks 管理员或具有管理员权限的用户帐户配置。

可以使用两种类型的帐户,具体取决于你打算如何访问 Azure Databricks 资源:

  • 用户帐户: 使用此帐户以交互方式输入 Azure Databricks CLI 命令或 REST API 调用。
  • 服务主体: 使用它自动执行 Azure Databricks CLI 命令或 REST API 调用,而无需人工交互。

确定 Azure Databricks 帐户类型后,必须获取表示帐户凭据的 访问令牌。 访问脚本或代码或交互式会话中的帐户资源时,将提供此访问令牌。

  • 如果使用 Azure Databricks,还可以使用 MS Entra 服务主体来授权访问 Azure Databricks 帐户或工作区。 但是,Databricks 建议你将 Databricks 服务主体与我们提供的 OAuth 授权配合使用,而非使用 MS Entra 服务主体授权。 这是因为 Databricks 的授权使用 OAuth 访问令牌,这些令牌在仅使用 Azure Databricks 进行授权时更为可靠。

有关使用 MS Entra 服务主体访问 Databricks 资源的更多详细信息,请参阅 MS Entra 服务主体身份验证

获取访问令牌

帐户的凭据由安全访问令牌表示,你直接或间接地向 CLI 命令或 API 调用提供该令牌。

若要安全地运行需要对帐户或工作区进行授权访问权限的 Databricks CLI 命令或 API 请求,必须基于有效的 Azure Databricks 帐户凭据提供访问令牌。

下表显示了 Azure Databricks 帐户可用的授权方法。

Azure Databricks 授权方法

由于 Azure Databricks 工具和 SDK 适用于一个或多个受支持的 Azure Databricks 授权方法,因此可以为用例选择最佳授权方法。 有关详细信息,请参阅本地开发工具中的工具或 SDK 文档。

Azure Databricks 用户可能需要访问一些并非由其 Databricks 账户直接管理的 Azure 特定资源。 此表还包含用于访问这些资源的方法。 对于 Azure 资源访问,请使用 Azure 托管服务标识(MSI)或 MS Entra ID(具体取决于方案),而不是 Azure Databricks 帐户凭据。

方法 说明 用例
针对服务主体的 Databricks OAuth 服务主体的短期 OAuth 令牌。 无人参与的授权场景,例如完全自动化的 CI/CD 工作流。
针对用户的 Databricks OAuth 用户的短期 OAuth 令牌。 有人参与的授权场景,在出现提示时使用 Web 浏览器或其他交互方式进行 Databricks 授权。
Azure Databricks 个人访问令牌 (PAT) 用户或服务主体的短期或长期令牌。 仅在目标工具不支持 OAuth 的情况下使用此功能。
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 提供 2 个选项,用于使用访问令牌进行授权或身份验证:

  • 基于 OAuth 2.0 的访问令牌。
  • 个人访问令牌(PAT)。

注释

Azure Databricks 强烈建议使用 OAuth over PAT 进行授权,因为默认情况下会自动刷新 OAuth 令牌,并且不需要直接管理访问令牌,从而改善针对令牌劫持和不需要的访问的安全性。

由于 OAuth 为你创建和管理访问令牌,因此提供 OAuth 令牌终结点 URL、客户端 ID 和从 Azure Databricks 工作区生成的机密,而不是直接提供令牌字符串。 仅在集成不支持 Azure Databricks 统一客户端身份验证的第三方工具或服务,或没有 OAuth 支持时,才选择使用 PAT。

如何使用 OAuth 授权访问 Azure Databricks 资源?

Azure Databricks 提供 统一的客户端身份验证,通过一组可以设置为特定凭据值的默认环境变量来帮助你进行授权。 这可以帮助你更轻松、更安全地工作,因为这些环境变量特定于将运行 Azure Databricks CLI 命令或调用 Azure Databricks API 的环境。

  • 对于用户帐户授权,只要工具和 SDK 实现其标准,就可以使用 Databricks 客户端统一身份验证来处理 Azure Databricks OAuth 的身份验证部分(创建和管理访问令牌)。 如果没有,可以手动生成 OAuth 代码验证器和质询对,直接用于 Azure Databricks CLI 命令和 API 请求。 请参阅步骤 1:生成 OAuth 代码验证器和代码质询对
  • 对于服务主体授权,Azure Databricks OAuth 要求调用方提供客户端凭据以及可以授权请求的令牌终结点 URL。 (如果使用支持 Databricks 统一客户端身份验证的 Azure Databricks 工具和 SDK,则会为你处理此事项。)凭据包括唯一的“客户端 ID”和“客户端密码”。 客户端(即运行代码的 Databricks 服务主体)必须分配给 Databricks 工作区。 将服务主体分配给它将访问的工作区后,你将获得一个客户端 ID 和客户端密码,并将使用特定环境变量对其进行设置。

这些环境变量包括:

环境变量 说明
DATABRICKS_HOST 此环境变量设置为 Azure Databricks 帐户控制台(http://accounts.cloud.databricks.com)或 Azure Databricks 工作区 URL(https://{workspace-id}.cloud.databricks.com) 的 URL。 根据要在代码中执行的操作类型选择主机 URL 类型。 具体而言,如果使用 Azure Databricks 帐户级 CLI 命令或 REST API 请求,请将此变量设置为 Azure Databricks 帐户 URL。 如果使用 Azure Databricks 工作区级 CLI 命令或 REST API 请求,请使用 Azure Databricks 工作区 URL。
DATABRICKS_ACCOUNT_ID 用于 Azure Databricks 帐户操作。 这是你的 Azure Databricks 帐户 ID。 要获取它,请参阅查找帐户 ID
DATABRICKS_CLIENT_ID (仅限服务主体 OAuth)在创建服务主体时分配给你的客户端 ID。
DATABRICKS_CLIENT_SECRET (仅限服务主体 OAuth)你在创建服务主体时生成的客户端密码。

可以直接设置这些内容,也可以通过在客户机上使用 Databricks 配置文件 (.databrickscfg) 来设置。

要使用 OAuth 访问令牌,Azure Databricks 工作区或帐户管理员必须已向用户帐户或服务主体授予对代码将访问的帐户和工作区功能的 CAN USE 权限。

有关为客户端配置 OAuth 授权以及查看特定于云提供商的授权选项的更多详细信息,请参阅统一客户端身份验证

第三方服务和工具的身份验证

如果正在编写访问第三方服务、工具或 SDK 的代码,则必须使用第三方提供的身份验证和授权机制。 但是,如果必须授予第三方工具、SDK 或服务对 Azure Databricks 帐户或工作区资源的访问权限,Databricks 提供以下支持:

Azure Databricks 配置文件

Azure Databricks 配置文件包含 Azure Databricks 授权访问所需的设置和其他信息。 Azure Databricks 配置文件存储在本地客户端文件中,供工具、SDK、脚本和应用使用。 标准配置文件名为 .databrickscfg

有关详细信息,请参阅 Azure Databricks 配置文件