Google Cloud のサービスアカウントの役割とコンソールでの作成方法を解説
はじめに
はじめまして、クラウドエース株式会社の金井です。
新卒として、2024年4月にクラウドエースに入社しました。
今回、初学者向け記事を書いてみようという社内企画として Google Cloud のサービスアカウントについて書かせていただきます。
「サービスアカウントって何?」「何のためにあるの?」という疑問を解決できればと思います。
そもそもサービスアカウントとは
まずは公式ドキュメントを読んでみましょう。
サービス アカウントは、ユーザーではなく、アプリケーションや Compute Engine インスタンスなどのコンピューティング ワークロードで通常使用される特別なアカウントです。サービス アカウントは、アカウント固有のメールアドレスで識別されます。
アプリケーションはサービス アカウントを使用して、認可された API 呼び出しを行います。これは、サービス アカウント自体として認証されるか、ドメイン全体の委任により Google Workspace または Cloud Identity ユーザーとして認証されます。アプリケーションがサービス アカウントとして認証されると、アプリケーションはサービス アカウントにアクセス権が付与されているすべてのリソースにアクセスできます。
なんだか難しい単語がたくさん出てきて混乱しそうですが、一つずつ見ていきます。
サービスアカウント
サービスアカウントは通常のユーザーアカウント、つまり人間が使うアカウントではありません。
誰が使うのかというとアプリケーションやCompute Engineインスタンスなどです。
人間が使うアカウントであるユーザーアカウントと機械が使うアカウントを区別するためにサービスアカウントを用意しています。
サービスアカウントの種類についても説明します。
デフォルトの サービスアカウント |
ユーザー管理 サービスアカウント |
Googleマネージド サービスアカウント |
|
---|---|---|---|
説明 | 自動的に作成されるサービスアカウント | プロジェクト内に利用者が自ら作成するサービス アカウント | Google Cloud サービスが使用するサービスアカウント |
デフォルトでIAMの コンソールに表示 |
される | される | されない |
API
サービスアカウントはアプリケーションに使われて何をしてくれるの?というとAPIの呼び出すための認証と認可を行っています。具体的には、サービスアカウントを使用してトークンを発行し、そのトークンを用いてAPIにアクセスすることで、アプリケーションが必要な操作を実行できるようにします。
APIについて書くとそれだけで記事になってしまいますので、一言でいうと「アプリケーションやサービスが他のアプリケーションやサービスと通信し、機能やデータを利用するためのインターフェース」です。X(Twitter) やLINEなどで API を聞きなれている人も多いかと思います。要はサービスアカウントがあれば他のインスタンスやApp Engine アプリケーションの操作ができる、ということです。
先ほど例に挙げた X(Twitter) では、 BOT アカウントの運用時などに使われたりします。
Google Cloud においては API を利用する必要がある場合が非常に多いです。例えば Compute Engineの仮想マシン(VM) を利用する場合には「Compute Engine API」を有効にしなければいけません。
サービスアカウントの作り方
では実際にサービスアカウントを作成してみましょう。
今回は Google Cloud コンソールから作成する方法をご紹介します。
下準備
まずは Google Cloud コンソール画面にアクセスします。
この画面の検索窓に今回作成したい「サービスアカウント」を入力すれば簡単に見つかります。早速コンソールから作ってみましょう。
サービスアカウントの項目を選択
サービスアカウント一覧
VMインスタンスを作成したときに自動で作られているサービスアカウントが存在している
作っていないはずのサービスアカウントが既に1つありますね。
「サービスアカウントがあるので新規で作成する必要はないのでは?」
と考えてしまいそうですがそうはいきません。公式ドキュメントによると
デフォルトのサービス アカウント: 特定の Google Cloud サービスを有効にするときに自動的に作成される、ユーザー管理のサービス アカウント。これらのサービス アカウントは、ユーザーの責任で管理する必要があります。
という説明があります。ユーザーが管理すれば大丈夫、とはなかなかいかないようです。
さらに、後述する権限の問題で、このデフォルトのサービスアカウントを使うことは推奨されていません。デフォルトのサービスアカウント以外を使うためにも作成してみましょう。
新規サービスアカウントの作成
サービスアカウントの作成にはまず、「サービスアカウント名」「サービスアカウント ID」を決めます。サービスアカウント名は自身が見分けをつけるための表示名です。一方でサービスアカウント ID は1つしか存在しない ID です。今後はこの ID によってサービスアカウントを指定していきます。
さて、次に進んでみましょう。
アクセス権(権限)付与
ここではサービスアカウントへアクセス権を付与していきます。権限の中にはオーナーというものがあり、これをつければ完全アクセス権を与えられるので簡単に設定終了です...というわけにはいきません。
サイバーセキュリティの概念として、「最小権限の原則」というものがあります。これはユーザーが業務に必要な情報やシステムへの十分なネットワークアクセス(ユーザー権限)が与える必要があり、同時にそれ以上は与えてはいけないという原則となります。
つまり「余計な権限をつけてはいけない」ということです。
デフォルトのサービスアカウントを使わないことが推奨されているのも、アクセス権が編集者ロールが付与されているためです。
そのくらいアクセス権というものには慎重になる必要があります。余計な権限を付与していると、不正アクセスを受けた場合、大きな被害をもたらす可能性があります。
付与する権限には十分注意して、権限を付与していきましょう。
最後にどのユーザーアカウントに、このサービスアカウントを使用してジョブと VM をデプロイする権限(サービスアカウントユーザーロール)とこのサービスアカウントを管理する権限(サービスアカウント管理者ロール)を付与するかを決めて、サービスアカウントの作成が完了します。お疲れさまでした。
省略可能ではありますが、設定しておくことを推奨
新しいユーザー管理のサービスアカウントが作成された
まとめ
サービスアカウントがどのようなものか、どのように作成するのかを説明しました。
今回紹介したコンソール以外にも Google Cloud CLI を用いたコードでの作成も可能です。
権限やアクセス許可など、難しい部分も多い内容ですが、初心者の皆さんの助けになれば幸いです。
Discussion