AWS Config アグリゲータで組織内の CloudTrail ローカル証跡とイベントセレクター・Insights 設定の有無を確認してみた
はじめに
AWS Organizations 配下の複数アカウントで AWS CloudTrail を運用している場合、組織証跡を作成していても、各メンバーアカウントに個別の証跡(以下、ローカル証跡)が残っていることがあります。
組織証跡は、管理イベントだけでなく、データイベント、ネットワークアクティビティイベント、CloudTrail Insights イベントも記録できます。一方で、組織証跡で記録しているイベント種別と、メンバーアカウントのローカル証跡で記録しているイベント種別が重複している場合、ローカル証跡は不要になっている可能性があります。
ただし、ローカル証跡にのみ設定されているイベントがある場合は注意が必要です。たとえば、組織証跡では管理イベントのみを記録し、ローカル証跡ではデータイベント、ネットワークアクティビティイベント、または CloudTrail Insights イベントを記録している場合、ローカル証跡を削除すると必要なログを取得できなくなる可能性があります。
- データイベント
- ネットワークアクティビティイベント
- CloudTrail Insights イベント

CloudTrail の証跡では、管理イベントのほかにデータイベント、Insights イベント、ネットワークアクティビティイベントなどを設定できる
そこで今回は、不要なローカル証跡を整理・削除するための事前調査として、AWS Config アグリゲータの Advanced Query(以降、高度なクエリ)を使用して、組織内に存在するローカル証跡を横断的に一覧化し、カスタムイベントセレクターまたは CloudTrail Insights イベントの設定有無から、管理イベント以外を記録している可能性がある証跡を抽出してみます。
高度なクエリは、AWS Config が記録しているリソース設定情報を SQL 形式で問い合わせる機能です。アグリゲータと組み合わせることで、中央アカウントから複数アカウント・複数リージョンのリソース設定を確認できます。
なお、この記事では、カスタムイベントセレクターまたは CloudTrail Insights イベントの設定有無に絞って確認しています。
カスタムイベントセレクターが設定されている場合は、イベントセレクターの詳細を確認し、実際に記録しているイベント種別を確認する必要があります。
前提
今回は以下を前提とします。
- AWS Organizations 配下で複数アカウントを運用している
- 組織証跡を作成済み
- AWS Config アグリゲータを作成済み
- AWS Config アグリゲータで組織内アカウントのリソース設定を集約している
- AWS Config で
AWS::CloudTrail::Trailが記録対象になっている - AWS Config の高度なクエリを実行できる権限がある
本記事では、AWS Config アグリゲータを作成しているアカウントから操作します。
確認したいこと
今回確認したいことは以下の2点です。
- 組織内に存在するローカル証跡を一覧化する
- ローカル証跡のうち、カスタムイベントセレクターまたは CloudTrail Insights イベントが設定されており、個別確認が必要なものを抽出する
本記事では、組織証跡ではなく、各 AWS アカウントに個別に作成されている証跡をローカル証跡と呼びます。
AWS Config の高度なクエリを開く
AWS Config コンソールから [高度なクエリ] に遷移し、[新しいクエリ] をクリックします。

AWS Config の高度なクエリ画面で新しいクエリを作成する
その後、作成済みのアグリゲータを指定し、クエリを入力して実行します。

