こんにちは。CData Software Japan リードエンジニアの杉本です。
今日はCData Google BigQuery Driverに関するTipsをお届けします。
https://www.cdata.com/jp/drivers/bigquery/
CData Google BigQuery Driverはデフォルトで OAuthの認証プロセスを利用しますが、ケースによってはブラウザログインを使用したく無い場合があります。
その際にはサービスアカウントを用いた認証がオススメです。サービスアカウントを用いた認証ではサイレントな認証となり、ブラウザが立ち上がるなどの挙動が発生しないので、バッチ処理などで扱いやすいアプローチになります。
ただ、慣れていないとこのサービスアカウントの準備はちょっと面倒です。そこで今回の記事ではGCP管理画面でのサービスアカウントの作成方法からCData Driverで接続するまでの手順を紹介したいと思います。
なお、以下のリファレンスでも詳しい内容が書かれています。
http://cdn.cdata.com/help/DBE/jp/jdbc/pg_oauthcustomappcreate.htm
必要なもの
サービスアカウントの作成
それではサービスアカウントの作成を行います。なお、画面は2020年6月時点のものになります。GCPのUIは結構頻繁に変わるので注意しましょう。
まず、GCPコンソールにログインし「IAMと管理」から「サービスアカウント」へ移動します。
画面上部にある「+サービスアカウントを作成」をクリックし
サービスアカウントの名前、サービスアカウントメールアドレスを決定します。
次にこのサービスアカウントに付与するロールを決定します。
今回はBigQueryにアクセスするのでBigQuery用のロールが必要となります。下の画像では最上位のBigQuery管理者アカウントを指定していますが、ユースケースに合わせてロールを変更してください。
あとは、「完了」をクリックすれば、必要なサービスアカウントが作成できます。
秘密鍵の取得
続いて、サービスアカウントを用いた認証を行うためのキーを生成します。
サービスアカウントの一覧から先程作成したサービスアカウントのメニューを表示し「鍵を作成」をクリックします。
秘密鍵の生成画面が出てくるので、任意のキータイプを選択します。JSONでも使用できますが、今回はファイルそのままでアクセスが可能なP12を選択します。
作成をクリックすると、P12ファイルがダウンロードされます。このファイルを任意のフォルダに配置しておきます。
また、秘密鍵作成後、秘密鍵のパスワードが表示されるので、忘れずに控えておきましょう。
以上で、GCPサービスアカウント側の準備は完了です。
CData Driverでサービスアカウント認証を行う
それでは、サービスアカウントを用いて、CData Driverの認証を行ってみましょう。
今回は以下のPojectとDataSetにアクセスする想定で行います。
接続に使用するドライバーはCData ODBC Driverを例にしていますが、どのテクノロジーのドライバーでも同様の値で接続できます。
ODBCデータソースアドミニストレータツールを立ち上げて、BigQueryのDSNの編集画面を表示します。
接続構成画面が表示されるので、取得した情報を元に下記のように設定を行います。
なお以下の値は前の手順で作成したサービスアカウントを元にした設定例です。わかりやすいように実際の値を例として記載していますが、みなさんの環境に合わせてそれぞれ変更してください。
- InitiateOAuth=GETANDREFRESH;:GETANDREFRESH固定です。
- ProjectId=meta-coyote-270802;:接続先のProjectIdを指定します。
- DatasetId=sample;:接続先のDatasetIdを指定します。
- OAuthJWTCertType=PFXFILE;:P12ファイルの場合はPFXFILEを指定します。
- OAuthJWTCertPassword=notasecret;:予め取得した秘密鍵パスワードを指定します。
- OAuthJWTCertSubject=*;:固定でアスタリスクを指定します。
- OAuthJWTIssuer=cdatabigquery@meta-coyote-270802.iam.gserviceaccount.com;:作成したサービスアカウントのメールアドレスを指定します。
- OAuthJWTCert=C:\Work\GCP\meta-coyote-270802-624e630ed310.p12;:取得したP12ファイルのファイルパスを指定します。
これで、接続テストが通ればサービスアカウントによる認証は成功です。
あとは、PowerBIなどお好みなツールでアクセスできます。
CDataSyncやAPI Serverで使用する場合
このサービスアカウントによる認証は CDataSync や API Server でも同様に行えます。
以下のようにBigQueryの接続設定画面に移動し、まずDataSetIdとProjectIdを指定します。その後、Advancedタブに移動し
先程のODBCと同様にJWT OAuthの必要な情報をそれぞれ入力します。
あとは「接続」ボタンをクリックして、成功すればOKです。
おわりに
サービスアカウントははじめ作成するのがちょっと敷居を高く感じるかもしれませんが、そこまで手順は複雑ではありません。
是非試してみてください。