由于我们将日志文件存储在 S3 上并且为了满足 PCI 要求,我们必须在有人篡改日志文件时收到通知。
每次放置替换现有对象的放置请求或删除现有对象时,如何通知我。如果创建新对象,则不应触发警报,除非它替换现有对象。
最佳答案
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 实用程序、工具和库(第 3 方;我不隶属于 Amazon)的开发人员,Amazon 在 S3 中实现对象版本控制给我留下了深刻的印象,因为它的工作方式使客户端实用程序不知道版本控制或在存储桶上启用版本控制不应受到任何影响。这意味着您应该能够在存储桶上激活版本控制,而无需更改现有代码中的任何内容。例如:
x-amz-delete-marker:
响应中包含的 header 表明对象的“最新版本”实际上是 delete marker placeholder .除非被清除,否则“已删除”对象的各个版本仍可被版本感知代码访问。 但是,再次...使用版本感知代码,包括 AWS 控制台(当您查看版本化存储桶时会出现两个新按钮——您可以选择使用版本控制控制台 View 或版本控制来查看它—— unaware 控制台 View )您可以遍历对象的不同版本并获取尚未永久删除的任何版本......但防止未经授权删除对象是 MFA 删除的重点。
此外,当然还有 bucket logging ,这通常仅比实时延迟几分钟,可用于检测异常事件......其历史记录将由存储桶版本控制。
关于amazon-s3 - 文件被覆盖或删除时的 S3 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28548422/