【GCP】VMのアクセススコープで混乱した話


私は今 Associate Cloud Engineer の資格取得を目指し勉強中なのですが、とある模擬試験問題で突如現れた「アクセススコープ」という、一見わかりやすそうな単語の意味がわからなくて困りました。いい機会だと思ったので自分なりの解釈を書き残すことにします。(初投稿)
もしも誤りを見つけてくださった方はご指摘いただけるとうれしいです。

想定読者

以下2点をご存知の方
 ・GCPの利用にはアカウントが必要であること
 ・アカウントは付与された権限の範囲内でサービスを利用することができること

VMの認証

VM上で稼働するアプリケーションは、他のサービス(Google Cloud API)と対話するとき、VMに紐付けられたサービスアカウントの認証情報を使用してやり取りを行います。

「ですよね。だから、もし Cloud Storage にファイルを保存するアプリケーションを Compute Engine に載せようと思ったら、Cloud Storage の保存権限を持っているサービスアカウントをVMに紐付けてやればOKですよね。」

と思ってたらちょっと違いました。その紐付けだけでは不十分。さらにアクセススコープの指定が必要なようです。ここで私は混乱してしまいました。こんな具合に。

「アクセス権のようだけど、それはサービスアカウントに付与してるし冗長じゃない?本当に必要??」

アクセススコープとは

Google Cloud のドキュメントにはこうあります。

アクセス スコープは、インスタンスの権限を指定するレガシーな方法です。アクセス スコープはセキュリティ メカニズムではなく、gcloud ツールまたはクライアント ライブラリからのリクエストで使用されるデフォルトの OAuth スコープを定義するものです。これは、gRPC や SignBlob API など、OAuth を介して認証を受けないリクエストには影響しないことに注意してください。

私の解釈

つまりこういうことだと解釈しました。

VMのアプリケーションから Google Cloud API を使うためには
サービスアカウントとVMの各々にアクセス権を与える必要があるのだ。

サービスアカウントにはIAMで。VMインスタンスにはアクセススコープを。

冗長じゃありませんでしたね。すっきりしました。
以上です!