GCPのサービスアカウントについて

はじめに

GCP使ってアプリ開発をしていて、サービスアカウントのJSONファイルを環境変数に設定することがあるが、割と雰囲気で使っているのできちんと理解したくなった。さらに元をたどって、Cloud IAMも合わせて理解しようと思う。

Cloud IAMとは

Cloud Identity and Access Management (Cloud IAM) とは、下記のようなIAMポリシーを定めて管理するもの。

「誰が(メンバー)」 - Google アカウント:個人のメールアドレスに紐付いたアカウント。 - サービスアカウント:アプリケーションに付随するアカウント。 - Google グループ:Googleアカウントやサービスアカウントのグループ。まとめてポリシーを変更できるので管理が楽になる。 - GSuite ドメイン:組織全体は同じドメインであるなら、その中を一つの仮想グループにして管理しよう、という話。 - Cloud Identity :GSuiteと似ているが、GSuiteの機能にはアクセスできない。

「何に(リソース)」 - GCPプロジェクト - Compute Engine インスタンス - Cloud Storage バケット など

「何ができるか」 - Read only/wirteなど

サービスアカウント

GoogleAPIを使うユーザーが、人に紐づくIDではなくて、サービスアカウントのIDであることを想定している場合に使うgoogleアカウント。 管理の方法は色々あるが、ひとまずIAM&admin->Service accountsで行っている。サービスアカウントを作成するとKEYが発行でき、JSON形式でダウンロードが可能。これをGOOGLE_APPLICATION_CREDENTIALSへ割り当てることであるサービスがGCPの他のサービスを使う際の権限を管理することになる。

参考