誤ってGCPのデフォルトサービスアカウントを削除してしまった場合の復元方法


サービスアカウントとは

GCPには各アカウントによって権限が割り当てられています。
そしてそれらはメールアドレスと紐付けられています。
そして、プロジェクトを作成すると自動的に「デフォルトサービスアカウント」というものが作成されます。

ここで厄介なのが、このデフォルトサービスアカウントは自分で簡単に削除することができるものの、他のサービスアカウントをデフォルトに変更することができません。

つまり、誤ってデフォルトのサービスアカウントを削除してしまった場合、すべてのGCPプロダクトからのアクセスがリジェクトされます。

解決法

$ gcloud beta コマンドを使ってサービスアカウントを復元します。
もし削除から30日以上立っていた場合は復元不可能ですので諦めて新しいプロジェクトを作成しましょう。

1. 削除したサービスアカウントのIDを探す

GCPログを見て削除時のログを探します

検索バーにtext:"DeleteServiceAccount"とか打つとすぐ出てくるかも。
出てきたログからIDを捕まえます。

2. betaコンポーネントを追加する

$ gloud components install beta
$ gloud components update

3. 復元

$ gloud beta iam service-accounts undelete <アカウントID>

参考