CData Databricks Drivers でOAuth認証を使う

by 浦邊信太郎 | 2024年11月01日 | 最終更新日: 2024年11月01日

CData Databricks Drivers はv24.1 でOAuth 認証がサポートされました。これまでMicrosoft Entra IdによるAzure AD 認証をサポートしていましたが、Databricks アカウントを使ったOAuth 認証も可能になりました。

OAuth 認証の方式はユーザーアカウント認証サービスプリンシパル認証の2つの種類があります。ユーザーアカウント (user-to-machine) 認証はDatabricks クライアント統合認証で処理されます。認証時にWeb ブラウザが起動し、ユーザが自身の認証情報でログインして認証します。サービスプリンシパル (machine-to-machine) 認証はDatabricks サービスプリンシパルを使用して認証します。呼び出し元がクライアント資格情報を提供することによってWeb ブラウザを起動することなく認証を行います。ユーザが利用するデスクトップアプリケーションなどでドライバを使用する場合は、ユーザごとの認証を確実に行うためにユーザアカウント認証をお勧めします。一方でサービスプリンシパル認証を使用する場面としてはLinux などGUI を持たない環境やバックエンドのサーバ等でドライバを使用する場合などが挙げられます。

それではOAuth 認証の方法を説明します。ユーザアカウント認証とサービスプリンシパル認証では設定するプロパティが若干異なります。共通で使う接続プロパティは以下の通りです。

プロパティ 設定値
AuthScheme 「OAuthU2M」 or 「OAuthM2M」
InitiateOAuth 「GETANDREFRESH」
OAuthLevel 「AccountLevel」 or 「WorkspaceLevel」
Server サーバのホスト名
HTTPPath HTTPパス

AuthSchemeプロパティには認証の種類を設定します。ユーザーアカウント認証の場合は「OAuthU2M」、サービスプリンシパル認証の場合は「OAuthM2M」を設定します。InitiateOAuth プロパティにはOAuth アクセストークンの取得方法を設定します。「GETANDREFRESH」を設定するとドライバでOAuth アクセストークンの取得およびリフレッシュを行います。OAuthLevel プロパティにはアカウントとワークスペースのどちらのレベルで認証を行うか指定します。アカウントとワークスペースの概要についてはこちらの記事をご覧ください。Server プロパティに設定するサーバのホスト名と、HTTPPathプロパティに設定する HTTP パスの取得方法はこちらをご覧ください。

以下ではユーザアカウント認証とサービスプリンシパル認証の手順をそれぞれ示します。

ユーザーアカウント (user-to-machine) 認証の方法

ユーザーアカウント認証時に設定するプロパティは以下の通りです。AuthSchemeプロパティに「OAuthU2M」を設定します。

プロパティ 設定値
AuthScheme 「OAuthU2M」
InitiateOAuth 「GETANDREFRESH」
OAuthLevel 「AccountLevel」 or 「WorkspaceLevel」
Server サーバのホスト名
HTTPPath HTTPパス

この設定でドライバから接続すると、Web ブラウザが起動し以下のようにDatabricks のログイン画面が表示されます。

ログインに成功するとWeb ブラウザに以下の画面が表示されます。

OAuth アクセストークンとOAuth リフレッシュトークンが取得され、以降はこのトークンを用いてアクセスします。ドライバは接続時にOAuth アクセストークンの期限切れが検知されると自動でOAuth アクセストークンのリフレッシュを行います。そのため基本的に次回以降の接続ではWeb ブラウザでのログインを行う必要はありません。

サービスプリンシパル (machine-to-machine) 認証の方法

サービスプリンシパル認証時に設定するプロパティは以下の通りです。

プロパティ 設定値
AuthScheme 「OAuthM2M」
InitiateOAuth 「GETANDREFRESH」
OAuthLevel 「AccountLevel」 or 「WorkspaceLevel」
Server サーバのホスト名
HTTPPath HTTPパス
OAuthClientId OAuthクライアントID
OAuthClientSecret OAuthクライアントシークレット

AuthScheme プロパティに「OAuthM2M」を設定します。また、クライアント資格情報としてOAuth クライアントID とOAuth クライアントシークレットを設定します。OAuth クライアントID とOAuth クライアントシークレットの取得方法はこちらをご覧ください。

この設定でドライバから接続すると、設定したクライアント資格情報で認証が行われOAuth アクセストークンを取得します。このときWeb ブラウザは起動しません。ドライバは接続時に毎回OAuth アクセストークンを取得するため、OAuth リフレッシュトークンによるリフレッシュ処理は行いません。

本記事ではCData Databricks Drivers でOAuth 認証を使う方法を紹介しました。OAuth アクセストークンの管理はドライバが行うため、ユーザはトークンのライフサイクル等を意識することなくDatabricks に接続することができます。CData Databricks Drivers は30日間の無料トライアルが可能です。Databricks との連携をご検討の方はぜひお試しください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。