こんにちは。middleです。

とてもネタに困ったので、今回は”考え方”のお話を書きたいと思います。
壁には毎日激突しているのに、何故ネタ切れになるのでしょうか……。

 

★今回のお題

特定のS3バケットのオブジェクトに、変更操作(上書き)が行われた場合、検知したい

※新しいオブジェクトが置かれた時は、別に検知しなくてよし
↑ポイント

 

 

★背景

お客様のセキュリティーポリシーで、「監査用に保管しているデータに変更操作があった場合、検知したい」というものがあったので、その実現をしたいというところです。

※監査用データが新たに増えた場合は、検知不要
↑しつこいですが今回のポイント

ということで実現方法を考えてみました。
↓↓↓

 

★案その1

S3イベント通知を使う

バケット内で特定のイベントが発生した時に、S3からSNSトピックにイベントを発行して通知を受けることができる、というものです。
ちなみにSNSトピックのほかに、SQSキュー、Lambdaにもイベント発行可能です。

■参考:
Amazon S3 イベント通知の設定 – Amazon Simple Storage Service

 

★案その2

CloudTrailを使う

CloudTrailの証跡を
CloudWatchLogsに出力して→
CloudWatchLogsメトリクスフィルタでフィルタリングして→
CloudWatchアラームを作成する
というよくあるあれですね。

■参考:
Amazon CloudWatch Logs を使用して CloudTrail のログファイルをモニタリングする – AWS CloudTrail

 

 

★懸念点

新規オブジェクトが追加された時と、既存オブジェクトが変更された時とで、区別できるのか? というところが気になりました。
というのも案その1の「S3イベント通知」がサポートしているイベント一覧(↓)を見ていて、「どれが既存オブジェクトの変更なのだろう?」と不思議になったからです。

 

s3:ObjectCreated:*

s3:ObjectCreated:Put

s3:ObjectCreated:Post

s3:ObjectCreated:Copy

s3:ObjectCreated:CompleteMultipartUpload

s3:ObjectRemoved:*

s3:ObjectRemoved:Delete

s3:ObjectRemoved:DeleteMarkerCreated

s3:ObjectRestore:Post

s3:ObjectRestore:Completed

s3:ReducedRedundancyLostObject

公式サイトより引用)

 

新規オブジェクト追加は「s3:ObjectCreated」あたりだとして、既存オブジェクト変更はどれでしょうか?

来週に続く!

 

TOP