Microsoft Entra ID を使用して dbt Core から Azure Databricks サインオンを構成する

重要

この機能はパブリック プレビュー段階にあります。

この記事では、Microsoft Entra ID を使用して dbt Core から Azure Databricks サインオンを構成する方法について説明します。 この 1 回限りの構成を Azure Databricks アカウント管理者として完了すると、ユーザーはシングル サインオン (SSO) を使用して Azure Databricks を dbt Core に接続できます。

Microsoft Entra ID を使用するだけでなく、Databricks M2M OAuth を使用して dbt Core と統合することもできます。 「パートナー OAuth アプリケーションを有効または無効にする」を参照してください。

開始する前に

この記事の手順を行う前に、次のことが必要です。

  • ローカル dbt Core 環境へのアクセス権を持っている
  • Azure Databricks ワークスペース内の SQL ウェアハウスのサーバー ホスト名HTTP パスを取得する
  • Azure Databricks のアカウント管理者である
  • Azure Databricks アカウントの Azure テナントに Azure アプリの登録を作成するためのアクセス許可を持っている。

dbt Core 用にマシン間 (M2M) 認証を構成する

このセクションでは、Azure Databricks と dbt Core 用にマシン間 (M2M) 認証を構成する方法について説明します。 OAuth の M2M ワークフローを使うと、CI/CD 統合などの自動化されたプロセスで、人の介入なしにリソースに安全にアクセスできるようになります。 dbt クライアントは、サービス プリンシパルとして実行され、サービス プリンシパルを使って Azure AD から OAuth トークンを取得し、このトークンを使って Databricks SQL API に接続します。

Azure アプリの登録を作成する

  1. Azure portal を使用して、Azure Databricks アカウントの Azure テナント (https://portal.azure.com/<tenant-id>) にサインインします。
  2. [アプリの登録] をクリックします。 [アプリの登録] が表示されない場合は、[その他のサービス] をクリックし、[サービスのフィルター] テキスト ボックスを使用して [アプリの登録] を検索します。
  3. [新規登録] をクリックします。
  4. アプリの [名前] を入力します。
  5. [リダイレクト URI] に関しては、ドロップダウン メニューから [パブリック クライアント/ネイティブ (モバイルおよびデスクトップ)] を選択して http://localhost:8020 と入力します。
  6. [登録] をクリックします。
  7. アプリケーション (クライアント) ID をコピーします。 この値は、後で必要になります。

Azure アプリの登録用のクライアント シークレットを生成する

  1. Azure portal で、前のステップで作成したアプリの登録を選びます。
  2. [証明書とシークレット] をクリックして、[新しいクライアント シークレット] をクリックします。
  3. 説明を入力して、[追加] をクリックします。
  4. シークレットの値をコピーします。 この値は後で必要になり、シークレットを作成した後でしかアクセスできません。

Microsoft Entra ID サービス プリンシパルをワークスペースに追加する

  1. Azure Databricks ワークスペースの右上にあるユーザー名をクリックしてから、[設定] をクリックします。
  2. [ID およびアクセス管理] タブをクリックします。
  3. [サービス プリンシパル] の横にある [管理] をクリックします。
  4. [サービス プリンシパルの追加] をクリックしてから、[クライアント ID] をクリックします。
  5. [ApplicationId] に、先ほどコピーしたアプリケーション (クライアント) ID を入力します。
  6. [表示名] にサービス プリンシパルの論理名を入力してから、[追加] をクリックします。

M2M プロファイルを dbt プロジェクトに追加する

  1. [アプリケーション (クライアント) ID] を設定し、前にコピーしたクライアント シークレットを環境変数として設定します。 Databricks では、シークレットなどの機密情報を profiles.yml に直接格納することは推奨されません。

    ~ export DATABRICKS_CLIENT_ID=<client-id>
    ~ export DATABRICKS_CLIENT_SECRET=<client-secret>
    
  2. M2M プロファイルを dbt プロジェクトの profiles.yml ファイルに追加します。

    M2M プロファイル azure-oauth-m2m が指定されている profiles.yml ファイルの例を次に示します。 targetazure-oauth-m2m を指定すると、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 Warehouses] (SQL ウェアハウス) をクリックし、お使いの SQL ウェアハウスをクリックして、[アクセス許可] をクリックします。
  2. この記事で前に作成したサービス プリンシパルの横にあるドロップダウン メニューから [使用可能] を選んでください。

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 portal を使用して、Azure Databricks アカウントの Azure テナント (https://portal.azure.com/<tenant-id>) にサインインします。
  2. [アプリの登録] をクリックします。 [アプリの登録] が表示されない場合は、[その他のサービス] をクリックし、[サービスのフィルター] テキスト ボックスを使用して [アプリの登録] を検索します。
  3. [新規登録] をクリックします。
  4. アプリの [名前] を入力します。
  5. [リダイレクト URI] に関しては、ドロップダウン メニューから [パブリック クライアント/ネイティブ (モバイルおよびデスクトップ)] を選択して http://localhost:8020 と入力します。
  6. [登録] をクリックします。
  7. [アプリケーション (クライアント) ID][テナント ID] をコピーします。 これらの値は後で必要になります。

U2M プロファイルを dbt プロジェクトに追加する

U2M プロファイルを dbt プロジェクトの profiles.yml ファイルに追加します。

U2M プロファイル azure-oauth-u2m が指定されている profiles.yml ファイルの例を次に示します。 targetazure-oauth-u2m を指定すると、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 に接続する」を参照してください。