使用 OAuth 以使用者帳戶授權對 Azure Databricks 資源的互動式存取
本主題提供在以互動方式執行 Azure Databricks CLI 命令或呼叫 Azure Databricks REST API 時,授權存取 Azure Databricks 資源的步驟和詳細數據。
當與UI外部的 Azure Databricks 資源互動時,Azure Databricks 會使用 OAuth 作為使用者授權和驗證的慣用通訊協定。 Azure Databricks 也提供統一的客戶端驗證工具,將 OAuth 驗證方法中產生的存取令牌重新整理自動化。
如需更多高階詳細數據,請參閱 授權存取 Azure Databricks 資源。
存取 Azure Databricks 資源時,我的授權和驗證選項為何?
在本主題中,授權 是指用來透過委派交涉存取特定 Azure Databricks 資源的通訊協定 (OAuth)。 驗證 是指用來呈現、傳輸和驗證憑證的機制,而在此情況下,這些憑證是 存取令牌。
Azure Databricks 會使用 OAuth 2.0型授權,來代表具有存取這些資源許可權的使用者,從命令行或程式代碼存取 Azure Databricks 帳戶和工作區資源。 在使用者初始登入並同意 OAuth 驗證要求後,將向參與工具或 SDK 提供 OAuth 權杖,以便從那時起代表使用者執行權杖型驗證。 OAuth 存取令牌的有效期為 1 小時,之後相應的工具或 SDK 會自動在背景中嘗試獲取新的存取令牌,其有效期也為 1 小時。
Azure Databricks 支援兩種方式,以 OAuth 授權使用者帳戶的存取權:
- 大部分情況下,使用 Databricks 統一用戶端驗證支援。 如果使用特定的 Azure Databricks SDK (如 Databricks Terraform SDK) 和工具,請使用這種簡化的方法。 Databricks 統一用戶端驗證中列出了支援的工具和 SDK。
- 手動,透過直接產生 OAuth 程式碼驗證器/查問配對和授權碼,並使用其建立將在組態中提供的初始 OAuth 權杖。 當您不使用 Databricks 統一用戶端驗證支援的 API 時,請使用此方法。 如需詳細資料,請參閱:手動產生和使用 OAuth 使用者對電腦 (U2M) 驗證的存取權杖。
使用 Databricks 統一客戶端身份驗證進行互動式用戶授權
注意
開始設定授權之前,請檢閱您將對工作區對象執行之特定作業類別的 ACL 許可權,並判斷您的帳戶是否具有您需要的存取層級。 如需詳細資料,請參閱存取控制清單。
若要使用支援統一用戶端驗證的 Azure Databricks SDK 和工具執行 OAuth 授權,請在程式代碼中整合下列專案:
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
。
設定檔
使用 檔案中的下列欄位,建立或識別 Azure Databricks .databrickscfg
。 如果您建立設定檔,請將預留位置取代為適當的值。 若要搭配工具或 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
--host <account-console-url> --account-id <account-id>
)。 -
(適用於 Azure Databricks
--host <workspace-url>
)。
執行此命令後,遵循網頁瀏覽器中的指示登入 Azure Databricks 帳戶或工作區。
如需詳細資訊,請參閱使用 Databricks CLI OAuth 授權。
連線
注意
下列 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 用戶端,請參閱 Databricks Connect 的計算組態。
VS Code
針對適用於 Visual Studio Code 的 Databricks 延伸項目,請執行下列動作:
- 在 [組態 ] 窗格中,按下 [設定 Databricks]。
- 在 [命令選擇區] 中,針對 [Databricks 主機],輸入個別工作區網址,例如
https://adb-1234567890123456.7.azuredatabricks.net
,然後按Enter
。 - 選取 [OAuth (使用者到機器)]。
- 在網頁瀏覽器內完成畫面上的指示,以使用 Azure Databricks 帳戶完成驗證,並允許 all-apis 存取。
如需詳細資訊,請參閱 OAuth U2M 授權與 Databricks CLI。
Terraform
針對 帳戶層級 和 工作區層級 作業,您必須先使用 Databricks CLI 執行下列命令,才能套用 Terraform 組態。 此命令指示 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 帳戶值。 請參閱尋找您的帳戶識別碼。
注意
如果具有已設定 和 host
欄位的現有 Azure Databricks account_id
,您可以將 --host <account-console-url> --account-id <account-id>
替代為 --profile <profile-name>
。
執行 auth login
命令後,系統會提示您將帳戶登入 URL 和帳戶 ID 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg
檔案中現有設定檔的名稱。
.databrickscfg
檔案中任何具有相同名稱的現有設定檔都會覆寫。
如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似下列某個程式碼片段的 Terraform 代碼:
對於預設驗證:
provider "databricks" {
alias = "account"
}
對於直接配置,請使用下列設定來配置 provider
。 將 retrieve-
佔位元取代為您自己的實作,以便從主控台或其他一些配置存儲中擷取值,例如 HashiCorp Vault。 另請參閱 保存庫提供者)。 在此範例中,您可以將 account_id
設定為 Azure Databricks 帳戶 控制台 URL。
provider "databricks" {
alias = "account"
host = <retrieve-account-console-url>
account_id = <retrieve-account-id>
}
設定 Databricks 工作區層級作業
databricks auth login --host <workspace-url>
將預留位置 <workspace-url>
取代為目標 Azure Databricks 個別工作區 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
。
執行 auth login
命令後,系統會提示您將工作區 URL 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg
檔案中現有設定檔的名稱。
.databrickscfg
檔案中任何具有相同名稱的現有設定檔都會覆寫。
如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 接著使用類似下列其中一個程式碼段的 Terraform 程式碼:
對於預設驗證:
provider "databricks" {
alias = "workspace"
}
針對直接設定(用您自己的實作替換 retrieve
佔位元,以便從主控台或其他設定存放區中擷取值,例如 HashiCorp Vault。另請參閱 Vault 供應商)。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net
:
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
}
如需有關使用 Databricks Terraform 提供者進行驗證的詳細資訊,請參閱驗證。
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 帳戶值。 請參閱尋找您的帳戶識別碼。
注意
如果具有已設定 和 host
欄位的現有 Azure Databricks account_id
,您可以將 --host <account-console-url> --account-id <account-id>
替代為 --profile <profile-name>
。
執行 auth login
命令後,系統會提示您將帳戶登入 URL 和帳戶 ID 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg
檔案中現有設定檔的名稱。
.databrickscfg
檔案中任何具有相同名稱的現有設定檔都會覆寫。
如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Python 程式碼:
使用 Databricks 統一客戶端驗證 的預設授權 :
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
。
執行 auth login
命令後,系統會提示您將工作區 URL 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg
檔案中現有設定檔的名稱。
.databrickscfg
檔案中任何具有相同名稱的現有設定檔都會覆寫。
如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Python 程式碼:
若要使用 Databricks 統一用戶端驗證 來進行的預設授權:
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 進行驗證的詳細資訊,請參閱:
- 設定適用於 Python 的 Databricks Connect 用戶端
- 為 Visual Studio Code 的 Databricks 擴充功能設定授權
- 使用 Azure Databricks 帳戶或工作區來驗證適用於 Python 的 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 帳戶值。 請參閱尋找您的帳戶識別碼。
注意
如果具有已設定 和 host
欄位的現有 Azure Databricks account_id
,您可以將 --host <account-console-url> --account-id <account-id>
替代為 --profile <profile-name>
。
執行 auth login
命令後,系統會提示您將帳戶登入 URL 和帳戶 ID 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg
檔案中現有設定檔的名稱。
.databrickscfg
檔案中任何具有相同名稱的現有設定檔都會覆寫。
如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Java 程式碼:
如需進行 預設授權,使用 Databricks 統一用戶端驗證:
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
。
執行 auth login
命令後,系統會提示您將工作區 URL 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg
檔案中現有設定檔的名稱。
.databrickscfg
檔案中任何具有相同名稱的現有設定檔都會覆寫。
如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Java 程式碼:
使用 Databricks 統一用戶端驗證 進行的預設授權:
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 進行授權和驗證的更多詳細資訊,請參閱:
- 設定適用於 Scala 的 Databricks Connect 用戶端 (適用於 Scala 的 Databricks Connect 用戶端會使用內含的適用於 JAVA 的 Databricks SDK 進行驗證)
- 使用 Azure Databricks 帳戶或工作區來驗證適用於 JAVA 的 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 帳戶值。 請參閱尋找您的帳戶識別碼。
注意
如果具有已設定 和 host
欄位的現有 Azure Databricks account_id
,您可以將 --host <account-console-url> --account-id <account-id>
替代為 --profile <profile-name>
。
執行 auth login
命令後,系統會提示您將帳戶登入 URL 和帳戶 ID 儲存為 Azure Databricks 組態設定檔。 出現提示時,輸入新設定檔或 .databrickscfg
檔案中現有設定檔的名稱。
.databrickscfg
檔案中任何具有相同名稱的現有設定檔都會覆寫。
如果出現提示,請完成網頁瀏覽器畫面上的指示以完成登入。 然後使用類似於下列其中一個片段的 Go 程式碼:
如需使用 Databricks 統一用戶端驗證 的預設授權:
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
。
執行 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 OAuth 存取權杖進行 OAuth U2M 驗證,請遵循本節中的指示。
步驟 1:產生 OAuth 程式碼驗證器和程式碼查問配對
若要手動產生和使用 OAuth U2M 驗證的存取權杖,您必須先擁有一個 OAuth 程式碼驗證器和從該程式碼驗證器衍生的 OAuth 程式碼查問。 在步驟 2 中使用程式碼查問來產生 OAuth 授權碼。 在步驟 3 中使用程式碼驗證器和授權碼產生 OAuth 存取權杖。
注意
雖然從技術上講,可以將未編碼的純文字字串用於程式碼驗證器和程式碼查問,但 Databricks 強烈鼓勵遵循 OAuth 標準來產生程式碼驗證器和程式碼查問。
具體而言,程式碼驗證器應是使用集 A-Z
、a-z
、0-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 帳戶層級或工作區層級產生授權碼,如下所示:
- 若要在 Azure Databricks 使用者帳戶有權存取的帳戶和工作區內呼叫帳戶層級和工作區層級的 REST API,請在帳戶層級產生授權碼。
- 若要僅在使用者帳戶有權存取的一個工作區內呼叫 REST API,您可以僅為該工作區在工作區層級產生授權碼。
產生帳戶層級授權碼
身為帳戶管理員,登入帳戶主機。
按一下右上角使用者名稱旁邊的向下箭頭。
複製您的帳戶識別碼。
在網頁瀏覽器的網址列中,瀏覽至下列 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_uri=<redirect-url> &response_type=code &state=<state> &code_challenge=<code-challenge> &code_challenge_method=S256 &scope=all-apis+offline_access
- 將
出現提示時,遵循畫面上的指示登入您的 Azure Databricks 帳戶。
在網頁瀏覽器的網址列中,複製授權碼。 授權碼是 URL 中
code=
和&
字元之間的完整字串。 例如,下列 URL 中的授權碼為dcod...7fe6
:http://localhost:8020/?code=dcod...7fe6&state=<state>
您應以視覺化方式確認此回應 URL 中的
<state>
值與要求 URL 中提供的state
值相符,以驗證此授權碼的完整性。 如果值不同,則不應使用此授權碼,因為可能遭入侵。直接跳至產生帳戶層級存取權杖。
產生工作區層級授權碼
在網頁瀏覽器的網址列中,瀏覽至下列 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
- 將
出現提示時,遵循畫面上的指示登入您的 Azure Databricks 工作區。
在網頁瀏覽器的網址列中,複製授權碼。 授權碼是 URL 中
code=
和&
字元之間的完整字串。 例如,下列 URL 中的授權碼為dcod...7fe6
:http://localhost:8020/?code=dcod...7fe6&state=<state>
您應以視覺化方式確認此回應 URL 中的
<state>
值與要求 URL 中提供的state
值相符,以驗證此授權碼的完整性。 如果值不同,則不應使用此授權碼,因為可能遭入侵。
步驟 3:使用授權碼來產生 OAuth 存取權杖
您可以使用上一個步驟中的 OAuth 授權碼來產生 Azure Databricks OAuth 存取權杖,如下所示:
- 若要在 Azure Databricks 使用者帳戶有權存取的帳戶和工作區內呼叫帳戶層級和工作區層級的 REST API,請使用帳戶層級授權碼在帳戶層級產生存取權杖。
- 若要僅在使用者帳戶有權存取的一個工作區內呼叫 REST API,您可以使用工作區層級授權碼僅為該工作區在工作區層級產生存取權杖。
產生帳戶層級存取權杖
使用用戶端 (如
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>"
- 將
在回應中,複製帳戶層級 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 重複此程序。
產生工作區層級存取權杖
使用用戶端 (如
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>"
- 將
在回應中,複製工作區層級 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 要求
此範例使用 curl
和 Bearer
驗證來取得與帳戶關聯的所有工作區清單。
- 將
<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 要求
此範例使用 curl
和 Bearer
驗證來列出指定工作區中的所有可用叢集。
- 將
<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"