授權存取 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 的授權在僅使用 Azure Databricks 進行授權時,更偏好使用強固的 OAuth 存取令牌。
如需有關使用 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 標識符 (視您的案例而定),而不是您的 Azure Databricks 帳戶認證。
方法 | 描述 | 使用案例 |
---|---|---|
Databricks OAuth 用於服務主體 | 服務主體的短期 OAuth 權杖。 | 無人監管的授權情境,例如完全自動化和 CI/CD 工作流程。 |
適用於使用者的 Databricks OAuth | 使用者的短期 OAuth 權杖。 | 出現提示時,使用網頁瀏覽器或其他互動式方法來授權 Databricks 的參與授權案例。 |
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、用戶端識別符,以及您從 Azure Databricks 工作區產生的秘密,而不是直接提供令牌字符串。 只有在整合 Azure Databricks 統一用戶端驗證不支援的第三方工具或服務或沒有 OAuth 支援時,才選擇 PAT。
如何使用 OAuth 來授權存取 Azure Databricks 資源?
Azure Databricks 提供 統一的用戶端驗證,以使用您可以設定為特定認證值的默認環境變數集來協助您進行授權。 這可協助您更輕鬆地且安全地工作,因為這些環境變數是將執行 Azure Databricks CLI 命令或呼叫 Azure Databricks API 的環境所特有的。
- 針對使用者帳戶授權,只要工具和 SDK 實作其標準,Azure Databricks OAuth 的驗證部分即會為您處理存取令牌的建立和管理 Databricks 用戶端統一驗證。 如果沒有,您可以手動產生 OAuth 程式代碼驗證器和挑戰組,直接在 Azure Databricks CLI 命令和 API 要求中使用。 請參閱 步驟 1:生成一組 OAuth 驗證碼和驗證挑戰碼。
- 針對服務主體授權,Azure Databricks OAuth 會要求呼叫端提供客戶端認證,以及可授權要求的令牌端點 URL。 (如果您使用支援 Databricks 整合用戶端驗證的 Azure Databricks 工具和 SDK,則會為您處理這項作業。認證包含唯一 用戶端識別碼,以及 客戶端密碼。 用戶端是將執行程式碼的 Databricks 服務主體,必須指派至 Databricks 工作區。 將服務主體指派給它將存取的工作區之後,系統會提供用戶端標識碼,以及您將使用特定環境變數設定的客戶端密碼。
這些環境變數包括:
環境變數 | 描述 |
---|---|
DATABRICKS_HOST |
此環境變數會設定為 Azure Databricks 帳戶主控台 (http://accounts.cloud.databricks.com ) 或 Azure Databricks 工作區 URL 的 URL(https://{workspace-id}.cloud.databricks.com )。 根據您要在程式碼中執行的作業類型,選擇主機網址類型。 具體而言,如果您使用 Azure Databricks 帳戶層級 CLI 命令或 REST API 要求,請將此變數設定為 Azure Databricks 帳戶 URL。 如果您使用 Azure Databricks 工作區層級 CLI 命令或 REST API 要求,請使用您的 Azure Databricks 工作區網址。 |
DATABRICKS_ACCOUNT_ID |
用於 Azure Databricks 帳戶作業。 這是您的 Azure Databricks 帳戶識別碼。 若要取得,請參閱 找出您的帳戶識別碼。 |
DATABRICKS_CLIENT_ID |
(僅限服務主體 OAuth)當您 建立服務主體時,會指派您一個用戶端標識符。 |
DATABRICKS_CLIENT_SECRET |
(僅限服務主體 OAuth)建立服務主體時所產生的用戶端密碼。 |
您可以直接設定這些設定,或透過在用戶端計算機上使用 Databricks 組態配置檔 (.databrickscfg
)。
若要使用 OAuth 存取權杖,您的 Azure Databricks 工作區或帳戶管理員必須已向您的使用者帳戶或服務主體授與對您程式碼將存取的帳戶和工作區功能的 CAN USE
權限。
如需有關設定用戶端 OAuth 授權以及檢閱雲端提供者特定授權選項的詳細資料,請參閱統一用戶端驗證。
第三方服務和工具的驗證
如果您要撰寫可存取第三方服務、工具或 SDK 的程式碼,您必須使用第三方提供的驗證和授權機制。 不過,如果您必須授與第三方工具、SDK 或服務對 Azure Databricks 帳戶或工作區資源的存取權,Databricks 會提供下列支援:
Databricks Terraform 提供者:此工具可以使用 Azure Databricks 使用者帳戶,代表您從 Terraform 存取 Azure Databricks API。 如需詳細資料,請參閱使用 Terraform 佈建服務主體。
GitHub、GitLab 和 Bitbucket 等 Git 提供者可以使用 Databricks 服務主體來存取 Azure Databricks API。 如需詳細資料,請參閱 CI/CD 的服務主體。
Jenkins 可以使用 Databricks 服務主體來存取 Azure Databricks API。 如需詳細資料,請參閱在 Azure Databricks 上使用 Jenkins 進行 CI/CD。
Azure DevOps 可以使用 MS Entra ID 型服務主體來存取 Azure Databricks API。 如需詳細資料,請參閱使用 Databricks 上的 Azure DevOps 進行驗證。
Azure Databricks 組態設定檔
Azure Databricks 組態配置檔包含 Azure Databricks 授權存取權所需的設定和其他資訊。 Azure Databricks 組態設定檔會儲存在本機用戶端檔案中,以供要使用的工具、SDK、指令和應用程式使用。 標準組態設定檔的檔案命名為 .databrickscfg
。
如需詳細資訊,請參閱 Azure Databricks 組態設定檔。