使用 OAuth (OAuth U2M) 通过用户帐户对 Azure Databricks 的访问进行身份验证

Azure Databricks 使用 OAuth 用户到计算机 (U2M) 身份验证来代表用户启用对 Azure Databricks 帐户和工作区资源的 CLI 和 API 访问。 在用户最初登录并同意 OAuth 身份验证请求后,系统会向参与工具或 SDK 提供 OAuth 令牌,以便从那时起代表用户执行基于令牌的身份验证。 OAuth 令牌的有效期为一小时,之后所涉及的工具或 SDK 将在后台自动尝试获取有效期同样为一小时的新令牌。

Azure Databricks 支持两种使用 OAuth 对用户帐户的访问进行身份验证的方法:

  • 大多数情况下,使用 Databricks 统一客户端身份验证支持。 如果使用特定的 Azure Databricks SDK(如 Databricks Terraform SDK)和工具,请使用这种简化的方法。 Databricks 统一客户端身份验证中列出了支持的工具和 SDK。
  • 手动,通过直接生成 OAuth 代码验证器/质询对和授权码,并使用它们创建将在配置中提供的初始 OAuth 令牌。 当不使用 Databricks 统一客户端身份验证支持的 API 时,请使用此方法。 有关更多详细信息,请参阅:手动生成和使用 OAuth 用户到计算机 (U2M) 身份验证的访问令牌

使用 Databricks 统一客户端身份验证进行 U2M 身份验证

注意

在开始配置身份验证之前,请查看工作区对象上特定类别的操作的 ACL 权限,并确定帐户是否具有所需的访问级别。 有关更多详细信息,请参阅访问控制列表

若要使用支持统一客户端身份验证的 Azure Databricks SDK 和工具执行 OAuth U2M 身份验证,请在代码中集成以下内容:

环境

若要通过工具或 SDK 对特定 Azure Databricks 身份验证类型使用环境变量,请参阅对 Azure Databricks 资源的访问进行身份验证,或该工具或 SDK 的相关文档。 另请参阅客户端统一身份验证的环境变量和字段客户端统一身份验证的默认方法

对于帐户级操作,请设置以下环境变量:

  • DATABRICKS_HOST,设置为 Azure Databricks 帐户控制台 URL 的值,即 https://accounts.databricks.azure.cn
  • DATABRICKS_ACCOUNT_ID

对于工作区级操作,请设置以下环境变量:

  • DATABRICKS_HOST,设置为 Azure Databricks 每工作区 URL 的值,例如 https://adb-1234567890123456.7.databricks.azure.cn

配置文件

.databrickscfg 文件中使用以下字段创建或标识 Azure Databricks 配置文件。 如果创建配置文件,请将占位符替换为相应值。 若要通过工具或 SDK 使用配置文件,请参阅对 Azure Databricks 资源的访问进行身份验证,或该工具或 SDK 的相关文档。 另请参阅客户端统一身份验证的环境变量和字段客户端统一身份验证的默认方法

对于帐户级操作,请在 .databrickscfg 文件中设置以下值。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.databricks.azure.cn

[<some-unique-configuration-profile-name>]
host       = <account-console-url>
account_id = <account-id>

对于工作区级操作,请在 .databrickscfg 文件中设置以下值。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

[<some-unique-configuration-profile-name>]
host = <workspace-url>

CLI

对于 Databricks CLI,请使用以下选项运行 databricks auth login 命令:

运行此命令后,请按照 Web 浏览器中的说明登录到 Azure Databricks 帐户或工作区。

有关更多详细信息,请参阅使用 Databricks CLI 进行 OAuth U2M 身份验证

连接

注意

以下 Databricks Connect 版本支持 OAuth U2M 身份验证:

  • 对于 Python,适用于 Databricks Runtime 13.1 及更高版本的 Databricks Connect。
  • 对于 Scala,适用于 Databricks Runtime 13.3 LTS 及更低版本的 Databricks Connect。