作成済みのアグリゲータを指定し、クエリを入力して実行する
今回は、AWS Config アグリゲータに集約された AWS::CloudTrail::Trail の設定情報を確認します。
ローカル証跡をすべて出力する
まず、ローカル証跡をすべて出力します。
AWS Config の高度なクエリで以下を実行します。
SELECT
accountId,
awsRegion,
resourceId,
resourceName,
configuration.name,
configuration.trailARN,
configuration.homeRegion,
configuration.isOrganizationTrail,
configuration.isMultiRegionTrail,
configuration.hasCustomEventSelectors,
configuration.hasInsightSelectors,
configuration.s3BucketName
WHERE
resourceType = 'AWS::CloudTrail::Trail'
AND configuration.isOrganizationTrail = false
このクエリでは、resourceType = 'AWS::CloudTrail::Trail' のリソースから、configuration.isOrganizationTrail = false のものだけを抽出しています。
主な確認項目は以下です。
| 項目 | 確認内容 |
|---|---|
accountId |
証跡が存在する AWS アカウント ID |
awsRegion |
AWS Config が記録しているリージョン |
configuration.name |
CloudTrail 証跡名 |
configuration.trailARN |
CloudTrail 証跡 ARN |
configuration.homeRegion |
証跡のホームリージョン |
configuration.isOrganizationTrail |
組織証跡かどうか。false のものがローカル証跡です |
configuration.isMultiRegionTrail |
マルチリージョン証跡かどうか |
configuration.hasCustomEventSelectors |
カスタムイベントセレクターが設定されているか |
configuration.hasInsightSelectors |
CloudTrail Insights イベントが設定されているか |
configuration.s3BucketName |
CloudTrail ログの配信先 S3 バケット |
このクエリにより、組織内アカウントに存在するローカル証跡を一覧化できます。
実行後、出力はコンソール上で確認できます。必要に応じて、結果を CSV または JSON 形式でエクスポートすることもできます。

