Azure Databricks でOkta のデータに接続してデータ処理を行う方法

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
CData JDBC Driver、Azure、Databricks を使用して、リアルタイムOkta のデータのデータエンジニアリングとデータサイエンスを実行。

Databricks は、Apache Spark によるデータ処理機能を提供するクラウドベースのサービスです。CData JDBC ドライバと組み合わせることで、Databricks を使用してリアルタイムOkta のデータのデータエンジニアリングとデータサイエンスを実行できます。この記事では、Azure で CData JDBC ドライバをホストし、Databricks からリアルタイムOkta のデータに接続してデータを処理する方法を説明します。

最適化されたデータ処理機能を組み込んだ CData JDBC ドライバは、リアルタイムOkta のデータとのインタラクションにおいて卓越したパフォーマンスを発揮します。Okta に対して複雑な SQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされている SQL 操作を直接Oktaにプッシュし、サポートされていない操作(主に SQL 関数や JOIN 操作)は組み込みの SQL エンジンを使用してクライアント側で処理します。動的メタデータクエリ機能により、ネイティブのデータ型を使用してOkta のデータの操作・分析が可能です。

CData JDBC ドライバを Azure にインストール

Databricks でリアルタイムOkta のデータを操作するには、Azure Data Lake Storage(ADLS)を通じてドライバーをインストールします。(以前のバージョンの記事で説明していた DBFS を介した接続方法は非推奨となっていますが、廃止日は公開されていません。

  1. JDBC JAR ファイルを任意の Blob コンテナにアップロードします(例:「databrickslibraries」ストレージアカウントの「jdbcjars」コンテナ)。
  2. ストレージアカウントから「セキュリティとネットワーク」を展開し、「アクセスキー」をクリックしてアカウントキーを取得します。使用するキーを表示してコピーしてください。
  3. コンテナに移動し、JAR を保存している特定のコンテナを開き、JDBC JAR ファイルのエントリを選択して JAR ファイルの URL を取得します。ファイルの詳細が開き、URL をクリップボードにコピーするボタンがあります。この値は以下のようになります(「blob」の部分はストレージアカウントの種類によって異なる場合があります):
    https://databrickslibraries.blob.core.windows.net/jdbcjars/cdata.jdbc.salesforce.jar
  4. Databricks クラスターの「Configuration」タブで「Edit」ボタンをクリックし、「Advanced options」を展開します。そこで、以下の Spark オプション(JAR URL のドメイン名から派生)に、コピーしたアカウントキーを値として追加し、「Confirm」をクリックします: spark.hadoop.fs.azure.account.key.databrickslibraries.blob.core.windows.net
  5. Databricks クラスターの「Libraries」タブで「Install new」をクリックし、ADLS オプションを選択します。ドライバー JAR の ABFSS URL(これも JAR URL のドメイン名から派生)を指定し、「Install」をクリックします。ABFSS URL は以下のようになります:
    abfss://jdbcjars@databrickslibraries.blob.core.windows.net/cdata.jdbc.salesforce.jar

Databricks からOktaに接続

JAR ファイルがインストールされたら、Databricks でリアルタイムOkta のデータを操作する準備が整いました。まず、ワークスペースで新しいノートブックを作成します。ワークブックに名前を付け、言語として Python が選択されていることを確認し(デフォルトで選択されているはずです)、「Connect」をクリックして「General Compute」から JDBC ドライバーをインストールしたクラスターを選択します(デフォルトで選択されているはずです)。

Oktaへの接続を設定

JDBC ドライバのクラスを参照し、JDBC URL で使用する接続文字列を構築してOktaに接続します。また、JDBC URL に RTK プロパティを設定する必要があります(Beta ドライバーを使用している場合を除く)。このプロパティの設定方法については、インストールに含まれるライセンスファイルを参照してください。

driver = "cdata.jdbc.okta.OktaDriver"
url = "jdbc:okta:RTK=5246...;Domain=dev-44876464.okta.com;"

組み込みの接続文字列デザイナー

JDBC URL の構築には、Okta JDBC Driver に組み込まれている接続文字列デザイナーを使用できます。JAR ファイルをダブルクリックするか、コマンドラインから JAR ファイルを実行してください。

java -jar cdata.jdbc.okta.jar

接続プロパティを入力し、接続文字列をクリップボードにコピーします。

Okta に接続するには、Domain 接続文字列プロパティをお使いのOkta ドメインに設定します。 Okta はOAuth およびOAuthJWT 認証をサポートしています。

OAuth認証

OAuth で認証するには、AuthSchemeOAuth に設定する必要があります。また、カスタムOAuth アプリケーションを作成する必要があります。

カスタムOAuth アプリケーションの作成

Okta アカウントから:

  1. 管理者アカウントでOkta のデベロッパーエディションにサインインします。
  2. Admin Consoleで、Applications > Applications に移動します。
  3. Create App Integration をクリックします。
  4. Sign-in method は、OIDC - OpenID Connect を選択します。
  5. Application type は、Web Application を選択します。
  6. カスタムアプリケーションの名前を入力します。
  7. Grant TypeをAuthorization Code に設定します。トークンを自動的に更新したい場合は、Refresh Token もチェックしてください。
  8. コールバックURL を設定します。
    • デスクトップアプリケーションやヘッドレスマシンでは、http://localhost:33333 または任意の別のポート番号を使用します。ここで設定したURI が、CallbackURL プロパティになります。
    • Web アプリケーションの場合、コールバックURL を信頼できるリダイレクトURL に設定します。このURL は、アプリケーションへのアクセスが許可されたことを示すトークンを伴ってユーザーが戻ってくるWeb 上の場所です。
  9. Assignments セクションで、Limit access to selected groups を選択してグループを追加するか、グループの割り当ては一旦スキップします。
  10. OAuth アプリケーションを保存します。
  11. アプリケーションのGeneral タブに、アプリケーションのClient Id とClient Secret が表示されます。後で使用できるように、これらを記録してください。Client Id はOAuthClientId の設定に使用し、Client Secret はOAuthClientSecret の設定に使用します。
  12. Assignments タブを確認し、アプリケーションにアクセスする必要のあるすべてのユーザーがアプリケーションに割り当てられていることを確かめます。
  13. Okta API Scopes タブで、OAuth アプリケーションに付与するスコープを選択します。これらのスコープは、アプリが読み取り可能なデータを決定します。そのため、特定のビューに対するスコープを付与しないと、そのビューに対するクエリを実行する権限がドライバーに付与されません。各ビューに必要なスコープを確認するには、ヘルプドキュメントのデータモデル > ビュー のビュー固有のページを参照してください。

OAuth 認証の詳細や、OAuthJWT 認証については、ヘルプドキュメントを参照してください。

Okta のデータの読み込み

接続を設定したら、CData JDBC ドライバと接続情報を使用してOkta のデータをデータフレームとして読み込むことができます。

remote_table = spark.read.format ( "jdbc" ) \
	.option ( "driver" , driver) \
	.option ( "url" , url) \
	.option ( "dbtable" , "Users") \
	.load ()

Okta のデータの表示

読み込んだOkta のデータを display 関数で確認してみましょう。

display (remote_table.select ("Id"))

Azure Databricks でOkta のデータを分析

Databricks SparkSQL でデータを処理したい場合は、読み込んだデータを一時ビューとして登録します。

remote_table.createOrReplaceTempView ( "SAMPLE_VIEW" )

以下の SparkSQL で分析用のOkta のデータを取得できます。

result = spark.sql("SELECT Id, ProfileFirstName FROM SAMPLE_VIEW WHERE Status = 'Active'")

Okta からのデータは、対象のノートブック内でのみ利用可能です。他のユーザーと共有したい場合は、テーブルとして保存してください。

remote_table.write.format ( "parquet" ) .saveAsTable ( "SAMPLE_TABLE" )

CData JDBC Driver for Okta の30日間の無償トライアルをダウンロードして、Azure Databricks でリアルタイムOkta のデータを活用してみてください。ご不明な点があれば、サポートチームまでお気軽にお問い合わせください。

はじめる準備はできましたか?

Okta Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Okta Icon Okta JDBC Driver お問い合わせ

Okta データと連携するパワフルなJava アプリケーションを短時間・低コストで作成して配布できます。