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 との連携をご検討の方はぜひお試しください。
関連コンテンツ