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

标签 amazon-s3

由于我们将日志文件存储在 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 中实现对象版本控制给我留下了深刻的印象,因为它的工作方式使客户端实用程序不知道版本控制或在存储桶上启用版本控制不应受到任何影响。这意味着您应该能够在存储桶上激活版本控制,而无需更改现有代码中的任何内容。例如:

  • 获取请求中没有附带版本 ID 的对象只会获取对象的最新版本
  • 除非您明确删除特定版本,否则版本化存储桶中的对象不会被真正删除;但是,您仍然可以“删除一个对象”,并获得预期的响应。随后在不指定随附版本 ID 的情况下获取“已删除”对象仍然返回 404 Not Found,就像在非版本化环境中一样,并添加了一个不显眼的 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/

    相关文章:

    amazon-web-services - AWS CloudFront 未更新

    amazon-web-services - 由 PUT 触发的 AWS Lambda 到单独账户中的 s3 存储桶

    python-3.x - 使用 boto3 : "' dict' object has no attribute 'put' "将字符串写入 S3

    python-3.x - 无法导入模块 'lambda_function' : No module named 'pandas'

    node.js - 分段上传node.js aws-sdk中的AWS s3进度条

    java - 使用 AWS TransferManager 上传时无法找到堆栈跟踪

    amazon-web-services - Chef 12 + AWS Opsworks + 从 s3 部署应用程序

    c# - Amazon Web Services 解决方案不会在 Release模式下构建

    ruby-on-rails - 将文件从 Amazon S3 复制到另一个 FTP 的最佳方法是什么?

    java - 如何清理 Maven 存储库(在 Amazon S3 上)?