CI/CD 的服務主體

本文說明如何搭配 Azure Databricks 使用 CI/CD 的服務主體。 服務主體是用來與自動化工具和應用程式搭配使用的身分識別,包括:

作為安全性最佳做法,Databricks 建議使用服務主體及其令牌,而不是 Azure Databricks 使用者或您的 Databricks 個人存取令牌,讓您的工作區使用者提供 CI/CD 平臺對 Azure Databricks 資源的存取權。 此方法的一些優點包括:

  • 您可以為獨立於使用者的服務主體授與和限制 Azure Databricks 資源的存取權。 例如,這可讓您禁止服務主體在 Azure Databricks 工作區中擔任系統管理員,同時仍然允許工作區中的其他特定用戶繼續擔任系統管理員。
  • 用戶可以保護其存取令牌不受 CI/CD 平臺存取。
  • 您可以暫時停用或永久刪除服務主體,而不會影響其他使用者。 例如,這可讓您暫停或移除您懷疑正以惡意方式使用的服務主體存取權。
  • 如果使用者離開組織,您可以移除該使用者,而不會影響任何服務主體。

若要為您的 Azure Databricks 工作區提供 CI/CD 平臺存取權,請執行下列動作:

  1. 建立 Azure Databricks 受控服務主體或 Microsoft Entra ID 受控服務主體。
  2. 根據 CI/CD 平台支援的存取令牌類型,為 Azure Databricks 受控服務主體或 Microsoft Entra ID 受控服務主體產生 Azure Databricks OAuth 令牌或 Microsoft Entra ID 識別符令牌。 如需詳細資訊,請參閱 CI/CD 平台的檔。
  3. 將此 Azure Databricks OAuth 令牌或 Microsoft Entra 識別符令牌提供給 CI/CD 平臺。

若要完成步驟 1-2,請參閱 管理服務主體

若要完成步驟 3,請完成本文中的指示。

或者,如果您想要在 CI/CD 平臺案例中使用 Azure Databricks 工作區搭配 Azure Databricks Git 資料夾 ,請參閱 將 Git 提供者認證新增至 Azure Databricks 工作區。 例如,您可能想要 Git 提供者存取您的工作區,而且也想要將工作區中的 Azure Databricks Git 資料夾與 Git 提供者搭配使用。 不過,您不需要使用 Azure Databricks Git 資料夾,即可搭配 CI/CD 平臺使用工作區。

需求

  • Azure Databricks 受控服務主體或 Microsoft Entra ID 受控服務主體的 Azure Databricks OAuth 令牌或 Microsoft Entra ID 受控服務主體。 若要建立 Azure Databricks 受控服務主體或 Microsoft Entra ID 受控服務主體及其 Azure Databricks OAuth 令牌或 Microsoft Entra 標識符令牌,請參閱 管理服務主體
  • 具有 Git 提供者的帳戶。

設定 GitHub Actions

GitHub Actions 必須能夠存取您的 Azure Databricks 工作區。 如果您想要使用 Azure Databricks Git 資料夾,您的工作區也必須能夠存取 GitHub。

若要讓 GitHub Actions 存取 Azure Databricks 工作區,您必須將 Azure Databricks 受控服務主體或 Microsoft Entra ID 受控服務主體的相關信息提供給 GitHub Actions。 這可能包含應用程式 (用戶端)標識符Microsoft Entra ID 受控服務主體的目錄(租使用者)標識符 、Azure Databricks 受控服務主體或 Microsoft Entra ID 受控服務主體的用戶端密碼,或 access_token Azure Databricks 受控服務主體的值,視 GitHub Action 的需求而定。 如需詳細資訊,請參閱 管理服務主體 和 GitHub Action 的檔。

如果您想要在使用 Azure Databricks Git 資料夾時讓 Azure Databricks 工作區存取 GitHub,您必須將 GitHub 計算機使用者的 GitHub 個人存取令牌新增至工作區。

將服務主體的相關信息提供給 GitHub Actions

本節說明如何讓 GitHub Actions 存取您的 Azure Databricks 工作區。

作為安全性最佳做法,Databricks 建議您不要將服務主體的相關信息直接輸入 GitHub Actions 檔案的本文。 您應該改用 GitHub 加密的秘密,將此資訊提供給 GitHub Actions。

