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 アプリの登録を作成する
- Azure portal を使用して、Azure Databricks アカウントの Azure テナント (
https://portal.azure.com/<tenant-id>
) にサインインします。 - [アプリの登録] をクリックします。 [アプリの登録] が表示されない場合は、[その他のサービス] をクリックし、[サービスのフィルター] テキスト ボックスを使用して [アプリの登録] を検索します。
- [新規登録] をクリックします。
- アプリの [名前] を入力します。
- [リダイレクト URI] に関しては、ドロップダウン メニューから [パブリック クライアント/ネイティブ (モバイルおよびデスクトップ)] を選択して
http://localhost:8020
と入力します。 - [登録] をクリックします。
- アプリケーション (クライアント) ID をコピーします。 この値は、後で必要になります。
Azure アプリの登録用のクライアント シークレットを生成する
- Azure portal で、前のステップで作成したアプリの登録を選びます。
- [証明書とシークレット] をクリックして、[新しいクライアント シークレット] をクリックします。
- 説明を入力して、[追加] をクリックします。
- シークレットの値をコピーします。 この値は後で必要になり、シークレットを作成した後でしかアクセスできません。
Microsoft Entra ID サービス プリンシパルをワークスペースに追加する
- Azure Databricks ワークスペースの右上にあるユーザー名をクリックしてから、[設定] をクリックします。
- [ID およびアクセス管理] タブをクリックします。
- [サービス プリンシパル] の横にある [管理] をクリックします。
- [サービス プリンシパルの追加] をクリックしてから、[クライアント ID] をクリックします。
- [ApplicationId] に、先ほどコピーしたアプリケーション (クライアント) ID を入力します。
- [表示名] にサービス プリンシパルの論理名を入力してから、[追加] をクリックします。
M2M プロファイルを dbt プロジェクトに追加する
[アプリケーション (クライアント) ID] を設定し、前にコピーしたクライアント シークレットを環境変数として設定します。 Databricks では、シークレットなどの機密情報を
profiles.yml
に直接格納することは推奨されません。~ export DATABRICKS_CLIENT_ID=<client-id> ~ export DATABRICKS_CLIENT_SECRET=<client-secret>
M2M プロファイルを dbt プロジェクトの
profiles.yml
ファイルに追加します。M2M プロファイル
azure-oauth-m2m
が指定されているprofiles.yml
ファイルの例を次に示します。target
にazure-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 ウェアハウスにアクセスすることを認可する
- サイドバーで [SQL Warehouses] (SQL ウェアハウス) をクリックし、お使いの SQL ウェアハウスをクリックして、[アクセス許可] をクリックします。
- この記事で前に作成したサービス プリンシパルの横にあるドロップダウン メニューから [使用可能] を選んでください。
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 アプリの登録を作成する
- Azure portal を使用して、Azure Databricks アカウントの Azure テナント (
https://portal.azure.com/<tenant-id>
) にサインインします。 - [アプリの登録] をクリックします。 [アプリの登録] が表示されない場合は、[その他のサービス] をクリックし、[サービスのフィルター] テキスト ボックスを使用して [アプリの登録] を検索します。
- [新規登録] をクリックします。
- アプリの [名前] を入力します。
- [リダイレクト URI] に関しては、ドロップダウン メニューから [パブリック クライアント/ネイティブ (モバイルおよびデスクトップ)] を選択して
http://localhost:8020
と入力します。 - [登録] をクリックします。
- [アプリケーション (クライアント) ID] と [テナント ID] をコピーします。 これらの値は後で必要になります。
U2M プロファイルを dbt プロジェクトに追加する
U2M プロファイルを dbt プロジェクトの profiles.yml
ファイルに追加します。
U2M プロファイル azure-oauth-u2m
が指定されている profiles.yml
ファイルの例を次に示します。 target
に azure-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 アプリケーションの設定を検証する
dbt debug
コマンドを実行して、OAuth アプリケーションが正しく構成されていることを検証します。 次に例を示します。dbt debug --target azure-oauth-u2m
[要求されているアクセス許可] ページがブラウザーで開きます。
承諾をクリックします。
次に示すのは、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 に接続する」を参照してください。