对于 Databricks Connect,可以执行以下操作之一:

  • 按照本文“配置文件”部分所述为 Azure Databricks 工作区级别操作设置 .databrickscfg 文件中的值。 此外,将配置文件中的 cluster_id 环境变量设置为每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn
  • 按照本文“环境”部分所述为 Azure Databricks 工作区级别操作设置环境变量。 此外,将 DATABRICKS_CLUSTER_ID 环境变量设置为每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

.databrickscfg 文件中的值始终优先于环境变量。

若要使用 .databrickscfg 文件中的以下环境变量或值初始化 Databricks Connect 客户端,请参阅以内容之一:

VS Code

对于适用于 Visual Studio Code 的 Databricks 扩展,请执行以下操作:

  1. 在“配置”窗格中单击“配置 Databricks”。
  2. 在“命令面板”中,对于“Databricks 主机”,请输入每个工作区的 URL(例如 https://adb-1234567890123456.7.databricks.azure.cn),然后按 Enter
  3. 选择 OAuth(用户到计算机)。
  4. 在 Web 浏览器中完成屏幕上的说明,以使用 Azure Databricks 帐户完成身份验证并允许 all-apis 访问。

有关更多详细信息,请参阅使用 Databricks CLI 进行 OAuth U2M 身份验证

Terraform

注意

尚不支持 OAuth U2M 身份验证。

Python

对于帐户级别工作区级别的操作,必须在运行 Python 代码之前使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上的用户主文件夹内的路径 .databricks/token-cache.json 中生成并缓存所需的 OAuth 令牌:

配置 Databricks 帐户级别操作

databricks auth login --host <account-console-url> --account-id <account-id>

替换以下占位符:

  • <account-console-url> 替换为 https://accounts.databricks.azure.cn 值。 (不要将其设置为 Azure Databricks 工作区 URL 的值。)
  • <account-id> 替换为 Azure Databricks 帐户的值。 请参阅查找帐户 ID

注意

如果已有已设置 hostaccount_id 字段的 Azure Databricks 配置文件,则可以用 --profile <profile-name> 代替 --host <account-console-url> --account-id <account-id>

运行 auth login 命令后,系统会提示你将帐户登录 URL 和帐户 ID 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg 文件中现有配置文件的名称。 .databrickscfg 文件中任何具有相同名称的现有配置文件都会被覆盖。

如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Python 代码:

对于默认身份验证

from databricks.sdk import AccountClient

a = AccountClient()
# ...

对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.databricks.azure.cn

from databricks.sdk import AccountClient

a = AccountClient(
  host       = retrieveAccountConsoleUrl(),
  account_id = retrieveAccountId()
)
# ...

配置 Databricks 工作区级别操作

databricks auth login --host <worskpace-url>

将占位符 <workspace-url> 替换为目标 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

注意

如果已有已设置 host 字段的现有 Azure Databricks 配置文件,则可以用 --profile <profile-name> 代替 --host <workspace-url>

运行 auth login 命令后,系统会提示你将工作区 URL 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg 文件中现有配置文件的名称。 .databrickscfg 文件中任何具有相同名称的现有配置文件都会被覆盖。

如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Python 代码:

对于默认身份验证

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(host = retrieveWorkspaceUrl())
# ...

有关借助使用 Python 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅:

Java

对于帐户级别工作区级别的操作,必须在运行 Java 代码之前使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上用户主文件夹的 .databricks/token-cache.json 路径中生成并缓存必要的 OAuth 令牌:

配置 Databricks 帐户级别操作

databricks auth login --host <account-console-url> --account-id <account-id>

替换以下占位符:

  • <account-console-url> 替换为 https://accounts.databricks.azure.cn 值。 (不要将其设置为 Azure Databricks 工作区 URL 的值。)
  • <account-id> 替换为 Azure Databricks 帐户的值。 请参阅查找帐户 ID

注意

如果已有已设置 hostaccount_id 字段的 Azure Databricks 配置文件,则可以用 --profile <profile-name> 代替 --host <account-console-url> --account-id <account-id>

运行 auth login 命令后,系统会提示你将帐户登录 URL 和帐户 ID 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg 文件中现有配置文件的名称。 .databrickscfg 文件中任何具有相同名称的现有配置文件都会被覆盖。

如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Java 代码:

对于默认身份验证

import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...

对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.databricks.azure.cn

import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveAccountConsoleUrl())
  .setAccountId(retrieveAccountId());