GitHub Actions,例如 Databricks 使用 GitHub Actions 在持續整合和傳遞中列出的數據,依賴各種 GitHub 加密的秘密,例如:

  • DATABRICKS_HOST,也就是您的工作區實例名稱後面接著的值https://,例如 adb-1234567890123456.7.azuredatabricks.net
  • AZURE_CREDENTIALS,這是 JSON 檔,表示執行 Azure CLI 的輸出,以取得 Microsoft Entra ID 受控服務主體的相關信息。 如需詳細資訊,請參閱 GitHub Action 的檔。
  • AZURE_SP_APPLICATION_ID,這是 Microsoft Entra ID 受控服務主體的應用程式(用戶端)標識符
  • AZURE_SP_TENANT_ID,這是 Microsoft Entra ID 受控服務主體的 目錄(租用戶)標識符 值。
  • AZURE_SP_CLIENT_SECRET,這是 Microsoft Entra ID 受控服務主體之用戶端密碼 的 Value 值

如需 GitHub Action 需要哪些 GitHub 加密秘密的詳細資訊,請參閱 管理服務主體 和該 GitHub Action 的檔。

若要將這些 GitHub 加密的秘密新增至 GitHub 存放庫,請參閱 GitHub 檔中的為存放庫 建立加密的秘密。 如需新增這些 GitHub 存放庫秘密的其他方法,請參閱 GitHub 檔中的 加密秘密。

將 GitHub 計算機使用者的 GitHub 個人存取令牌新增至 Azure Databricks 工作區

本節說明如何讓 Azure Databricks 工作區使用 Azure Databricks Git 資料夾存取 GitHub。 這是 CI/CD 案例中的選擇性工作。

為了安全性最佳做法,Databricks 建議您使用 GitHub 計算機使用者,而不是 GitHub 個人帳戶,因為您應該使用服務主體而不是 Azure Databricks 使用者的許多相同原因。 若要將 GitHub 計算機使用者的 GitHub 個人存取令牌新增至 Azure Databricks 工作區,請執行下列動作:

  1. 如果您還沒有可用的 GitHub 計算機使用者,請建立 GitHub 計算機使用者。 GitHub 計算機使用者 是 GitHub 個人帳戶,與您自己的 GitHub 個人帳戶不同,可用來自動化 GitHub 上的活動。 如果您還沒有可用的帳戶,請建立新的個別 GitHub 帳戶 ,以作為 GitHub 計算機使用者使用。

    注意

    當您將新的 GitHub 帳戶建立為 GitHub 計算機使用者時,您無法將它與您自己的 GitHub 個人帳戶的電子郵件地址產生關聯。 相反地,請參閱貴組織的電子郵件管理員,以取得與這個新的個別 GitHub 帳戶建立關聯的個別電子郵件地址作為 GitHub 計算機使用者。

    請參閱貴組織的帳戶管理員,瞭解如何管理個別的電子郵件位址及其相關聯的 GitHub 計算機使用者,以及貴組織內的 GitHub 個人存取令牌。

  2. 授與 GitHub 計算機使用者對 GitHub 存放庫的存取權。 請參閱 GitHub 檔中的邀請小組或人員 。 若要接受邀請,您必須先註銷 GitHub 個人帳戶,然後以 GitHub 計算機使用者身分登入。

  3. 以計算機使用者身分登入 GitHub,然後為該電腦使用者建立 GitHub 個人存取令牌。 請參閱 GitHub 檔中的建立個人存取令牌 。 請務必提供 GitHub 個人存取令牌 存放庫 存取權。

  4. 收集服務主體、GitHub 計算機用戶名稱的 Microsoft Entra 識別符令牌,然後將 Git 提供者認證新增至 Azure Databricks 工作區

設定 Azure Pipelines

Azure Pipelines 必須能夠存取您的 Azure Databricks 工作區。 如果您也想要使用 Azure Databricks Git 資料夾,您的工作區必須能夠存取 Azure Pipelines。

Azure Pipelines YAML 管線檔案依賴環境變數來存取您的 Azure Databricks 工作區。 這些環境變數包括下列環境變數:

  • DATABRICKS_HOST,也就是您的工作區實例名稱後面接著的值https://,例如 adb-1234567890123456.7.azuredatabricks.net
  • DATABRICKS_TOKEN,這是 token_value 您在建立 Microsoft Entra ID 受控服務主體的 Microsoft Entra 標識符令牌之後複製的值。

