こんにちは。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」あたりだとして、既存オブジェクト変更はどれでしょうか?
来週に続く!