Control Tower環境でメンバーアカウントからCloudTrailイベントをEventBridgeでキャッチする方法
はじめに
AWS Control Tower環境では、管理アカウントに組織レベルのCloudTrail証跡(Organization Trail)が自動的に作成されます。この構成では、CloudWatch Logsのメトリクスフィルターはログが存在する管理アカウントでしか設定できないため、メンバーアカウント側でCloudTrailログを活用した監視を行いたい場合に課題が生じることがあります。
本記事では、メンバーアカウントで追加のCloudTrail証跡を作成することなく、EventBridgeを使用してCloudTrailイベントをキャッチし、通知を行う方法を紹介します。
Control Tower環境での組織の証跡について
Control Towerはランディングゾーン設定時に、組織レベルのCloudTrail証跡を自動作成します。
メンバーアカウントでCloudTrail権限を持つユーザーは、AWSアカウントからCloudTrailコンソールにログインしたとき、またはdescribe-trailsなどのAWS CLIコマンドを実行したときに組織の証跡を確認できます。ただし、メンバーアカウントのユーザーには、組織の証跡を削除したり、ログ記録のオン/オフを切り替えたり、ログ記録されるイベントの種類を変更したり、その他の方法で組織の証跡を変更したりする十分な権限がありません。
この組織の証跡が有効化されている場合、メンバーアカウントで個別に証跡を作成しなくてもAWS API Call via CloudTrailイベントをEventBridgeルールでキャッチできます。
やってみる
個別のCloudTrail証跡がないメンバーアカウントにてCloudTrailイベントをトリガーとするEventBridgeルールを作成し、SNS通知を試みます。構成自体は単純なCloudTrail→EventBridge→SNSの通知構成です。
組織の証跡確認
まず、Control Tower管理アカウントで組織の証跡が有効になっていることを確認します。
- Control Tower管理アカウントでCloudTrailを開く
- 左メニューから「証跡」を選択
aws-controltower-BaselineCloudTrailが存在し、「組織の証跡」が「はい」になっていることを確認

メンバーアカウントでSNSトピックを作成
- 「トピック」→「トピックの作成」を選択
- トピックを作成:
- タイプ: スタンダード
- サブスクリプションを作成し、通知先メールアドレスを設定
- 確認メールを承認
メンバーアカウントでEventBridgeルールを作成
- 「ルール」→「ルールを作成」を選択
- 以下を設定:
- イベントバス: default
- ルールタイプ: イベントパターンを持つルール
- 「カスタムパターン(JSONエディタ)」を選択し、S3バケット作成イベントをトリガーとする以下のJSONを入力します。
{
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["s3.amazonaws.com"],
"eventName": ["CreateBucket"]
}
}
このイベントパターンは、S3バケットが作成された際にCloudTrailを経由してイベントをキャッチします。

ターゲットの設定
- ターゲットタイプ: AWSのサービス
- ターゲットを選択: SNSトピック
- トピック: 作成したSNSトピックを選択
- 実行ロール: 「この特定のリソースについて新しいロールを作成」を選択

動作確認
-
メンバーアカウントで任意のS3バケットを作成します。

-
数分以内に、SNS サブスクリプションで設定したメールアドレスに通知が届きます。メールの内容にはCloudTrailイベントの詳細(バケット名、実行者、タイムスタンプなど)が含まれます。
おわりに
Control Tower環境において、組織の証跡が有効であれば、メンバーアカウントで追加のCloudTrail証跡を作成することなく、EventBridgeを使用して CloudTrailイベントをキャッチできます。この方法により、CloudTrailの重複課金を避けながら、各メンバーアカウントで独自の監視・通知ルールを構築できます。
参考資料