AccountClient a = new AccountClient(cfg);
// ...

配置 Databricks 工作区级别操作

对于工作区级别操作,应在运行 Java 代码之前先使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上的用户主文件夹内的路径 .databricks/token-cache.json 中生成并缓存所需的 OAuth 令牌:

databricks auth login --host <worskpace-url>

将占位符 <workspace-url> 替换为目标 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

注意

如果已有已设置 host 字段的现有 Azure Databricks 配置文件,则可以用 --profile <profile-name> 代替 --host <workspace-url>

运行 auth login 命令后,系统会提示你将工作区 URL 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg 文件中现有配置文件的名称。 .databrickscfg 文件中任何具有相同名称的现有配置文件都会被覆盖。

如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Java 代码:

对于默认身份验证

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

有关借助使用 Java 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅:

Go

对于帐户级别工作区级别的操作,必须在运行 Go 代码之前使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上的用户主文件夹内的路径 .databricks/token-cache.json 中生成并缓存所需的 OAuth 令牌:

配置 Databricks 帐户级别操作

databricks auth login --host <account-login-url> --account-id <account-id>

替换以下占位符:

  • <account-console-url> 替换为 https://accounts.databricks.azure.cn 值。 (不要将其设置为 Azure Databricks 工作区 URL 的值。)
  • <account-id> 替换为 Azure Databricks 帐户的值。 请参阅查找帐户 ID

注意

如果已有已设置 hostaccount_id 字段的 Azure Databricks 配置文件,则可以用 --profile <profile-name> 代替 --host <account-console-url> --account-id <account-id>

运行 auth login 命令后,系统会提示你将帐户登录 URL 和帐户 ID 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg 文件中现有配置文件的名称。 .databrickscfg 文件中任何具有相同名称的现有配置文件都会被覆盖。

如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Go 代码:

对于默认身份验证

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.databricks.azure.cn

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:      retrieveAccountConsoleUrl(),
  AccountId: retrieveAccountId(),
}))
// ...

配置 Databricks 工作区级别操作

对于工作区级别操作,应在运行 Go 代码之前先使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上的用户主文件夹内的路径 .databricks/token-cache.json 中生成并缓存所需的 OAuth 令牌:

databricks auth login --host <worskpace-url>

将占位符 <workspace-url> 替换为目标 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

注意

如果已有已设置 host 字段的现有 Azure Databricks 配置文件,则可以用 --profile <profile-name> 代替 --host <workspace-url>

运行 auth login 命令后,系统会提示你将工作区 URL 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg 文件中现有配置文件的名称。 .databrickscfg 文件中任何具有相同名称的现有配置文件都会被覆盖。

如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Go 代码:

对于默认身份验证

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host: retrieveWorkspaceUrl(),
}))
// ...

有关借助使用 Go 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅使用 Azure Databricks 帐户或工作区对 Databricks SDK for Go 进行身份验证

手动生成和使用 OAuth 用户到计算机 (U2M) 身份验证的访问令牌

实施 Databricks 客户端统一身份验证标准的 Azure Databricks 工具和 SDK 将根据 OAuth U2M 身份验证的需要,以你的名义自动生成、刷新和使用 Azure Databricks OAuth 访问令牌。

如果出于某种原因,必须手动生成、刷新或使用 Azure Databricks OAuth 访问令牌进行 OAuth U2M 身份验证,请按照本部分中的说明进行操作。

步骤 1:生成 OAuth 代码验证器和代码质询对

