使用Microsoft Entra 服務主體來驗證 Azure Databricks Git 資料夾的存取權
瞭解如何使用 Microsoft Entra 服務主體,設定 Azure DevOps (Azure Repos) 所裝載 Azure Databricks Git 資料夾的已驗證存取權。
如果您的 Databricks 專案中有由 Azure Repos Git 存放庫支援的 Databricks Git 資料夾,而且您想要在自動化中管理它們,您可以使用本文中的資訊,使用 Microsoft Entra 服務主體和 Azure DevOps 來設定驗證。 完成這項工作之後,您將擁有可在自動化中使用的已驗證 Databricks Git 認證。
為什麼要使用 Microsoft Entra 而不是 PAT?
過去,個人存取令牌(PAT)是呼叫需要資源特定存取權和許可權的 API 時,要驗證的慣用方式。 這些 持有人令牌 代表使用者名稱和密碼,而且需要定期輪替,以將他們呈現的安全性風險降到最低。 Microsoft Entra ID 存取令牌可藉由每小時自動管理這些令牌的輪替來解決此問題,而 Databricks 建議它們作為使用 Azure 資源時的最佳做法。 藉由建立Microsoft Entra 服務主體,您可以管理授與存取這些資源的許可權,而不需使用Microsoft Azure 用戶帳戶。
需求
您必須有:
- 使用連線至 Databricks Git 資料夾的 Azure Repos Git 存放庫存取 Azure DevOps 專案。
- Azure 帳戶上建立 MS Entra 服務主體的許可權。
- 已安裝 Azure CLI。
- 已安裝 Databricks CLI。
步驟 1:建立Microsoft Entra 服務主體
如果您已設定Microsoft Entra 服務主體,則可以略過此步驟。
若要建立Microsoft Entra 服務主體,請遵循Microsoft Azure 檔中的步驟: 註冊 Microsoft Entra 應用程式並建立服務主體。 在本文的「設定驗證」一節中,忽略前兩個選項,並遵循「選項 3:建立新的客戶端密碼」中的步驟。
設定好之後,您將會有:
- 客戶端密碼。 其會顯示為一長串隨機出現的字元。
-
- 服務主體標識碼。 這是您指派 MS Entra 服務主體的唯一名稱。 最佳作法是,名稱也應該指出應該使用的方式和時機的資訊(例如,
Databricks_CICD_SP
。
- 服務主體標識碼。 這是您指派 MS Entra 服務主體的唯一名稱。 最佳作法是,名稱也應該指出應該使用的方式和時機的資訊(例如,
(您可以忽略 MS Entra 組態對話框中的選擇性重新導向 UI,因為它不會用於此組態。
將這些專案複製到某處,因為您將在未來的步驟中使用它們。 在您成功完成本檔中的程序之後,請保護或刪除此資訊。
步驟 2:設定 MS Entra 服務主體的 Azure DevOps 許可權
首先,您必須授與 MS Entra 服務主體許可權,才能存取 Azure DevOps 資源。 若要這樣做,您必須使用 Azure DevOps 入口網站。
登入您的 Azure DevOps 帳戶,並流覽至您的專案。
在 [項目設定>許可權] 底下,按兩下 [讀取器]。
按兩下 [成員] 索引標籤,按兩下 [新增],然後新增您建立的 MS Entra 服務主體名稱。
在控制台中,返回 Azure DevOps 組織的組織層級,然後按下 左窗格底部的 [組織設定 ]。
按兩下 [使用者>新增使用者],然後設定服務主體的存取權,如下所示:
- 使用您先前建立的標識碼來新增 MS Entra 服務主體。
- 將服務主體的存取設定為在 Azure Repos 中執行作業所需的最低層級。 通常, 基本 層級許可權就已足夠。 如果您不確定要使用的層級,請連絡您的 Azure DevOps 組織管理員。
- 將服務主體新增至您的 Azure DevOps 專案。
- 將服務主體指派給 項目參與者 群組。
步驟 3:將許可權指派給 Azure Databricks 中的服務主體
您也必須將 Azure Databricks 內的許可權指派給 Microsoft Entra 服務主體。
- 登入您帳戶的 Azure Databricks 帳戶管理控制台 。
- 按兩下 [ 使用者和群組]。
- 按兩下 [ 服務主體] 索引 標籤,然後按兩下 [ 新增服務主體]。
- 在 [ 新增服務主體 ] 頁面上,按兩下 [受管理Microsoft Entra ID],然後從 [步驟 1:建立Microsoft Entra 服務主體] 新增您的 Microsoft Entra 應用程式標識符和服務主體名稱。 完成時,按兩下 [新增 ]。
- 按兩下新增Microsoft Entra 服務主體,以查看 [ 主體資訊 ] 索引標籤。
- 按兩下 頁面左下方的 [產生秘密 ] 以產生 OAuth 秘密。 此秘密可讓您使用 Databricks CLI 來驗證 Azure Databricks API 呼叫。
- 複製秘密字串和用戶端標識碼,然後按兩下 [ 完成]。 您將在下一個步驟中使用這兩者。 選取完成。
- 在左側提要欄位中,按兩下 [工作區],選擇您的工作區,然後按兩下 [ 許可權] 索引標籤。
- 授與服務主體「使用者」許可權,然後按兩下 [ 新增許可權]。
重要
如果 [ 許可權] 索引卷標呈現灰色,您的 Azure Databricks 工作區就不會指派給 Unity 目錄中繼存放區。 請連絡 Databricks 系統管理員。
接下來,您會建立 Azure Databricks Git 認證。
步驟 4:建立Microsoft Entra ID 存取令牌,並將其儲存為 Azure Databricks Git 認證。
注意
此步驟需要同時使用 Azure 和 Databricks CLIs。
若要向 Azure Databricks 進行驗證,您必須使用您在上一 個步驟中建立的 OAuth 秘密來設定組態配置檔 (.databrickscfg
)。 若要設定此組態,請在編輯器中開啟 .databrickscfg
檔案,並將下列內容新增至 檔案:
[DEFAULT]
host = https://<workspace-url>.azuredatabricks.net/
client_id = <service principal ID>
client_secret = <Databricks OAuth token value>
其中 host
是 Databricks 工作區的 URL, client_id
是Microsoft Entra 服務主體標識碼,而 client_secret
是您在「步驟 3:將許可權指派給 Azure Databricks 中的服務主體」中建立的 OAuth 客戶端密碼。
您現在應該有下列值,以便在此程式中提供 CLI 呼叫:
- 步驟 1 或 3 的服務主體用戶端識別碼 - 它們應該相同。 (
sp_id
在下列 CLI 範例中。 - 步驟 1 中的服務主體名稱。 (
sp_name
) - 步驟 1 中的服務主體客戶端密碼字串。 (
sp_secret
) - 您的 Azure DevOps 組織名稱。 (
devops_org
) - 您的 Azure DevOps 項目名稱。 (
devops_project
) - 您的 Azure Repos 存放庫名稱。 (
devops_repo
)
此外,您需要 Azure 訂用帳戶的 Azure 租使用者識別碼(tenant_id
在下列範例中)。 請遵循這些指示,從 Azure 入口網站 取得。
現在,您可以從 Azure CLI 建立 Git 認證。
- 開啟具有 Azure 和 Databricks CLIs 存取權的命令行視窗。
- 執行下列 Azure CLI 命令,以Microsoft Entra 服務主體身分登入:
az login --allow-no-subscriptions --service-principal -u $sp_id -p $sp_secret --tenant $tenant_id
- 作為Microsoft Entra 服務主體,請要求Microsoft Entra ID 存取令牌,並將它指派給變數:
ENTRA_ID_TOKEN=$(az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query "accessToken" --output tsv)
- 使用存取令牌來建立 Azure Databricks 存取的 Git 認證,並使用您為其設定的許可權等級:
databricks git-credentials create azureDevOpsServices --personal-access-token $ENTRA_ID_TOKEN --git-username $sp_name
- 最後,使用 Microsoft Entra 服務主體建立新的 Git 資料夾:
databricks repos create \https://$sp_name@dev.azure.com/$devops_org/$devops_project/_git/$devops_repo
此 Azure DevOps 存放庫的對應 Git 資料夾現在可在 Azure Databricks 工作區中使用。 您可以使用 Databricks Repos REST API 或 Databricks CLI,提供 Git 認證,以從程式代碼管理它。
您現在已瞭解如何產生設定為 Azure DevOps 範圍的Microsoft Entra ID 存取令牌,並將其儲存為 Databricks Git 認證。
最佳作法
Entra ID 存取令牌是短期的,因此您的管線必須使用 更新 Databricks Git 認證 git-credentials update
。 然後,您可以使用 從中 databricks repos update
觸發提取要求。
重要
生產環境中需要額外的安全性措施。 在生產環境中,您應該將服務主體用戶端密碼和 Databricks OAuth 令牌儲存在安全的秘密存放區中,例如 Azure 金鑰保存庫。
另請參閱
使用服務主體和受控識別 (Microsoft Azure DevOps 檔)