クエリ実行結果をコンソール上で確認し、CSV または JSON 形式でエクスポートできる
たとえば、以下のような結果を確認できます。
アカウント ID は例示です。
| accountId | awsRegion | 証跡名 | isOrganizationTrail | isMultiRegionTrail | hasCustomEventSelectors | hasInsightSelectors |
|---|---|---|---|---|---|---|
111111111111 |
ap-northeast-1 |
Members |
false |
true |
false |
false |
222222222222 |
ap-northeast-1 |
app-prd-trail |
false |
true |
false |
false |
222222222222 |
ap-northeast-1 |
s3-data-trail |
false |
true |
true |
false |
このように、各メンバーアカウントに存在するローカル証跡を一覧で確認できます。
カスタムイベントセレクターまたは Insights が設定されたローカル証跡を抽出する
次に、カスタムイベントセレクターまたは CloudTrail Insights イベントが設定されているローカル証跡を抽出します。
SELECT
accountId,
awsRegion,
resourceId,
resourceName,
configuration.name,
configuration.trailARN,
configuration.homeRegion,
configuration.isOrganizationTrail,
configuration.isMultiRegionTrail,
configuration.hasCustomEventSelectors,
configuration.hasInsightSelectors,
configuration.s3BucketName
WHERE
resourceType = 'AWS::CloudTrail::Trail'
AND configuration.isOrganizationTrail = false
AND (
configuration.hasCustomEventSelectors = true
OR configuration.hasInsightSelectors = true
)
このクエリでは、ローカル証跡のうち、以下のどちらかに該当するものを抽出しています。
configuration.hasCustomEventSelectors = trueconfiguration.hasInsightSelectors = true
hasCustomEventSelectors は、CloudTrail 証跡にカスタムイベントセレクターがあるかどうかを示します。
CloudTrail のイベントセレクターでは、管理イベントやデータイベントの設定を制御できます。ドキュメントでは、特定のイベントセレクターを指定せずに作成された証跡は、デフォルトで読み取り・書き込みの管理イベントを記録し、データイベントは記録しないと説明されています。
そのため、hasCustomEventSelectors = true の証跡は、データイベントやネットワークアクティビティイベントを記録している可能性があります。
ただし、カスタムイベントセレクターや高度なイベントセレクターは、管理イベントのみを対象として、読み取り・書き込みの種別やイベントソースなどをカスタマイズするためにも使用できます。そのため、hasCustomEventSelectors = true であることだけでは、データイベントやネットワークアクティビティイベントを記録しているとは断定できません。
実行結果
今回の環境では、カスタムイベントセレクターまたは CloudTrail Insights イベントが設定されており、削除前に個別確認が必要なローカル証跡として、以下のような結果が得られました。
アカウント ID は例示です。
| accountId | awsRegion | 証跡名 | hasCustomEventSelectors | hasInsightSelectors |
|---|---|---|---|---|
111111111111 |
ap-northeast-1 |
cad-backup-test |
true |
true |
222222222222 |
ap-northeast-1 |
s3-data-trail |
true |
false |
222222222222 |
ap-northeast-1 |
s3-test-trail |
true |
false |
222222222222 |
ap-northeast-1 |
test_cloudtrail |
true |
false |
この結果から、上記の証跡は、カスタムイベントセレクターまたは CloudTrail Insights イベントが設定されており、削除前に詳細を確認すべきローカル証跡として扱います。
hasCustomEventSelectors = true の証跡については、データイベントやネットワークアクティビティイベントを記録している場合に加え、管理イベントの記録条件のみをカスタマイズしている場合もあります。そのため、イベントセレクターの内容を個別に確認します。
一方で、このクエリに表示されなかったローカル証跡は、以下の状態です。
configuration.hasCustomEventSelectors = false
configuration.hasInsightSelectors = false
この場合、カスタムイベントセレクターと CloudTrail Insights イベントは設定されていません。
CloudTrail では、イベントセレクターを明示的に設定していない証跡は、デフォルトで読み取り・書き込みの管理イベントを記録し、データイベントは記録しません。また、ネットワークアクティビティイベントを記録するには、高度なイベントセレクターを設定する必要があります。
そのため、今回の確認観点では、データイベント、ネットワークアクティビティイベント、CloudTrail Insights イベントを個別に記録している可能性が低い証跡として扱えます。
結果の見方
hasCustomEventSelectors = true の場合
hasCustomEventSelectors = true の場合、証跡にカスタムイベントセレクターが設定されています。
この値だけでは、具体的にどのイベントを記録しているかまでは分かりません。
たとえば、以下のような設定が含まれている可能性があります。
- データイベントを記録している
- ネットワークアクティビティイベントを記録している
- 管理イベントの読み取り・書き込み条件をカスタムしている
- 高度なイベントセレクターを使っている
そのため、hasCustomEventSelectors = true の証跡は、必要に応じて CloudTrail コンソールや AWS CLI でイベントセレクターの詳細を確認するのがよさそうです。
CloudTrail CLI のドキュメントでは、イベントセレクターや Insights セレクターを確認するコマンドについても説明されています。
hasInsightSelectors = true の場合
hasInsightSelectors = true の場合、CloudTrail Insights イベントが有効化されています。
CloudTrail Insights イベントは、通常の管理イベントとは別に、有効化した場合に記録されるイベントです。
そのため、ローカル証跡削除前には、その証跡で Insights を利用している理由を確認した方がよいです。
どちらも false の場合
以下のように、hasCustomEventSelectors と hasInsightSelectors がどちらも false の場合を考えます。
hasCustomEventSelectors = false
hasInsightSelectors = false
この場合、カスタムイベントセレクターと CloudTrail Insights イベントは設定されていません。
CloudTrail では、イベントセレクターを明示的に設定していない証跡は、デフォルトで読み取り・書き込みの管理イベントを記録し、データイベントは記録しません。また、ネットワークアクティビティイベントを記録するには、高度なイベントセレクターを設定する必要があります。
そのため、今回の確認観点では、データイベント、ネットワークアクティビティイベント、CloudTrail Insights イベントを個別に記録している可能性が低い証跡として扱えます。ただし、ローカル証跡を削除する前には、組織証跡側のイベントセレクターと比較し、必要なイベントを組織証跡で記録できていることを確認します。
まとめ
AWS Config アグリゲータの高度なクエリを使って、組織内に存在する CloudTrail のローカル証跡を横断確認しました。
configuration.isOrganizationTrail = false を条件にすることで、ローカル証跡を一覧化できます。
また、configuration.hasCustomEventSelectors と configuration.hasInsightSelectors を確認することで、カスタムイベントセレクターまたは CloudTrail Insights イベントが設定されており、削除前に個別確認が必要な証跡を抽出できます。
組織証跡を利用している環境でローカル証跡の整理を検討する場合、まずは AWS Config アグリゲータで横断的に棚卸しし、例外になりそうな証跡だけ個別確認する進め方がよさそうです。








