UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【GCP Secrets Manager】AppEngine Deploy

Spring Cloud GCP で Secret Manager に登録した秘密情報をアプリケーションの設定値として設定できるようにした

uga-box.hatenablog.com

ただ、このアプリケーションをこれまで通りローカルでmvn appengine:deployでAppEngineにデプロイしようとしたら以下のエラーが出てしまった

[INFO] GCLOUD: ***************************
[INFO] GCLOUD: APPLICATION FAILED TO START
[INFO] GCLOUD: ***************************
[INFO] GCLOUD: 
[INFO] GCLOUD: Description:
[INFO] GCLOUD: 
[INFO] GCLOUD: Failed to bind properties under 'my-project.auth.key' to java.lang.String:
[INFO] GCLOUD: 
[INFO] GCLOUD:     Property: staylist.homestay.auth.key
[INFO] GCLOUD:     Value: ${sm://projects/my-project/secrets/auth-key}
[INFO] GCLOUD:     Origin: class path resource [application.yml]:146:12
[INFO] GCLOUD:     Reason: PERMISSION_DENIED: Permission 'secretmanager.versions.access' denied for resource 'projects/my-project/secrets/auth-key/versions/latest' (or it may not exist).
[INFO] GCLOUD: 
[INFO] GCLOUD: Action:
[INFO] GCLOUD: 
[INFO] GCLOUD: Update your application's configuration

明らかに権限不足といっているメッセージなのだが、自分のユーザアカウントのロールは「オーナー」でフル権限だったので、なぜ?と思ってしまった

必要だったのはAppEngine側にSecret Mangerの権限

AppEngineのサービスアカウントに以下の権限をつけたら解決した

  • secretmanager.viewer:秘密情報のバージョンなどのメタデータが表示できるが、編集したり、アクセスできない
  • secretmanager.secretAccessor:秘密情報にアクセスできるが、作成、編集ができない