Embulk を使用して Okta ののデータをデータベースにロードする方法

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
CData JDBC Driver とオープンソースのETL/ELT ツールであるEmbulk を使ってOkta のデータをデータベースにロードする方法を解説します。

Embulk はオープンソースのバルクデータローダーです。CData JDBC Driver for Okta と組み合わせることで、Okta から任意の同期先にデータを簡単にロードできます。この記事では、CData JDBC Driver for Okta をEmbulk で使用してOkta のデータをMySQL データベースにロードする方法を解説します。

CData JDBC Driver は、最適化されたデータ処理機能を内蔵しており、リアルタイムのOkta のデータに対して比類のないパフォーマンスを発揮します。Okta に対して複雑なSQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされているSQL 操作を直接Okta にプッシュし、サポートされていない操作(SQL 関数やJOIN 操作など)は組み込みのSQL エンジンを使用してクライアント側で処理します。

Okta への JDBC 接続を設定

Embulk でバルクロードジョブを作成する前に、JDBC Driver のJAR ファイルのインストール場所(通常はC:\Program Files\CData\CData JDBC Driver for Okta\lib)を確認しておきます。

Embulk はJDBC 接続をサポートしているため、Okta に簡単に接続してSQL クエリを実行できます。バルクロードジョブを作成する前に、Okta への認証用のJDBC URL を作成します。

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 URL の作成には、Okta JDBC Driver に組み込まれている接続文字列デザイナーを使用できます。JAR ファイルをダブルクリックするか、コマンドラインからJAR ファイルを実行します。

java -jar cdata.jdbc.okta.jar

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

以下は、Okta への一般的なJDBC 接続文字列です。

jdbc:okta:Domain=dev-44876464.okta.com;

Embulk で Okta ののデータをロード

CData JDBC Driver をインストールしてJDBC 接続文字列を作成したら、必要なEmbulk プラグインをインストールします。

Embulk の入力・出力プラグインをインストール

  1. Embulk にJDBC 入力プラグインをインストールします。
    https://github.com/embulk/embulk-input-jdbc/tree/master/embulk-input-jdbc
  2. embulk gem install embulk-input-jdbc
    
  3. この記事では、同期先データベースとしてMySQL を使用します。出力プラグインを使用して、SQL Server、PostgreSQL、またはGoogle BigQuery を同期先として選択することもできます。
    https://github.com/embulk/embulk-output-jdbc/tree/master/embulk-output-mysql
    embulk gem install embulk-output-mysql
    

入力プラグインと出力プラグインをインストールしたら、Embulk を使用してOkta のデータをMySQL にロードする準備が整いました。

Okta ののデータをロードするジョブを作成

まず、Embulk で設定ファイルを作成します。ファイル名はokta-mysql.yml のようにします。

  1. 入力プラグインのオプションには、CData JDBC Driver for Okta、ドライバーJAR ファイルへのパス、ドライバークラス(例:cdata.jdbc.okta.OktaDriver)、および上記のJDBC URL を指定します。
  2. 出力プラグインのオプションには、MySQL データベースの値と認証情報を指定します。

設定ファイルのサンプル(okta-mysql.yml)

in:
	type: jdbc
	driver_path: C:\Program Files\CData[product_name] 20xx\lib\cdata.jdbc.okta.jar
	driver_class: cdata.jdbc.okta.OktaDriver
	url: jdbc:okta:Domain=dev-44876464.okta.com;
	table: "Users"
out:
	type: mysql
	host: localhost
	database: DatabaseName
	user: UserId
	password: UserPassword
	table: "Users"
	mode: insert

ファイルを作成したら、Embulk ジョブを実行します。

embulk run okta-mysql.yml

Embulk ジョブを実行すると、MySQL テーブルにOkta のデータが格納されます。

フィルタリングした Okta ののデータをロード

テーブルから直接データをロードするだけでなく、カスタムSQL クエリを使用してロードするデータをより詳細に制御できます。また、クエリフィールドのSQL WHERE 句で最終更新カラムを設定することで、増分ロードを実行することもできます。

in:
	type: jdbc
	driver_path: C:\Program Files\CData[product_name] 20xx\lib\cdata.jdbc.okta.jar
	driver_class: cdata.jdbc.okta.OktaDriver
	url: jdbc:okta:Domain=dev-44876464.okta.com;
	query: "SELECT Id, ProfileFirstName FROM Users WHERE [RecordId] = 1"
out:
	type: mysql
	host: localhost
	database: DatabaseName
	user: UserId
	password: UserPassword
	table: "Users"
	mode: insert

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

CData JDBC Driver for Okta をコネクタとして使用することで、Embulk のデータロードジョブにOkta のデータを統合できます。また、200 を超えるエンタープライズデータソース向けドライバーにより、あらゆるエンタープライズSaaS、ビッグデータ、NoSQL ソースも統合できます。30日間の無料トライアルをダウンロードして、今すぐお試しください。

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

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

 ダウンロード

詳細:

Okta Icon Okta JDBC Driver お問い合わせ

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