はじめに
Google Cloud を運用されている方の中には、重要なお知らせを見落とさないよう、Essential Contacts の通知カテゴリを「すべて」に設定されている方もいらっしゃるかと思います。
Google Cloud の通知先設定に便利な Essential Contacts について、「とりあえず『すべて』のカテゴリにチェックを入れておけば、大事な変更は全部飛んでくるはず」と思っていたのですが、実は私自身、プロジェクトの請求先アカウントを変更した際に通知が来ないことがあり、「あれ、もしかして設定を変えても通知されない操作があるのでは…?」と気になって実際の仕様を調べてみました。
この記事では、Essential Contacts の「すべて」カテゴリの本当の仕様や、請求先アカウント変更時の実際の挙動、そして通知が届かない場合の代替策について整理してみたいと思います。
Essential Contacts の役割と通知カテゴリを整理する
まず Essential Contacts とは、Google Cloud 側からのお知らせ(サービスの更新、支払い遅延、法的事項など)を受け取る連絡先を定義する機能です。
通知は「課金(Billing)」「セキュリティ」「技術(Technical)」などのカテゴリに分かれています。ここで「すべて(All)」カテゴリを選択すると、すべてのカテゴリの通知対象となります。「すべて」を選択したうえで、「課金」などを個別に選択し直す必要はありません [1]。
(※たとえば「課金」カテゴリに飛ぶ通知としては、費用異常検出(Cost anomalies)の通知などがあります [2])
複数経路で登録した場合の通知仕様を把握する
通知先を設定する際、IAM ロール(プロジェクトオーナーなど)と Essential Contacts の両方に同じアドレスを登録することもあるかと思います。
通知の重複がどうなるのか気になりますが、Google Cloud のシステム内部では、送信先のメールアドレスを基準とした重複排除が行われます。そのため、同じメールアドレスであれば、両方に登録していても同じ通知が 2 通届く仕様ではありません。
ただし注意したいのは、グループアドレス(メーリングリスト)を併用するケースです。
IAM に個人のメールアドレスを登録し、Essential Contacts にグループアドレスを登録している場合、システム上は「別の宛先」として識別されます。この場合、グループの転送機能によって、個人の受信トレイにはグループ宛てと個人宛てで計 2 通の通知が届く可能性があります。Google Cloud の送信システム自体がグループ内の個別アドレスを自動展開して重複排除することはありません。
プロジェクトの請求先アカウント変更時の通知を検証する
ここで 1 つ気になったのは、請求先アカウントの変更といった重要な操作は、「すべて」や「課金」カテゴリに登録していれば必ず通知されるのかという点です。
実際にプロジェクトの請求先アカウントの紐付けを変更し、通知が届くか検証してみます。
- Essential Contacts にて、通知を受け取るアドレスに「すべて」のカテゴリを設定する
-
Google Cloud コンソールで対象プロジェクトを選択し、[お支払い] メニューから請求先アカウントの紐付けを変更(または別の請求先アカウントに変更)する
-
手順1で設定したアドレスに、紐付け変更の通知メールが届くか確認する
結果は 〈通知は届きません〉 でした。
ドキュメントの通知例には「請求先アカウント、請求書、お支払い方法の変更」と記載されているため [1]、これを読むと今回の操作でも通知が来そうに思えます。ドキュメントの記載だけで「プロジェクトの紐付け変更は対象外」と見抜くのは、少し難しいポイントかもしれません。 実際のところ、このドキュメントの記載は「請求先アカウント『自体』に対する変更」を指しているため、通知が届かないのは、現在の想定された挙動となります。
一方で、プロジェクトと請求先アカウントの紐付けを変更する操作(AssignResourceToBillingAccount)は、ユーザー側で実施される通常の管理操作として扱われるため、Essential Contacts の通知対象外となります。
プロジェクトへの請求先アカウントの紐付け変更を確実に検知したい場合は、Cloud Audit Logs に記録される監査ログを条件とした「ログベースのアラート」の利用を推奨します [3]。このアラートを Cloud Monitoring の通知チャンネルと組み合わせることで、任意の宛先へのメール通知が可能です。
MSA(お知らせメール)の確実な受信に向けた対策を検討する
Essential Contacts に「すべて」で登録しておけば、Google Cloud からのお知らせメール(MSA)をすべて確実に受信できるのでしょうか?
実は、すべての MSA が Essential Contacts を使用して送信されるわけではありません。MSA によっては、Organization Admin(組織管理者)などの特定の IAM ロールを持つユーザーにのみ送信されるケースもあります。
そのため、重要な MSA を取りこぼさないための対策として、Essential Contacts のすべてのカテゴリへの登録に加えて、オーナーや組織管理者のロールをグループアドレス等に付与しておくことや、メールサーバー側でのルーティング設定もあわせて検討したいポイントかと思います。
まとめ
Essential Contacts の通知の仕組みと、請求先アカウント変更時の挙動について確認しました。
Essential Contacts はあくまで Google Cloud 側からの重要なお知らせを受け取るためのものであり、ユーザー側の管理操作(プロジェクトの紐付け変更など)を検知する機能ではありません。操作の監視にはログベースのアラートを活用するなど、目的に合わせて検知の仕組みを組み合わせる見直しにつなげていただければと思います。
参考資料
[1] 重要な連絡先の概要 | Resource Manager
https://docs.cloud.google.com/resource-manager/docs/managing-notification-contacts?hl=ja
[2] 費用の異常を表示して管理する
https://docs.cloud.google.com/billing/docs/how-to/manage-anomalies?hl=ja#set-email-notifications
[3] ログベースのアラート ポリシーを構成する | Cloud Logging
https://docs.cloud.google.com/logging/docs/alerting/log-based-alerts?hl=ja