AWS Control Towerのランディングゾーンv4.0でのドリフト検出の通知先について整理・検証してみた
はじめに
先日AWS Control Towerのランディングゾーンv4.0が発表され、v3.3からいくつかの変更がありました。
この記事ではランディングゾーンv4.0での変更点のうち、ドリフト検出の通知について検証してみます。
ドリフト検出とは
ドリフト検出とはAWS Control Towerのランディングゾーンで管理されたリソースにの変更や削除を検出する仕組みです。これにより意図しない変更や削除を検出しやすくします。
Control Towerが作成したOUの削除やSCPの変更やなど、ランディングゾーン管理にとって重要なドリフトについては、修正をしないとControl Towerの利用が制限されます。

ドリフト検出の種類については以下の公式ドキュメントを参照ください。
ランディングゾーンv4.0での変更点
ランディングゾーンv3.3ではドリフト検出を aws-controltower-AggregateSecurityNotifications という名前のSNSトピックに送信していました。ユーザーはこのSNSトピックに通知先を設定することで、メールやチャットへドリフト検出を通知することができました。
ランディングゾーンv4.0ではSNSトピックへの配信は廃止され、EventBridgeを利用する必要があります。
Drift Notifications: AWS Control Tower will stop sending drift notifications to SNS topic for all customers on landing zone 4.0 without the AWSControlTowerBaseline enabled, and will start sending drift notifications to EventBridge in the management account instead. To review sample events and guidance on how to receive drift notifications through EventBridge, please check this guide.
ドリフト通知: AWS Control Tower は、ランディングゾーン 4.0 で SNS トピックへのドリフト通知の送信を停止しAWSControlTowerBaseline、代わりに管理アカウントの EventBridge へのドリフト通知の送信を開始します。サンプルイベントと、EventBridge 経由でドリフト通知を受信する方法については、こちらのガイドをご覧ください。
ランディングゾーンのアップデートについては以下の記事を参照ください。
やってみる
以下のAWSのドキュメントを参考に実際に私の環境でも確認してみます。
リソース作成
まずは新しく管理アカウントにSNSトピックを作成し、通知先を設定しておきます。

続いてドリフト検出をトリガーに動作するEventBridgeルールを作成します。
先日リリースビジュアルルールビルダーを使って視覚的に作成していきます。
サイドタブから Control Tower > Drift Detected を選択し、中央のダッシュボードの トリガーイベント にドラッグ&ドロップします。

サイドタブから SNS トピック を選択し、中央のダッシュボードの ターゲット にドラッグ&ドロップします。

先ほど作成したSNSトピックを選択します。

その他設定はデフォルトのままで「作成」をクリックします。
動作確認
実際にEventBridge経由で通知されるかを確認するために、Control Towerの管理リソースに変更を加えてドリフト検出を起こしてみます。
(非推奨アクションのため検証環境等で行うことをおすすめします)
管理アカウントでAWS Organizationsのコンソールを開き、Control Tower管理のOUに割り当てられたSCPを確認します。
aws-guardrails- から始まるControl Tower管理のSCPを変更します。

「ポリシーの編集」をクリックします。

Control Tower管理のロールへ許可するアクションのうち一番影響が少なそうな lambda:DeleteFunction を削除し、ポリシーを更新します。

Control Towerの管理リソースの変更ができたので、Control Towerのコンソールを確認してみます。
想定通りドリフトが検出されていました。

SNSトピックに設定した通知先(メール)を確認すると、ドリフトイベントのjsonが通知されていました。

EventBridgeのメトリクスを確認すると、イベントが発生していたことがわかりました。

ここまでで、ランディングゾーンv4.0のControl Tower環境で発生したドリフトを通知することができました。
検証が完了したらドリフトを解消するのを忘れないようにしましょう。
今回の場合は対象のOUを再登録する必要があります。
最後に
今回はランディングゾーンv4.0での変更点のうち、ドリフト検出の通知について検証してみました。
通知という面だけで考えるとv3.3で利用していたSNSトピックがなくなり、新たに作成しなくてはいけないため面倒に思う方もいるかと思います。
一方でEventBridgeでイベントを拾えるようになったことで、後続にStepFunctionsやLambdaなど設定できるため、ドリフト検出後のアクションを実装する際の拡張性は向上したと思います。
この記事がどなたかの参考になれば嬉しいです。








