使用 OAuth (OAuth M2M) 透過使用者帳戶對 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 驗證,請在程式碼中整合下列內容:

Environment

若要透過工具或 SDK 將環境變數用於特定 Azure Databricks 驗證類型,請參閱對 Azure Databricks 資源的存取進行驗證或者參閱工具或 SDK 的文件。 另請參閱用戶端統一驗證的環境變數和欄位用戶端統一驗證的預設方法

針對帳戶層級作業,請設定下列環境變數:

  • DATABRICKS_HOST,設定為 Azure Databricks 帳戶主控台網址的值 (https://accounts.azuredatabricks.net)。
  • DATABRICKS_ACCOUNT_ID

針對工作區層級作業,請設定下列環境變數:

  • DATABRICKS_HOST,設定為 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

設定檔

使用 .databrickscfg 檔案中的下列欄位,建立或識別 Azure Databricks 組態設定檔。 如果您建立設定檔,請將預留位置取代為適當的值。 若要透過工具或 SDK 使用設定檔,請參閱對 Azure Databricks 資源的存取進行驗證或者參閱工具或 SDK 的文件。 另請參閱用戶端統一驗證的環境變數和欄位用戶端統一驗證的預設方法

針對帳戶層級作業,請在您的 .databrickscfg 檔案中設定下列值。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

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

針對工作區層級作業,請在您的 .databrickscfg 檔案中設定下列值。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

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

CLI

對於 Databricks CLI,使用下列選項執行 databricks auth login 命令:

執行此命令後,遵循網頁瀏覽器中的指示登入 Azure Databricks 帳戶或工作區。

如需詳細資料,請參閱使用 Databricks CLI 進行 OAuth U2M 驗證

連線

注意

下列 Databricks Connect 版本支援 OAuth U2M 驗證:

  • 對於 Python,為 Databricks Connect for Databricks Runtime 13.1 和更新版本的。
  • 針對 Scala,即為適用於 Databricks Runtime 13.3 LTS 和更新版本的 Databricks Connect。

針對 Databricks Connect,您可以執行下列其中一項:

  • 按照本文的「設定檔」一節所述,為 Azure Databricks 工作區層級作業設定 .databrickscfg 檔案中的值。 此外,將設定檔中的 cluster_id 環境變數設定為個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net
  • 按照本文的「環境」一節所述,為 Azure Databricks 工作區層級作業設定環境變數。 此外,將 DATABRICKS_CLUSTER_ID 環境變數設定為個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

.databrickscfg 檔案中的值始終優先於環境變數。

若要使用 .databrickscfg 檔案中的這些環境變數或值來初始化 Databricks Connect 用戶端,請參閱下列其中一項:

VS Code

針對適用於 Visual Studio Code 的 Databricks 延伸項目,請執行下列動作:

  1. 在 [組態 ] 窗格中,按下 [設定 Databricks]
  2. 在 [命令選擇區] 中,針對 [Databricks 主機],輸入個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net,然後按 Enter
  3. 選取 [OAuth (使用者到機器)]
  4. 在網頁瀏覽器內完成畫面上的指示,以使用 Azure Databricks 帳戶完成驗證,並允許 all-apis 存取。

如需詳細資料,請參閱使用 Databricks CLI 進行 OAuth U2M 驗證

Terraform

注意

尚未支援 OAuth U2M 驗證。

Python

對於帳戶層級工作區層級的作業,您必須先使用 Databricks CLI 執行下列命令,然後再執行 Python 程式碼。 此命令指示 Databricks CLI 在電腦上的使用者主資料夾中的 .databricks/token-cache.json 路徑中產生並快取必要的 OAuth 權杖:

設定 Databricks 帳戶層級作業

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

取代下列預留位置:

  • <account-console-url> 取代為值 https://accounts.azuredatabricks.net。 (請勿將其設定為 Azure Databricks 工作區 URL 的值)。
  • <account-id> 取代為您的 Azure Databricks 帳戶值。 請參閱尋找您的帳戶識別碼

注意

如果具有已設定 hostaccount_id 欄位的現有 Azure Databricks 組態設定檔,您可以將 --host <account-console-url> --account-id <account-id> 替代為 --profile <profile-name>

執行 auth login 命令後,系統會提示您將帳戶登入 URL 和帳戶 ID 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg 檔案中現有設定檔的名稱。 .databrickscfg 檔案中任何具有相同名稱的現有設定檔都會覆寫。

如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Python 程式碼:

對於預設驗證

from databricks.sdk import AccountClient

a = AccountClient()
# ...

針對直接組態 (將 retrieve 預留位置取代為您自己的實作,以從主控台或某些其他設定存放區 (例如 Azure KeyVault) 擷取值)。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

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.azuredatabricks.net

注意

如果具有已設定 host 欄位的現有 Azure Databricks 組態設定檔,您可以將 --host <workspace-url> 替代為 --profile <profile-name>

執行 auth login 命令後,系統會提示您將工作區 URL 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg 檔案中現有設定檔的名稱。 .databrickscfg 檔案中任何具有相同名稱的現有設定檔都會覆寫。

如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Python 程式碼:

對於預設驗證

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

針對直接組態 (將 retrieve 預留位置取代為您自己的實作,以從主控台或某些其他設定存放區 (例如 Azure KeyVault) 擷取值)。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

from databricks.sdk import WorkspaceClient

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

如需有關透過使用 Python 並實作 Databricks 用戶端統一驗證的 Databricks 工具和 SDK 進行驗證的詳細資訊,請參閱:

Java

對於帳戶層級工作區層級的作業,您必須先使用 Databricks CLI 執行下列命令,然後再執行 Java 程式碼。 此命令指示 Databricks CLI 在電腦上的使用者主資料夾中的 .databricks/token-cache.json 路徑中產生並快取必要的 OAuth 權杖:

設定 Databricks 帳戶層級作業

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

取代下列預留位置:

  • <account-console-url> 取代為值 https://accounts.azuredatabricks.net。 (請勿將其設定為 Azure Databricks 工作區 URL 的值)。
  • <account-id> 取代為您的 Azure Databricks 帳戶值。 請參閱尋找您的帳戶識別碼

注意

如果具有已設定 hostaccount_id 欄位的現有 Azure Databricks 組態設定檔,您可以將 --host <account-console-url> --account-id <account-id> 替代為 --profile <profile-name>

執行 auth login 命令後,系統會提示您將帳戶登入 URL 和帳戶 ID 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg 檔案中現有設定檔的名稱。 .databrickscfg 檔案中任何具有相同名稱的現有設定檔都會覆寫。

如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Java 程式碼:

對於預設驗證

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

針對直接組態 (將 retrieve 預留位置取代為您自己的實作,以從主控台或某些其他設定存放區 (例如 Azure KeyVault) 擷取值)。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

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 工作區層級作業

對於工作區層級作業,您應先使用 Databricks CLI 執行下列命令,然後再執行 Java 程式碼。 此命令指示 Databricks CLI 在電腦上的使用者主資料夾中的 .databricks/token-cache.json 路徑中產生並快取必要的 OAuth 權杖:

databricks auth login --host <worskpace-url>

將預留位置 <workspace-url> 取代為目標 Azure Databricks 個別工作區 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net

注意

如果具有已設定 host 欄位的現有 Azure Databricks 組態設定檔,您可以將 --host <workspace-url> 替代為 --profile <profile-name>

執行 auth login 命令後,系統會提示您將工作區 URL 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg 檔案中現有設定檔的名稱。 .databrickscfg 檔案中任何具有相同名稱的現有設定檔都會覆寫。

如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Java 程式碼:

對於預設驗證

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

針對直接組態 (將 retrieve 預留位置取代為您自己的實作,以從主控台或某些其他設定存放區 (例如 Azure KeyVault) 擷取值)。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

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

對於帳戶層級工作區層級的作業,您必須先使用 Databricks CLI 執行下列命令,然後再執行 Go 程式碼。 此命令指示 Databricks CLI 在電腦上的使用者主資料夾中的 .databricks/token-cache.json 路徑中產生並快取必要的 OAuth 權杖:

設定 Databricks 帳戶層級作業

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

取代下列預留位置:

  • <account-console-url> 取代為值 https://accounts.azuredatabricks.net。 (請勿將其設定為 Azure Databricks 工作區 URL 的值)。
  • <account-id> 取代為您的 Azure Databricks 帳戶值。 請參閱尋找您的帳戶識別碼

注意

如果具有已設定 hostaccount_id 欄位的現有 Azure Databricks 組態設定檔,您可以將 --host <account-console-url> --account-id <account-id> 替代為 --profile <profile-name>

執行 auth login 命令後,系統會提示您將帳戶登入 URL 和帳戶 ID 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg 檔案中現有設定檔的名稱。 .databrickscfg 檔案中任何具有相同名稱的現有設定檔都會覆寫。

如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Go 程式碼:

對於預設驗證

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

針對直接組態 (將 retrieve 預留位置取代為您自己的實作,以從主控台或某些其他設定存放區 (例如 Azure KeyVault) 擷取值)。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

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

設定 Databricks 工作區層級作業

對於工作區層級作業,您應先使用 Databricks CLI 執行下列命令,然後再執行 Go 程式碼。 此命令指示 Databricks CLI 在電腦上的使用者主資料夾中的 .databricks/token-cache.json 路徑中產生並快取必要的 OAuth 權杖:

databricks auth login --host <worskpace-url>

將預留位置 <workspace-url> 取代為目標 Azure Databricks 個別工作區 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net

注意

如果具有已設定 host 欄位的現有 Azure Databricks 組態設定檔,您可以將 --host <workspace-url> 替代為 --profile <profile-name>

執行 auth login 命令後,系統會提示您將工作區 URL 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg 檔案中現有設定檔的名稱。 .databrickscfg 檔案中任何具有相同名稱的現有設定檔都會覆寫。

如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Go 程式碼:

對於預設驗證

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

針對直接組態 (將 retrieve 預留位置取代為您自己的實作,以從主控台或某些其他設定存放區 (例如 Azure KeyVault) 擷取值)。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

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

如需使用 Go 和實作 Databricks 用戶端統一驗證的 Databricks 工具和 SDK 進行驗證的詳細資訊,請參閱使用 Azure Databricks 帳戶或工作區驗證適用於 Go 的 Databricks SDK

手動產生和使用 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. 複製您的帳戶識別碼

  4. 在網頁瀏覽器的網址列中,瀏覽至下列 URL。 為了可讀性,已新增分行符號。 您的 URL 不得包含這些斷行。

    在下列 URL 中,取代下列項目:

    • <account-id> 取代為您複製的帳戶識別碼
    • <redirect-url> 取代為本機電腦的重新導向 URL,例如 http://localhost:8020
    • <state> 取代為您可以用來驗證授權碼完整性的一些純文字字串。
    • <code-challenge> 取代為您在步驟 1 中產生的程式碼查問。
    https://accounts.azuredatabricks.net/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. 在網頁瀏覽器的網址列中,複製授權碼。 授權碼是 URL 中 code=& 字元之間的完整字串。 例如,下列 URL 中的授權碼為 dcod...7fe6

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

    您應以視覺化方式確認此回應 URL 中的 <state> 值與要求 URL 中提供的 state 值相符,以驗證此授權碼的完整性。 如果值不同,則不應使用此授權碼,因為可能遭入侵。

  7. 直接跳至產生帳戶層級存取權杖

產生工作區層級授權碼

  1. 在網頁瀏覽器的網址列中,瀏覽至下列 URL。 為了可讀性,已新增分行符號。 您的 URL 不得包含這些斷行。

    在下列 URL 中,取代下列項目:

    • <databricks-instance> 取代為 Azure Databricks 工作區執行個體名稱,例如 adb-1234567890123456.7.azuredatabricks.net
    • <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. 在網頁瀏覽器的網址列中,複製授權碼。 授權碼是 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 中的帳戶識別碼
    • <redirect-url> 取代為步驟 2 的重新導向 URL。
    • <code-verifier> 取代為您在步驟 1 中產生的程式碼驗證器。
    • 將取代 <authorization-code> 為您在步驟 2 中產生的帳戶層級授權碼。
    curl --request POST \
    https://accounts.azuredatabricks.net/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 工作區執行個體名稱,例如 adb-1234567890123456.7.azuredatabricks.net
    • <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> 取代為您的帳戶識別碼。
export OAUTH_TOKEN=<oauth-access-token>

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

範例工作區層級 REST API 要求

此範例使用 curlBearer 驗證來列出指定工作區中的所有可用叢集。

  • <oauth-access-token> 取代為帳戶層級或工作區層級 OAuth 存取權杖。
  • <databricks-instance> 取代為 Azure Databricks 工作區執行個體名稱,例如 adb-1234567890123456.7.azuredatabricks.net
export OAUTH_TOKEN=<oauth-access-token>

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