若要手动生成和使用 OAuth U2M 身份验证的访问令牌,必须先拥有一个 OAuth 代码验证器和从该代码验证器派生的 OAuth 代码质询。 在步骤 2 中使用代码质询来生成 OAuth 授权代码。 在步骤 3 中使用代码验证器和授权代码生成 OAuth 访问令牌。

注意

虽然从技术上讲,可以将未编码的纯文本字符串用于代码验证器和代码质询,但 Databricks 强烈建议遵循 OAuth 标准来生成代码验证器和代码质询

具体而言,代码验证程序应是使用集 A-Za-z0-9-._~ 标点符号(连字符、句点、下划线和波浪号)的加密随机字符串,长度为 43 到 128 个字符。 代码质询应是代码验证程序 SHA256 哈希的 Base64 URL 编码字符串。 有关详细信息,请参阅授权请求

可以运行以下 Python 脚本来快速生成一对唯一的代码验证器和代码质询。 虽然可以多次重复使用这对生成的代码验证器和代码质询,但 Databricks 建议每次手动生成 OAuth U2M 身份验证的访问令牌时,都生成一对新的代码验证器和代码质询。

import uuid, hashlib, base64

# Generate a UUID.
uuid1 = uuid.uuid4()

# Convert the UUID to a string.
uuid_str1 = str(uuid1).upper()

# Create the code verifier.
code_verifier = uuid_str1 + "-" + uuid_str1

# Create the code challenge based on the code verifier.
code_challenge = base64.urlsafe_b64encode(hashlib.sha256(code_verifier.encode()).digest()).decode('utf-8')

# Remove all padding from the code challenge.
code_challenge = code_challenge.replace('=', '')

# Print the code verifier and the code challenge.
# Use these in your calls to manually generate
# access tokens for OAuth U2M authentication.
print(f"code_verifier:  {code_verifier}")
print(f"code_challenge: {code_challenge}")

步骤 2:生成授权代码

使用 OAuth 授权代码生成 Azure Databricks OAuth 访问令牌。 授权代码会在用于生成 Azure Databricks OAuth 访问令牌后立即过期。 授权代码的范围取决于其生成自何种级别。 可以在 Azure Databricks 帐户级别或工作区级别生成授权代码,如下所示:

生成帐户级授权代码

  1. 作为帐户管理员,登录到帐户控制台

  2. 单击右上角用户名旁边的向下箭头。

  3. 复制你的帐户 ID

  4. 在 Web 浏览器的地址栏中,浏览到以下 URL: 为清楚起见,添加了换行符。 URL 不得包含以下换行符。

    在以下 URL 中,替换以下内容:

    • <account-id> 替换为复制的帐户 ID。
    • <redirect-url> 替换为本地计算机的重定向 URL,例如 http://localhost:8020
    • <state> 替换为一些可用于验证授权代码完整性的纯文本字符串。
    • <code-challenge> 替换为步骤 1 中生成的代码质询。
    https://accounts.databricks.azure.cn/oidc/accounts/<account-id>/v1/authorize
    ?client_id=databricks-cli
    &redirect_url=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  5. 出现提示时,请按照屏幕上的说明登录到 Azure Databricks 帐户。

  6. 在 Web 浏览器的地址栏中,复制授权代码。 授权代码是 URL 中 code=& 字符之间的完整字符串。 例如,以下 URL 中的授权代码为 dcod...7fe6

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    应直观地确认此响应 URL 中的 <state> 值与请求 URL 中提供的 state 值匹配,以验证此授权代码的完整性。 如果值不同,则不应使用此授权代码,因为可能遭到入侵。

  7. 跳到生成帐户级访问令牌

