LoginSignup
13
1

More than 1 year has passed since last update.

Workload Identity連携でAWSからBigQueryにアクセスする

Last updated at Posted at 2022-12-04

LIFULLのYstgです。3ペダルMT車至上主義です。愛車は15年式デミオ(ディーゼル)です。

はじめに

この記事はLIFULL Advent Calendar 2022の5日目の記事です。
GoogleCloud の Workload Identity 連携を使ってEC2インスタンスからBigQueryに接続してみました。
EC2インスタンスからサービスアカウントキーによる認証で GoogleCloud に接続している人は参考になるかもしれません。

Workload Identity 連携とは

Google Cloudのドキュメントには下記のように書かれています。

外部ワークロードのためのID連携を使用することで、サービスアカウントキーを使用せずに、Google Cloudリソースへのアクセス権を、オンプレミスまたはマルチクラウドのワークロードに付与できます。
Workload Identity 連携より引用)

文章で読んでもなんだかわかりにくいと思うので、図で。

従来のサービスアカウントキーによる認証

図のようにGoogleのIAMで設定したサービスアカウントの認証キーを用いて認証をする必要があり、また、サービスアカウントには強力な認可が与えられているため、漏出した時のリスクが大きいため、認証キー(図中の赤いファイル)の管理は厳重に行う必要がありました。
before.png

Workload Identity 連携 による認証

下記のような手順に変わります。(実際は3の部分はgcloud auth loginコマンド実行で行われ、4の認証はbqコマンド実行時に毎回行われます)

  1. AWSのIAM Role をWorkload Identity Pool上でサービスアカウントに紐づけておく。
  2. 紐付けの設定ファイル(clientLibraryConfig.json)が得られるのでこちらをBigQueryにアクセスさせたいEC2上においておく
  3. 設定ファイルを用いて認証を行うと有効期間の短いアクセストークンが得られる
  4. 有効期限の短いアクセストークンを用いて認証するとサービスアカウントと同等の認可が得られる

紐付けの設定ファイルには機密情報は記述されていないため、github上での管理やAMIへの保存も可能です。万が一漏出してもAWS側の認証が通らなければサービスアカウントとしてBigQueryや他のGoogleCloudサービスに不正にアクセスされることはありません。

after.png

具体的な手順などは 参考とさせてもらった記事 などに詳しいです。

サービスアカウントの認証情報を利用せずにサービスアカウントの権限をAWSのRoleに委譲できるので大変便利です。

なお、gcloud sdk のバージョンが古いと利用できないので注意してください。

参考資料

Workload Identity連携でAWS(EC2/ECS/EKS)からサービスアカウントキーなしでBigQueryにアクセスする

13
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
1