文件被覆盖或删除时的S3通知

时间:2015-02-16 18:56:21

标签: amazon-s3

因为我们将日志文件存储在S3上并满足PCI要求,所以当有人篡改日志文件时我们必须得到通知。

每次放置替换现有对象的放置请求或删除现有对象时,如何通知我。如果创建了新对象,则不应触发警报,除非它替换现有对象。

1 个答案:

答案 0 :(得分:4)

S3目前不提供删除或仅覆盖通知。删除通知were added after the initial launch of the notification feature并且可以在删除对象时通知您,但在通过覆盖隐式删除对象时不会通知您。

然而,S3确实具有完成您所需要的功能,其方式似乎优于您正在考虑的内容:对象版本控制和删除多因素身份验证,这两者都在这里讨论:

http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html

在存储桶上启用版本控制后,覆盖文件并不会删除旧版本的文件。相反,该文件的每个版本都有一个由S3分配的不透明字符串,用于标识版本ID。

如果有人覆盖了一个文件,那么你就会在同一个文件中有两个版本 - 原始文件和新文件 - 所以你不仅有篡改证据,还有原始文件,不受干扰。根据定义,桶中具有多个版本的任何对象在某些时候都会被覆盖。

如果您还启用了多重身份验证(MFA)删除功能,则无法访问硬件或虚拟MFA设备时,无法删除任何对象的任何版本。

作为AWS实用程序,工具和库的开发人员(第三方;我并非隶属于亚马逊),亚马逊在S3中实现对象版本控制给我留下了深刻的印象,因为它可以在这样一种方式,即不会在存储桶上启用版本控制或版本控制的客户端实用程序不应以任何方式受到影响。这意味着您应该能够在存储桶上激活版本控制,而无需更改现有代码中的任何内容。例如:

  • 在请求中提取没有附带版本ID的对象只需获取对象的最新版本

  • 除非您明确删除特定版本,否则
  • 版本化存储桶中的对象不会被删除;但是,你仍然可以删除一个对象,"并获得预期的回复。随后取出"删除"没有指定随附版本ID的对象仍然会返回404 Not Found,就像在非版本化环境中一样,在响应中添加了一个不显眼的x-amz-delete-marker:标头,表示"最新版本&#34 ;该对象实际上是delete marker placeholder。 "删除"的各个版本除非已清除,否则对象仍可供版本感知代码访问。

  • 与版本控制无关的其他操作(在非版本化存储桶上工作)继续以与在存储桶上启用版本控制之前相同的方式工作。

但是,再次......使用具有版本感知功能的代码,包括AWS控制台(当您查看版本化存储桶时会出现两个新按钮 - 您可以选择使用版本控制功能查看它您可以遍历对象的不同版本并获取尚未永久删除的任何版本...但是防止未经授权删除对象是MFA删除的重点。

此外,当然还有bucket logging,它通常只会比实时延迟几分钟,并可用于检测异常活动......其历史将被保留通过桶版本控制。