コンテンツに移動
Google Cloud

3 つのユース ケースで学ぶ GCP のサービス アカウント

2019年5月16日
Google Cloud Japan Team

※この投稿は米国時間 2019 年 4 月 10 日に Google Cloud blog に投稿されたものの抄訳です。

Google Cloud Platform(GCP)上でアプリケーションを構築している方であれば、サービス アカウントのことはよくご存じでしょう。これはアプリケーションか仮想マシン(VM)に属する特殊な Google アカウントで、ID として、もしくはリソースとして扱うことができます。サービス アカウントでは、管理方法やリソースへのアクセス権限の付与方法がユース ケースによって異なります。この投稿ではサービス アカウントの一般的なユース ケースをいくつか取り上げますので、サービス アカウント管理の適切な運用モデルを決定するうえで参考にしていただきたいと思います。

ユース ケース 1 : GCP リソースにアクセスするウェブ アプリケーション

https://storage.googleapis.com/gweb-cloudblog-publish/images/Web_application_accessing_GCP_resourcesqm0.max-1100x1100.PNG

ユーザーが Cloud Identity-Aware Proxy(IAP)から認証を受けてウェブ アプリケーションにアクセスしているとします。GCP リソースを利用するウェブ アプリケーションにアクセスできるユーザーの場合は、GCP リソースに対する直接的なアクセス権限を持つ必要はありません。こうしたウェブ アプリケーションは、Cloud Datastore といった GCP サービスへのアクセス権限を、サービス アカウントを使って獲得します。この場合、サービス アカウントはウェブ アプリケーションと一対一で対応します。つまり、サービス アカウントはウェブ アプリケーションの ID なのです。最初に、ウェブ アプリケーションをホスティングする GCP プロジェクトでサービス アカウントを作成します。次に、GCP リソースへのアクセスに必要な権限を、そのサービス アカウントに付与します。そして最後に、サービス アカウントの認証情報を使用するようにウェブ アプリケーションを設定します。

ユース ケース 2 : 複数のコスト センターに対する BigQuery 使用料の請求

https://storage.googleapis.com/gweb-cloudblog-publish/images/Cross-charging_BigQuery_usage_to_different_c.max-700x700.PNG

このシナリオでは、部門のユーザーはカスタムビルドのアプリケーションを使用して、BigQuery の共有データセットにクエリを送ります。このとき、クエリによって発生する料金は、ユーザーが所属するコスト センターに請求する必要があるため、VM 上で実行されるアプリケーションに対しては、BigQuery データセットへのクエリ発行権限を有するサービス アカウントが与えられます。

プロジェクトで使用されるリソースが請求書に反映されるようにするため、各部門の一連のプロジェクトにはラベルを付与します。また各部門は、部門に割り当てられたプロジェクトからアプリケーションを実行する必要があります。これにより、BigQuery に対するクエリ料金が、その部門に適切に請求されるようになります。

クエリを発行する各部門のプロジェクトにこのシナリオを適用するには、BigQuery データセットへのクエリ発行に必要な IAM 権限を、アプリケーションのサービス アカウントに割り当てます。

このシナリオによる権限設定の詳細はこちらをご覧ください。

ユース ケース 3 : 運用、管理作業で使われるサービス アカウントの管理

GCP 環境の管理を担当するシステム管理者やオペレーターであれば、環境のプロビジョニングや監査などの共通操作を GCP 環境全体にわたって一元管理したいと考えるでしょう。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Managing_service_accounts_used_for_operati.max-1000x1000.PNG

この場合、さまざまなタスクを実行できるようにするため、適切な権限を持つサービス アカウントを複数作る必要があります。これらのサービス アカウントは、上位の特権を持ち、階層内の適切なレベルで権限を付与されているはずです。そして、他のサービス アカウントと同様に、権限のないユーザーに情報が漏れることのないよう、ベスト プラクティスに従う必要があります。たとえば、こういった運用のためにサービス アカウントを作成したプロジェクトでは、サービス アカウントが誤って削除されないようにするため、プロジェクト リーエンを追加すべきです。

サービス アカウントの奥の深さ

上記のユース ケースからおわかりいただけるように、1 つのモデルではすべてのケースに対応しきれないので、ユース ケースに応じて運用モデルを選ぶ必要があります。今回は 3 つのユース ケースを紹介しましたが、サービス アカウントを論理的にどこに配置すべきかを検討するうえで参考になれば幸いです。サービス アカウントの詳細については、次のチュートリアルのどれかをお試しいただき、選択した GCP コンピューティング サービスのもとでサービス アカウントの認証情報をどのように使用するべきかを学んでください。

- By Grace Mollison, Cloud Solutions Architect

投稿先