Google Cloud4 択難易度 応用

状況

Cloud Run のサービスが同じプロジェクトのバケットを読むと 403。本文は「123456-compute@developer.gserviceaccount.com does not have storage.objects.get access to …」。専用のサービスアカウント app-sa を作り、バケットに閲覧ロールを付けたつもりでいる。

調べる順番として最も適切なものは?

  1. A実行アカウントにプロジェクトの編集者(Editor)を付ける
  2. Bその主体に効く IAM の拒否ポリシーがないか
  3. Cエラー本文の主体が、想定のサービスアカウントか
  4. Dその主体にバケットの閲覧ロールが付いているか

正答

  1. A → C → D → B
  2. C → D → B → A
  3. D → B → A → C
  4. B → D → C → A

解説

Permission denied の切り分けは「誰が」「どの権限を」「どのリソースに」の順に見る。本文の主体は 123456-compute@developer…、つまり Compute Engine の既定のサービスアカウントで、作ったはずの app-sa ではない。デプロイ時にサービスアカウントを指定し忘れると既定のものが使われるので、まずここを確かめる(C)。主体が正しければ、その主体にバケットの閲覧ロールが付いているか(D)。許可があるのに拒否されるなら、拒否ポリシー(B)を疑う。プロジェクトの編集者(A)を付ければ動くが、既定のサービスアカウントにほぼ全権限を渡すことになり、それを使う他のサービスまで強い権限を持つ。原因が分かれば不要な変更なので最後。

参考: docs.cloud.google.com

iamservice-accountpermission-deniedtroubleshooting

この問題を含む Google Cloud のテストを制限時間つきで解く

Google Cloudクイズへ