- 公開日
- 最終更新日
【CloudTrail】S3データイベント保管バケットはログ取得対象外にしたほうがいい話
この記事を共有する
はじめに
S3のアクセスログを有効化する場合はログを保管しているバケットは対象外にしましょうと言うのは有名な話ですが、CloudTrailのS3データイベントではどうなのかと思って調べてみました。
いきなり結論
データイベントを保管するバケットは対象外にすることが推奨されます。
S3のアクセスログと同様に無限ループがおきてログが大量に生成されてしまいます。
データイベントをログ記録する - AWS CloudTrail
特定の Amazon S3 バケットのデータイベントをログ記録する場合は、証跡のデータイベントセクションで指定したログファイルの受け取り用に、データイベントをログに記録する Amazon S3 バケットを使用しないことをお勧めします。同じ Amazon S3バケットを使用すると、証跡は、ログファイルが Amazon S3 バケットに配信されるたびにデータイベントをログに記録します。ログファイルは、間隔で配信される集約イベントのため、イベントとログファイルの比率は 1:1 になりません。イベントは、次回のログファイルに記録されます。たとえば、CloudTrail がログを配信すると、PutObject イベントが S3 バケットで発生します。S3 バケットがデータイベントセクションでも指定されていると、証跡は PutObject イベントをデータイベントとして処理して記録します。このアクションは別の PutObject イベントであり、証跡はイベントを再び処理して記録します。
設定方法
結論がでたのですが、せっかくなので設定方法を記載します。
やり方はいくつかありますが、マネジメントコンソールとCloudFormationの2パターンを紹介します。
マネジメントコンソールでの実装
証跡の作成画面、またはデータイベントの編集にて以下の様に設定します。
- データイベントにチェックマークを入れる
- 高度なイベントセレクターに切り替え、設定値を入力
- データイベントタイプ:S3
- ログセレクターテンプレート:カスタム
- セレクター名:任意の名前
- フィールド:resources.ARN
- オペレーター:次で始まらない: (NotStartsWith)
- Value:arn:aws:s3:::ログを保管するバケット名/
これでログを保管するバケットを除いたS3のデータイベントの保管ができます。
ちなみに今回は 高度なイベントセレクター を使って設定しています。基本的にはこちらをおすすめします。
基本的なイベントセレクター では"NotStartsWith"の設定がないのでS3が追加された場合は、都度証跡の設定追加が必要になります。
高度なイベントセレクターの設定についてはこちらに詳細が記載されています。
高度なイベントセレクタを使用してデータイベントをフィルタする - AWS CloudTrail
CloudFormationでの実装
マネジメントコンソールで設定したものと同様の設定になります。
AWSTemplateFormatVersion: 2010-09-09
Resources:
Trail:
Type: AWS::CloudTrail::Trail
Properties:
TrailName: trail-name
IsLogging: true
S3BucketName: bucket-name
IncludeGlobalServiceEvents: true
IsMultiRegionTrail: true
EnableLogFileValidation: true
AdvancedEventSelectors:
- Name: "Exclude Log Bucket"
FieldSelectors:
- Field: eventCategory
Equals: [Data]
- Field: resources.type
Equals: [AWS::S3::Object]
- Field: resources.ARN
NotStartsWith:
- arn:aws:s3:::bucket-name/
12行目のAdvancedEventSelectors からが 高度なイベントセレクター の設定です。
詳細は以下をご参考ください。
AWS::CloudTrail::Trail AdvancedFieldSelector - AWS CloudFormation
まとめ
CloudTrailのデータイベントもS3アクセスログ同様に保管するバケットは対象外としましょう。
このことに言及しているブログは意外と見かけなかったので調査してみました。
皆さんの参考になれば幸いです。
この記事は私が書きました
渡邉 和貴
CCoEをやってます。あと森と山に出没します。 好きなAWSサービスは CloudFormation