生成工作区级授权代码

  1. 在 Web 浏览器的地址栏中,浏览到以下 URL: 为清楚起见,添加了换行符。 URL 不得包含以下换行符。

    在以下 URL 中,替换以下内容:

    • <databricks-instance> 替换为 Azure Databricks <databricks-instance>(例如 adb-1234567890123456.7.databricks.azure.cn)。
    • <redirect-url> 替换为本地计算机的重定向 URL,例如 http://localhost:8020
    • <state> 替换为一些可用于验证授权代码完整性的纯文本字符串。
    • <code-challenge> 替换为步骤 1 中生成的代码质询。
    https://<databricks-instance>/oidc/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  2. 出现提示时,请按照屏幕上的说明登录到 Azure Databricks 工作区。

  3. 在 Web 浏览器的地址栏中,复制授权代码。 授权代码是 URL 中 code=& 字符之间的完整字符串。 例如,以下 URL 中的授权代码为 dcod...7fe6

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    应直观地确认此响应 URL 中的 <state> 值与请求 URL 中提供的 state 值匹配,以验证此授权代码的完整性。 如果值不同,则不应使用此授权代码,因为可能遭到入侵。

步骤 3:使用授权代码生成 OAuth 访问令牌

使用上一步中的 OAuth 授权代码生成 Azure Databricks OAuth 访问令牌,如下所示:

生成帐户级访问令牌

  1. 使用客户端(如 curl)和帐户级授权代码生成帐户级 OAuth 访问令牌。 在以下 curl 调用中,替换以下占位符:

    • <account-id> 替换为步骤 2 中的帐户 ID。
    • <redirect-url> 替换为步骤 2 中的重定向 URL。
    • <code-verifier> 替换为步骤 1 中生成的代码验证器。
    • <authorization-code> 替换为在步骤 2 中生成的帐户级授权代码。
    curl --request POST \
    https://accounts.databricks.azure.cn/oidc/accounts/<account-id>/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. 在响应中,复制帐户级 OAuth 访问令牌。 访问令牌是 access_token 对象中的完整字符串。 例如,以下响应中的访问令牌为 eyJr...Dkag

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    此访问令牌将在一小时内过期。 若要生成新的访问令牌,请重复步骤 1 中的此过程。

  3. 跳到步骤 4:调用 Databricks REST API

生成工作区级访问令牌

  1. 使用客户端(如 curl)和工作区授权代码生成工作区级 OAuth 访问令牌。 在以下 curl 调用中,替换以下占位符:

    • <databricks-instance> 替换为 Azure Databricks <databricks-instance>(例如 adb-1234567890123456.7.databricks.azure.cn)。
    • <redirect-url> 替换为步骤 2 中的重定向 URL。
    • <code-verifier> 替换为步骤 1 中生成的代码验证器。
    • <authorization-code> 替换为在步骤 2 中生成的工作区级授权代码。
    curl --request POST \
    https://<databricks-instance>/oidc/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. 在响应中,复制工作区级 OAuth 访问令牌。 访问令牌是 access_token 对象中的完整字符串。 例如,以下响应中的访问令牌为 eyJr...Dkag

    {
     "access_token": "eyJr...Dkag",
     "refresh_token": "doau...f26e",
     "scope": "all-apis offline_access",
     "token_type": "Bearer",
     "expires_in": 3600
    }
    

    此访问令牌将在一小时内过期。 若要生成新的访问令牌,请重复步骤 1 中的此过程。

步骤 4:调用 Databricks REST API

根据访问令牌的作用域,使用帐户级或工作区级 OAuth 访问令牌向 Azure Databricks 帐户级 REST API 和工作区级 REST API 进行身份验证。 Azure Databricks 用户帐户必须是帐户管理员,才能调用帐户级 REST API。

帐户级 REST API 请求示例

此示例使用 curlBearer 身份验证来获取与帐户关联的所有工作区的列表。

  • <oauth-access-token> 替换为帐户级 OAuth 访问令牌。
  • <account-id> 替换为你的帐户 ID。
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://accounts.databricks.azure.cn/api/2.0/accounts/<account-id>/workspaces"

工作区级 REST API 请求示例

此示例使用 curlBearer 身份验证来列出指定工作区中的所有可用群集。

  • <oauth-access-token> 替换为帐户级或工作区级 OAuth 访问令牌。
  • <databricks-instance> 替换为 Azure Databricks <databricks-instance>(例如 adb-1234567890123456.7.databricks.azure.cn)。
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"