4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NI+C Advent Calendar 2021

Day 7

サービスアカウントを借用で使う

Last updated at Posted at 2021-12-06

GCPでサービスアカウントの権限を用いてgcloudコマンドやgsutilコマンドをローカルマシン等から実行する際、どうやっていますか?

よくあるサービスアカウントの使い方

サービスアカウントキーを用いて認証するという方法がよく用いられています。

手順1.作成済みサービスアカウントのキーを作成しダウンロード

gcloud iam service-accounts keys create key.json --iam-account=sa-hoge@PROJECT_ID.iam.gserviceaccount.com

手順2.ローカルの実行環境でGOOGLE_APPLICATION_CREDENTIALS環境変数の設定(ダウンロードしたキーのパス指定)

# Linux
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/key.json"

# Windows
set GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/key.json"

手順3.コマンドの実行

gcloud hogehoge

サービスアカウントキー取扱注意

一見簡単な方法ではありますが、サービスアカウントキーをダウンロードするというのはリスクを伴います。

ローカル端末にキーをダウンロードしますので、その管理が個人に依存することになります。
誤ってgitリポジトリにキーファイルを上げてしまったりなどすると、それを取得した第三者からリソースにアクセスされてしまうという事故が起こりえます。

公式ドキュメントでも、サービスアカウントに与える権限を最小限にすることや、gitへのコミットが行われないように設定するなどといった対応が言及されていますが、キーの流出を根本的に解消するものではありません。

サービスアカウントの借用

借用とは、一時的に特定のサービスアカウントに成りすましてコマンドを実行することです。この方法を使うことで、上記の手順のようにGOOGLE_APPLICATION_CREDENTIALSを指定する必要がなく、そもそもサービスアカウントキーを作成すること自体が不要になります。

手順1.ロールの設定

サービス エージェントにサービス アカウント トークン作成者のロール(roles/iam.serviceAccountTokenCreator)を付与します。
以下のコマンドで、gcloudコマンドを実行するユーザー( my-email@email.com )が、サービスアカウント(sa-hoge@PROJECT_ID.iam.gserviceaccount.com )のトークンを作成できるようになります。

gcloud iam service-accounts add-iam-policy-binding \
    sa-hoge@PROJECT_ID.iam.gserviceaccount.com \
    --member='user:my-email@email.com' \
    --role=roles/iam.serviceAccountTokenCreator

手順2.コマンドの実行

コマンドに --impersonate-service-accountを付けるだけでOKです。

gcloud hogehoge --impersonate-service-account=sa-hoge@PROJECT_ID.iam.gserviceaccount.com

まとめ

鍵などの機密情報がうっかり漏れてしまった、というのはGCPに限らず耳にする話かと思います。
そういったことが起きないように検討する様々な方法も、「そもそも鍵を作らない」に勝ることはないでしょう。
「うっかり」や「万が一」を起こさないためにも、使ってみることをお勧めします。

参考

クラウドサービスとして認証する | Cloud IAM のドキュメント | Google Cloud
サービス アカウントの権限借用の管理 | Cloud IAM のドキュメント | Google Cloud

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?