文件被覆盖或删除时的 S3 通知
S3 notification when file is overwritten, or deleted
由于我们将日志文件存储在 S3 上,并且为了满足 PCI 要求,我们必须在有人篡改日志文件时得到通知。
每次放置替换现有对象的放置请求或删除现有对象时,如何通知我。如果创建新对象,除非它替换现有对象,否则不应触发警报。
S3 当前不提供删除或 overwrite-only 通知。删除通知 were added after the initial launch of the notification feature 并且可以在 object 被删除时通知您,但是当 object 被覆盖隐式删除时不会通知您。
但是,S3 确实具有完成您需要的功能,其方式似乎优于您正在考虑的方式:object 版本控制和 multi-factor 删除身份验证,均在此处讨论:
http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html
在存储桶上启用版本控制后,覆盖文件不会删除文件的旧版本。相反,文件的每个版本都有一个不透明的字符串,由 S3 分配,用于标识版本 ID。
如果有人覆盖了一个文件,那么你的存储桶中就会有同一个文件的两个版本——原来的一个和新的——所以你不仅有篡改的证据,还有原始文件,不受打扰。根据定义,存储桶中具有多个版本的任何 object 都已在某一时刻被覆盖。
如果您还启用 Multi-Factor 身份验证 (MFA) 删除,则可以删除任何 object 版本的 none,而无需访问硬件或虚拟 MFA 设备。
作为 AWS 实用程序、工具和库(第 3 方;我不隶属于亚马逊)的开发人员,亚马逊在 S3 中实施 object 版本控制给我留下了深刻的印象,因为它适用于这样一来,不知道版本控制或在存储桶上启用版本控制的客户端实用程序不应受到任何影响。这意味着您应该能够在不更改现有代码中的任何内容的情况下激活存储桶的版本控制。例如:
在请求中获取 object 而没有随附的版本 ID 只会获取 object
的最新版本
object 版本化存储桶中的
s 不会真正被删除,除非您明确删除特定版本;但是,您仍然可以 "delete an object," 并获得预期的响应。随后获取 "deleted" object 而未指定随附的版本 ID 仍然 returns 找不到 404,就像在 non-versioned 环境中一样,添加了一个不显眼的 x-amz-delete-marker:
header 包含在响应中以指示 object 的 "latest version" 实际上是 delete marker placeholder。 "deleted" object 的各个版本仍然可供 version-aware 代码访问,除非被清除。
与版本控制无关的其他操作,它们在 non-versioned 个存储桶上运行,继续以与在存储桶上启用版本控制之前相同的方式工作。
但是,再次...使用 version-aware 的代码,包括 AWS 控制台(当您查看版本控制的存储桶时会出现两个新按钮——您可以选择使用 versioning-aware 控制台视图或 versioning-unaware 控制台视图)您可以遍历 object 的不同版本并获取任何尚未永久删除的版本...但防止未经授权删除 objects是MFA删除的点。
此外,当然还有 bucket logging,它通常只比 real-time 延迟几分钟,可用于检测异常 activity... 的历史记录这将由存储桶版本控制保留。
由于我们将日志文件存储在 S3 上,并且为了满足 PCI 要求,我们必须在有人篡改日志文件时得到通知。
每次放置替换现有对象的放置请求或删除现有对象时,如何通知我。如果创建新对象,除非它替换现有对象,否则不应触发警报。
S3 当前不提供删除或 overwrite-only 通知。删除通知 were added after the initial launch of the notification feature 并且可以在 object 被删除时通知您,但是当 object 被覆盖隐式删除时不会通知您。
但是,S3 确实具有完成您需要的功能,其方式似乎优于您正在考虑的方式:object 版本控制和 multi-factor 删除身份验证,均在此处讨论:
http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html
在存储桶上启用版本控制后,覆盖文件不会删除文件的旧版本。相反,文件的每个版本都有一个不透明的字符串,由 S3 分配,用于标识版本 ID。
如果有人覆盖了一个文件,那么你的存储桶中就会有同一个文件的两个版本——原来的一个和新的——所以你不仅有篡改的证据,还有原始文件,不受打扰。根据定义,存储桶中具有多个版本的任何 object 都已在某一时刻被覆盖。
如果您还启用 Multi-Factor 身份验证 (MFA) 删除,则可以删除任何 object 版本的 none,而无需访问硬件或虚拟 MFA 设备。
作为 AWS 实用程序、工具和库(第 3 方;我不隶属于亚马逊)的开发人员,亚马逊在 S3 中实施 object 版本控制给我留下了深刻的印象,因为它适用于这样一来,不知道版本控制或在存储桶上启用版本控制的客户端实用程序不应受到任何影响。这意味着您应该能够在不更改现有代码中的任何内容的情况下激活存储桶的版本控制。例如:
在请求中获取 object 而没有随附的版本 ID 只会获取 object
的最新版本
object 版本化存储桶中的
s 不会真正被删除,除非您明确删除特定版本;但是,您仍然可以 "delete an object," 并获得预期的响应。随后获取 "deleted" object 而未指定随附的版本 ID 仍然 returns 找不到 404,就像在 non-versioned 环境中一样,添加了一个不显眼的
x-amz-delete-marker:
header 包含在响应中以指示 object 的 "latest version" 实际上是 delete marker placeholder。 "deleted" object 的各个版本仍然可供 version-aware 代码访问,除非被清除。与版本控制无关的其他操作,它们在 non-versioned 个存储桶上运行,继续以与在存储桶上启用版本控制之前相同的方式工作。
但是,再次...使用 version-aware 的代码,包括 AWS 控制台(当您查看版本控制的存储桶时会出现两个新按钮——您可以选择使用 versioning-aware 控制台视图或 versioning-unaware 控制台视图)您可以遍历 object 的不同版本并获取任何尚未永久删除的版本...但防止未经授权删除 objects是MFA删除的点。
此外,当然还有 bucket logging,它通常只比 real-time 延迟几分钟,可用于检测异常 activity... 的历史记录这将由存储桶版本控制保留。