分享方式:


使用 Microsoft Entra ID 從 dbt Core 設定 Azure Databricks 登入

重要

這項功能處於公開預覽狀態

本文說明如何使用 Microsoft Entra ID 從 dbt Core 設定 Azure Databricks 登入。 以 Azure Databricks 帳戶管理員身分完成此單次設定之後,使用者可以使用單一登錄將 Azure Databricks 連線到 dbt Core。

除了使用 Microsoft Entra ID 之外,您還可以使用 Databricks M2M OAuth 與 dbt Core 整合。 請參閱 啟用或停用合作夥伴 OAuth 應用程式

開始之前

完成本文中的步驟之前,您必須:

  • 可存取本機 dbt Core 環境
  • 取得 Azure Databricks 工作區中 SQL 倉儲的伺服器主機名HTTP 路徑
  • 成為 Azure Databricks 帳戶管理員
  • 有權在 Azure 租使用者中為您的 Azure Databricks 帳戶建立 Azure 應用程式註冊。

設定 dbt Core 的電腦對電腦 (M2M) 驗證

本節說明如何設定 Azure Databricks 和 dbt Core 的機器對機器(M2M)驗證。 OAuth 的 M2M 工作流程可讓自動化程式,例如 CI/CD 整合,在不需人為介入的情況下安全地存取資源。 dbt 用戶端會以服務主體的形式執行、使用服務主體從 Azure AD 取得 OAuth 令牌,並利用此令牌來與 Databricks SQL API 連線。

建立 Azure 應用程式註冊

  1. 使用 Azure 入口網站,在 登入 Azure Databricks 帳戶的 Azure 租使用者https://portal.azure.com/<tenant-id>
  2. 按兩下 [應用程式註冊]。 如果看不到 應用程式註冊,請按兩下 [更多服務],並使用 [篩選服務] 文字框來搜尋 應用程式註冊
  3. 按一下 [新增註冊]
  4. 輸入應用程式的 [名稱]。
  5. 針對 [ 重新導向 URI],從下拉功能表中選取 [公用用戶端/原生和桌面], 然後輸入 http://localhost:8020
  6. 按一下 [註冊] 。
  7. 複製應用程式 (用戶端) 識別碼。 您稍後將需要此值。

產生 Azure 應用程式註冊的客戶端密碼

  1. 在 Azure 入口網站 中,選取您在上一個步驟中建立的應用程式註冊。
  2. 按兩下 [ 憑證和密碼],然後按兩下 [ 新增客戶端密碼]。
  3. 輸入描述,然後按兩下 [ 新增]。
  4. 複製秘密值。 您稍後將需要此值,而且只能在建立秘密之後存取此值。

將 Microsoft Entra ID 服務主體新增至您的工作區

  1. 在 Azure Databricks 工作區中,按下右上方的使用者名稱,然後按兩下 [設定]。
  2. 按兩下 [ 身分識別和存取 ] 索引標籤。
  3. 按兩下 [服務主體] 旁 [ 管理]。
  4. 按兩下 [ 新增服務主體],然後按兩下 [ 用戶端標識符]。
  5. 針對 ApplicationId,輸入 您稍早複製的應用程式(用戶端)標識碼
  6. 針對 [ 顯示名稱],輸入服務主體的邏輯名稱,然後按兩下[ 新增]。

將 M2M 設定檔新增至 dbt 專案

  1. 將您稍早複製的應用程式 (用戶端) 識別碼和客戶端密碼設定為環境變數。 Databricks 不建議直接儲存機密資訊,例如秘密 profiles.yml

    ~ export DATABRICKS_CLIENT_ID=<client-id>
    ~ export DATABRICKS_CLIENT_SECRET=<client-secret>
    
  2. 將 M2M 設定檔新增至 profiles.yml dbt 專案中的檔案。

    以下是指定 M2M 設定檔azure-oauth-m2m的範例profiles.yml檔案。 azure-oauth-m2mtarget指定 將 M2M 設定檔設定為 dbt 使用的預設執行設定檔。

    databricks_demo:
      outputs:
        ...
        azure-oauth-m2m:
          catalog: uc_demos
          host: "adb-xxx.azuredatabricks.net"
          http_path: "/sql/1.0/warehouses/9196548d010cf14d"
          schema: databricks_demo
          threads: 1
          type: databricks
          auth_type: oauth
          client_id: "{{ env_var('DATABRICKS_CLIENT_ID') }}"
          client_secret: "{{ env_var('DATABRICKS_CLIENT_SECRET') }}"
    target: azure-oauth-m2m
    

