0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

gcloudでGAEをデプロイする際にservice accountに本当に必要な権限

Posted at

執筆時点で、日本語・英語・公式ドキュメント・各種Q&Aサイトどこにもまとまっていない、あるいは間違っているのでまとめました。

素朴に「AppEngineデプロイ担当者(roles/appengine.deployer)」を渡す

権限が全く不足しています。
なんでこんな命名にしたんだ。

公式ドキュメント

こちらによると、
image.png

  • AppEngineデプロイ担当者(roles/appengine.deployer)
  • サービスアカウントユーザー(roles/iam.serviceAccountUser)
  • Computeストレージ管理者(roles/compute.storageAdmin)
  • Cloud Build編集者(roles/cloudbuild.builds.editor)

があれば、gcloudからでも、新しいバージョンをデプロイできそうですね。
ですが、公式ドキュメントも誤っています。

StackOverFlowのある回答

  • storage.objects.listが必要なため、「Cloud Build編集者(roles/cloudbuild.builds.editor)」では不十分であり、「Cloud Buildサービスアカウント(roles/cloudbuild.builds.builder)」が必要
  • デプロイ後、トラフィック分割の権限が必要なため、「App Engine サービス管理者(roles/appengine.serviceAdmin)」が必要

とのことですね。

ただし、こちらの回答では時期が2020年1月なためか、「サービスアカウントユーザー(roles/iam.serviceAccountUser)」についての記載が不足しています。

加えて、Cloud Memorystore等を使用する場合

GAEからVPCネットワークを利用してCloud Memorystore等にアクセスする場合、「サーバーレスVPCアクセスユーザー(roles/vpcaccess.user)」が必要になります。

結論

常に必要

  • AppEngineデプロイ担当者(roles/appengine.deployer)
  • App Engine サービス管理者(roles/appengine.serviceAdmin)
  • サービスアカウントユーザー(roles/iam.serviceAccountUser)
  • Computeストレージ管理者(roles/compute.storageAdmin)
  • Cloud Buildサービスアカウント(roles/cloudbuild.builds.builder)

optional

  • サーバーレスVPCアクセスユーザー(roles/vpcaccess.user)

以上です。
こちらで執筆時点では問題なくデプロイできましたが、自分もGCPに不慣れなため、過不足等ございましたら指摘いただけますと助かります。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?