【解決済】Cloud IAM でサービスエージェントから全権限を削除すると見えなくなる
Naofumi Yamada
Data Engineer#
ことの発端AutoML Tables のサービスエージェント権限を持つサービスアカウントで、大量に推論してたら、推論がエラーを吐くようになった。 BigQuery ジョブ一覧を除くと以下のようなジョブが大量に失敗していた。
後からわかったことだが、AutoML Tables の入出力に BigQuery を指定すると Storage インポートエクスポートを自動でやってくれるだけであった。そのため、1 日のエクスポート上限 11 TB 弱に引っかかってしまった(インポートは上限なし)。
話を戻そう。これを知らずに異常発生と思い、サービスエージェント service-*************@gcp-sa-******.iam.gserviceaccount.com
から全ての権限を剥奪した。
ゆっくり検証して、上記のように不正利用ではないことがわかって、サービスエージェントの権限を戻そうとした。
しかし、Cloud IAM のメンバーに service-*************@gcp-sa-******.iam.gserviceaccount.com
が見つからないのだ。
#
いろいろ調べるAPI を一度無効にして、有効化することで戻るらしいが、AutoML Tables のデータが飛ぶ可能性を考えると怖くて実施できなかった。
#
サポートに問い合わせるこんな時頼りになるのが Google Cloud Platform サポート。 事情を説明するとこんな回答がきた。
1.
を実行するも、以下のように、目新しい情報は見つからない。
UNIQUE_ID が分からないので、2.
は実行できなかった。
ただ、実行結果を見るに削除されていないと判断し、見えなくなっているだけと仮説をおいて復旧を試みた。
#
解決策Cloud IAM から、service-*************@gcp-sa-******.iam.gserviceaccount.com
に剥奪前と同等の権限を付与することで復旧した。
めでたいが、次回以降、曖昧な解決では困るので、サポートにもう一度連絡した。
#
権限のふられていないサービスアカウントを一覧する方法問い合わせたら、もう少し待ってときた。
今日、1 月 21 日(火)18 時に返信がきた。
重ねていうが、権限がついていないサービスアカウントを簡単に特定するコマンドはないということだ。 2 つのコマンドの差分を見て、特定、そのアカウントに元の権限を付与することで解決する。 元の権限が分からなければ、新規プロジェクトで API 有効化して Cloud IAM を見ればよい。
というわけで収束した。
#
まとめサービスエージェント service-*************@gcp-sa-******.iam.gserviceaccount.com
から全権を剥奪すると見えなくなる。
見えなくなっても、削除されておらず service-*************@gcp-sa-******.iam.gserviceaccount.com
に元の権限を与えれば元通りである。
見えなくなった物を見るには、「1.IAMに登録されているサービスアカウントの一覧を表示」、「2.プロジェクトのIAMリストを権限を含めて表示」の差分を使う。