授權服務主體存取 SQL 倉儲

  1. 在提要欄位中,按兩下 [SQL 倉儲]、按兩下您的 SQL 倉儲,然後按兩下 [ 許可權]。
  2. 在本文稍早建立的服務主體旁邊,從下拉功能表中選取 [CAN USE]。

確認 OAuth 應用程式設定

dbt debug執行 命令以確認您的 OAuth 應用程式已正確設定。 例如:

dbt debug --target azure-oauth-m2m

以下是成功 dbt debug 執行的範例輸出:

  ...
  Configuration:
    profiles.yml file [OK found and valid]
    dbt_project.yml file [OK found and valid]

  Required dependencies:
    - git [OK found]

  Connection:
    ...
    Connection test: OK connection ok

設定 dbt Core 的使用者對電腦 (U2M) 驗證

本節說明如何使用 Azure Databricks 和 dbt Core 設定使用者對機器驗證。 OAuth 的 U2M 工作流程可透過從 Azure AD 的瀏覽器彈出視窗安全地取得 OAuth 令牌,以代表使用者存取 dbt 用戶端。 Dbt 會使用此令牌來連線到 Databricks SQL API,簡化驗證和授權。

建立 Azure 應用程式註冊

  1. 使用 Azure 入口網站,在 登入 Azure Databricks 帳戶的 Azure 租使用者https://portal.azure.com/<tenant-id>
  2. 按兩下 [應用程式註冊]。 如果看不到 應用程式註冊,請按兩下 [更多服務],並使用 [篩選服務] 文字框來搜尋 應用程式註冊
  3. 按一下 [新增註冊]
  4. 輸入應用程式的 [名稱]。
  5. 針對 [ 重新導向 URI],從下拉功能表中選取 [公用用戶端/原生和桌面], 然後輸入 http://localhost:8020
  6. 按一下 [註冊] 。
  7. 複製應用程式 (用戶端) 識別碼租用戶標識碼。 您稍後會需要這些值。

將 U2M 設定檔新增至 dbt 專案

將 U2M 設定檔新增至 profiles.yml dbt 專案中的檔案。

以下是指定 U2M 設定檔azure-oauth-u2m的範例profiles.yml檔案。 指定 azure-oauth-u2mtarget U2M 設定檔設定為 dbt 使用的預設執行設定檔。

databricks_demo:
outputs:
  azure-oauth-u2m:
    catalog: uc_demos
    host: "adb-xxx.azuredatabricks.net"
    http_path: "/sql/1.0/warehouses/9196548d010cf14d"
    schema: databricks_demo
    threads: 1
    type: databricks
    auth_type: oauth
    client_id: "9729e77e-ba94-4d53-8cfb-bb609f43f881"
target: azure-oauth-u2m

確認 OAuth 應用程式設定

  1. dbt debug執行 命令以確認您的 OAuth 應用程式已正確設定。 例如:

    dbt debug --target azure-oauth-u2m
    

    [ 要求 的許可權] 頁面會在瀏覽器中開啟。

  2. 按一下 [接受]

以下是成功 dbt debug 執行的範例輸出:

...
Configuration:
  profiles.yml file [OK found and valid]
  dbt_project.yml file [OK found and valid]

Required dependencies:
  - git [OK found]

Connection:
  ...
  Connection test: OK connection ok

其他資源

若要建立新的 dbt Core 專案,並使用 SSO 驗證連線到 Azure Databricks,請參閱 連線 至 dbt Core