CData Software Blog

クラウド連携のCData Software の技術ブログです。

CData Driver・CDataSync BigQuery が サービスアカウント認証のJSONファイルフォーマットをサポート

こんにちは。CData Software Japanリードエンジニアの杉本です。

V20 の少し前のビルドからなのですが、CData Driver・CDataSync で提供しているBigQuery Driver・コネクタがサービスアカウント認証を行う場合のファイルフォーマットとしてJSON形式を正式にサポートしました!

f:id:sugimomoto:20201210193128p:plain

以前まではP12ファイルフォーマットを利用するか

www.cdatablog.jp

もしくはちょっと遠回りな方法でJSONファイルによる認証はサポートしていたのですが

www.cdatablog.jp

P12フォーマットが非推奨になったこともあり、今回正式に切り替わりまして、リリースとなりました。

特に使い方が難しいわけではありませんが、設定するための新しいプロパティも追加されたので、改めてこの記事でJSONファイルベースのサービスアカウント認証を解説したいと思います。

必要なもの

  • GCPアカウント
  • CData BigQuery Driver(ODBCを例にしていますが、JDBCADO.NETでも大丈夫です。)

サービスアカウントの作成

それではサービスアカウントの作成を行います。なお、画面は2020年12月時点のものになります。GCPのUIは結構頻繁に変わるので注意しましょう。

まず、GCPコンソールにログインし「IAMと管理」から「サービスアカウント」へ移動します。

f:id:sugimomoto:20201210193136p:plain

画面上部にある「+サービスアカウントを作成」をクリックし

f:id:sugimomoto:20201210193141p:plain

サービスアカウントの名前、サービスアカウントメールアドレスを決定します。

f:id:sugimomoto:20201210193147p:plain

次にこのサービスアカウントに付与するロールを決定します。

今回はBigQueryにアクセスするのでBigQuery用のロールが必要となります。下の画像では最上位のBigQuery管理者アカウントを指定していますが、ユースケースに合わせてロールを変更してください。

f:id:sugimomoto:20201210193152p:plain

あとは、「完了」をクリックすれば、必要なサービスアカウントが作成できます。

f:id:sugimomoto:20201210193158p:plain

秘密鍵の取得

続いて、サービスアカウントを用いた認証を行うためのキーを生成します。

サービスアカウントの一覧から先程作成したサービスアカウントのメニューを表示し「鍵を作成」をクリックします。

f:id:sugimomoto:20201210193205p:plain

秘密鍵の生成画面が出てくるので、任意のキータイプを選択します。ここで今回は「JSON」のキータイプを選択します。

f:id:sugimomoto:20201210193211p:plain

作成をクリックすると、秘密鍵が保存されます。

f:id:sugimomoto:20201210193216p:plain

以上で、GCPサービスアカウント側の準備は完了です。

CData Driverでサービスアカウント認証を行う

それでは、サービスアカウントを用いて、CData Driverの認証を行ってみましょう。

今回は以下のPojectとDataSetにアクセスする想定で行います。

f:id:sugimomoto:20201210193413p:plain

接続に使用するドライバーはCData ODBC Driverを例にしていますが、どのテクノロジーのドライバーでも同様の値で接続できます。

ODBCデータソースアドミニストレータツールを立ち上げて、BigQueryのDSNの編集画面を表示します。

接続構成画面が表示されるので、取得した情報を元に下記のように設定を行います。

なお以下の値は前の手順で作成したサービスアカウントを元にした設定例です。わかりやすいように実際の値を例として記載していますが、みなさんの環境に合わせてそれぞれ変更してください。

プロパティ名 備考
Auth Scheme OAuthJWT サービスアカウントで認証するためOAuthJWTを指定します。
InitiateOAuth GETANDREFRESH GETANDREFRESH固定です。ODBCの場合は表示されませんので、入力不要です。
ProjectId banded-shade-192211 接続先のProjectIdを指定します。
DatasetId SampleDataset 接続先のDatasetIdを指定します。
OAuthJWTCertType GOOGLEJSON 秘密鍵JSONなので、GOOGLEJSONを指定します。
OAuthJWTCertSubject * 固定でアスタリスクを指定します。
OAuthJWTIssuer sampleserviceaccount@banded-shade-192211.iam.gserviceaccount.com 作成したサービスアカウントのメールアドレスを指定します。
OAuthJWTCert C:\Work\GCP\banded-shade-192211-09d3e456b746.json; 取得したJSONファイルのファイルパスを指定します。

f:id:sugimomoto:20201210193624p:plain

これで、接続テストが通ればサービスアカウントによる認証は成功です。

あとは、Power BI などお好みなツールでアクセスできます。

おわりに

サービスアカウントははじめ作成するのがちょっと敷居を高く感じるかもしれませんが、そこまで手順は複雑ではありません。

是非試してみてください。