Apache Airflow で Okta データを連携

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
CData JDBC Driver を使用して、Apache Airflow で Okta のデータ にアクセスして処理。

Apache Airflow は、データエンジニアリングワークフローの作成、スケジューリング、モニタリングをサポートするツールです。 CData JDBC Driver for Okta と組み合わせることで、Airflow からリアルタイムの Okta のデータ を扱うことができます。 この記事では、Apache Airflow インスタンスから Okta のデータ に接続してクエリを実行し、結果を CSV ファイルに保存する方法を説明します。

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

Okta への接続を設定

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

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 認証については、ヘルプドキュメントを参照してください。

クラスター環境やクラウドで JDBC ドライバーをホストする場合は、ライセンス(製品版またはトライアル版)とランタイムキー(RTK)が必要です。ライセンス(またはトライアル)の取得については、弊社営業チームにお問い合わせください

以下は、JDBC 接続に必要な主なプロパティです。

プロパティ
データベース接続 URLjdbc:okta:RTK=5246...;Domain=dev-44876464.okta.com;
データベースドライバークラス名cdata.jdbc.okta.OktaDriver

Airflow で JDBC 接続を設定

  1. Apache Airflow インスタンスにログインします。
  2. Airflow インスタンスのナビゲーションバーで、Admin にカーソルを合わせ、Connections をクリックします。
  3. 次の画面で + ボタンをクリックして、新しい接続を作成します。
  4. Add Connection フォームで、必要な接続プロパティを入力します:
    • Connection Id:接続の名前を入力します(例:okta_jdbc)
    • Connection Type:JDBC Connection
    • Connection URL:上記の JDBC 接続 URL(例:jdbc:okta:RTK=5246...;Domain=dev-44876464.okta.com;)
    • Driver Class:cdata.jdbc.okta.OktaDriver
    • Driver Path:PATH/TO/cdata.jdbc.okta.jar
  5. フォーム下部の Test ボタンをクリックして、新しい接続をテストします。
  6. 新しい接続を保存すると、次の画面で接続リストに新しい行が追加されたことを示す緑色のバナーが表示されます。

DAG の作成

Airflow の DAG は、ワークフローのプロセスを保存し、トリガーすることでワークフローを実行できるエンティティです。 ここでのワークフローは、Okta のデータ に対して SQL クエリを実行し、結果を CSV ファイルに保存するというシンプルなものです。

  1. まず、ホームディレクトリに「airflow」フォルダがあるはずです。その中に「dags」という新しいディレクトリを作成します。 ここに Python ファイルを保存すると、UI 上で Airflow DAG として表示されます。
  2. 次に、新しい Python ファイルを作成し、okta_hook.py という名前を付けます。このファイルに以下のコードを挿入してください:
    	import time
    	from datetime import datetime
    	from airflow.decorators import dag, task
    	from airflow.providers.jdbc.hooks.jdbc import JdbcHook
    	import pandas as pd
    
    	# DAG を宣言
    	@dag(dag_id="okta_hook", schedule_interval="0 10 * * *", start_date=datetime(2022,2,15), catchup=False, tags=['load_csv'])
    
    	# DAG 関数を定義
    	def extract_and_load():
    	# タスクを定義
    		@task()
    		def jdbc_extract():
    			try:
    				hook = JdbcHook(jdbc_conn_id="jdbc")
    				sql = """ select * from Account """
    				df = hook.get_pandas_df(sql)
    				df.to_csv("/{some_file_path}/{name_of_csv}.csv",header=False, index=False, quoting=1)
    				# print(df.head())
    				print(df)
    				tbl_dict = df.to_dict('dict')
    				return tbl_dict
    			except Exception as e:
    				print("Data extract error: " + str(e))
    
    		jdbc_extract()
    
    	sf_extract_and_load = extract_and_load()
    
  3. このファイルを保存し、Airflow インスタンスを更新します。DAG のリストに「okta_hook」という新しい DAG が表示されるはずです。
  4. この DAG をクリックし、次の画面で一時停止スイッチをクリックして青色にオンにします。次に、トリガー(再生)ボタンをクリックして DAG を実行します。これにより、okta_hook.py ファイル内の SQL クエリが実行され、コード内で指定したファイルパスに CSV として結果がエクスポートされます。
  5. 新しい DAG をトリガーした後、Downloads フォルダ(または Python スクリプト内で指定した場所)を確認すると、CSV ファイルが作成されていることがわかります。この例では account.csv です。
  6. CSV ファイルを開くと、Apache Airflow によって Okta のデータ が CSV 形式で利用可能になっていることを確認できます。

詳細情報と無料トライアル

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

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

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

 ダウンロード

詳細:

Okta Icon Okta JDBC Driver お問い合わせ

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