若要將這些環境變數新增至 Azure 管線,請參閱 在 Azure Pipelines 中使用 Azure 金鑰值秘密和 在 Azure 檔案中設定秘密變數

另請參閱下列 Databricks 部落格:

CI/CD 案例選用:如果您的工作區使用 Azure Databricks Git 資料夾,而且您想要讓工作區存取 Azure Pipelines,請收集:

  • 服務主體的 Microsoft Entra ID 令牌
  • 您的 Azure Pipelines 用戶名稱

然後, 將 Git 提供者認證新增至 Azure Databricks 工作區

設定 GitLab CI/CD

GitLab CI/CD 必須能夠存取您的 Azure Databricks 工作區。 如果您也想要使用 Azure Databricks Git 資料夾,您的工作區必須能夠存取 GitLab CI/CD。

若要存取 Azure Databricks 工作區,GitLab CI/CD .gitlab-ci.yml 檔案,例如 中dbx基本 Python 範本一部分,依賴自定義 CI/CD 變數,例如:

  • DATABRICKS_HOST,也就是您的工作區實例名稱後面接著的值https://,例如 adb-1234567890123456.7.azuredatabricks.net
  • DATABRICKS_TOKEN,這是 token_value 您在為服務主體建立 Microsoft Entra ID 令牌之後複製的值。

若要將這些自定義變數新增至 GitLab CI/CD 專案,請參閱 GitLab CI/CD 檔案中的將 CI/CD 變數新增至專案

如果您的工作區使用 Databricks Git 資料夾,而且您想要讓工作區存取 GitLab CI/CD,請收集:

  • 服務主體的 Microsoft Entra ID 令牌
  • 您的 GitLab CI/CD 用戶名稱

然後將 Git 提供者認證新增至 Azure Databricks 工作區

將 Git 提供者認證新增至 Azure Databricks 工作區

本節說明如何讓 Azure Databricks 工作區存取 Azure Databricks Git 資料夾的 Git 提供者。 在 CI/CD 案例中,這是選擇性的。 例如,您可能只想要 Git 提供者存取 Azure Databricks 工作區,但您也不想將工作區中的 Azure Databricks Git 資料夾與 Git 提供者搭配使用。 如果是,請略過本節。

開始之前,請先收集下列資訊和工具:

  • 服務主體的 Microsoft Entra ID 令牌。
  • 與您的 Git 提供者相關聯的用戶名稱。
  • 與 Git 提供者使用者相關聯的存取令牌。

注意

針對 Azure Pipelines,請參閱 在 Azure 網站上使用個人存取令牌

  • Databricks CLI 0.205 版或更新版本。 請參閱 什麼是 Databricks CLI?。 您無法使用 Azure Databricks 使用者介面。
  • 檔案.databrickscfg中的 Azure Databricks 組態配置檔,配置檔的字段會針對代表 Azure Databricks 每個工作區 URL 的相關欄位host正確設定,例如 https://adb-1234567890123456.7.azuredatabricks.net,並token代表服務主體的 Microsoft Entra ID 令牌。 (請勿將 Databricks 個人存取令牌用於工作區使用者。請參閱 Azure Databricks 個人存取令牌驗證

使用 Databricks CLI 來執行下列命令:

databricks git-credentials create <git-provider-short-name> --git-username <git-provider-user-name> --personal-access-token <git-provider-access-token> -p <profile-name>
  • 針對 使用下列 <git-provider-short-name>其中一項:
    • 針對 GitHub,請使用 GitHub
    • 針對 Azure Pipelines,請使用 AzureDevOpsServices
    • 針對 GitLab CI/CD,請使用 GitLab
  • 將取代 <git-provider-user-name> 為您的 Git 提供者相關聯的用戶名稱。
  • 將取代 <git-provider-access-token> 為您 Git 提供者的使用者相關聯的存取令牌。
  • 將 取代 <profile-name> 為您檔案中的 .databrickscfg Azure Databricks 組態配置檔名稱。

提示

若要確認呼叫成功,您可以執行下列其中一個 Databricks CLI 命令,並檢閱輸出:

databricks git-credentials list -p <profile-name>
databricks git-credentials get <credential-id> -p <profile-name>