AWS S3 存储桶日志与 AWS cloudtrail

AWS S3 bucket logs vs AWS cloudtrail

AWS S3 日志和 AWS CloudTrail 有什么区别? 在 CloudTrail 的文档上,我看到了这个:

CloudTrail adds another dimension to the monitoring capabilities already offered by AWS. It does not change or replace logging features you might already be using.

CloudTrail 跟踪 API 对基础架构更改事件的访问,在 S3 中这意味着创建、删除和修改存储桶 (S3 CloudTrail docs)。它非常关注 API 修改存储桶的方法。

S3 Server Access Logging 提供对 S3 存储桶中对象的访问的 Web 服务器样式日志记录。此日志记录针对对象进行细化,包括只读操作,并包括非API 访问,如静态网站浏览。

CloudTrail 记录 API 访问您的 AWS 账户的调用。 这些 CloudTrail 日志存储在 Amazon S3 存储桶中。

两者提供不同的服务。

您从 CloudTrail Doc 共享的定义: CloudTrail 为 AWS 已经提供的监控功能增加了另一个维度。它不会更改或替换您可能已经在使用的日志记录功能。

这意味着您可能已经激活了其他 AWS 服务中提供的一些其他日志记录功能,例如 ELB 日志记录等。 但是,当您启用 CloudTrail 监控时,您不必担心之前的日志记录功能,因为它们仍然处于活动状态。 您将收到来自所有服务的日志。 因此,通过启用 CloudTrail 日志记录,它不会更改或替换您可能已经在使用的日志记录功能。

希望对您有所帮助..:)

AWS CloudTrail 是一项 AWS 服务,用于记录不同 AWS 资源上的所有账户活动。它还会跟踪 IAM 控制台登录等内容。启用 CloudTrail 服务后,您只需转到 CloudTrail 控制台并查看所有 activity 并应用过滤器。此外,在启用时,您可以选择记录这些活动并将数据发送到 AWS CloudWatch。在 AWS CloudWatch 中,您可以应用过滤器并创建警报以在某种 activity 发生时通知您。

S3 日志记录正在为您的 S3 buckets/Objects 上的基本 activity 启用日志记录。

使用 CloudTrail 日志而不是 S3 服务器访问日志有两个原因:

  1. 您对桶级 activity 日志记录感兴趣。 CloudTrail 有,S3 日志没有。
  2. 您有一个涉及 CloudWatch 日志流的日志分析设置。基本的 S3 日志只是将日志事件存储到某个 S3 存储桶上的文件中,然后由您来处理它们(尽管大多数日志分析服务可以为您执行此操作)。

底线:使用 CloudTrail,如果您有需要它的特定场景,它会额外收费。否则,“标准”S3 服务器访问日志就足够了。

来自 CloudTrail 开发人员指南 (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudtrail-logging.html):

Using CloudTrail Logs with Amazon S3 Server Access Logs and CloudWatch Logs

You can use AWS CloudTrail logs together with server access logs for Amazon S3. CloudTrail logs provide you with detailed API tracking for Amazon S3 bucket-level and object-level operations, while server access logs for Amazon S3 provide you visibility into object-level operations on your data in Amazon S3. For more information about server access logs, see Amazon S3 Server Access Logging.

You can also use CloudTrail logs together with CloudWatch for Amazon S3. CloudTrail integration with CloudWatch logs delivers S3 bucket-level API activity captured by CloudTrail to a CloudWatch log stream in the CloudWatch log group you specify. You can create CloudWatch alarms for monitoring specific API activity and receive email notifications when the specific API activity occurs. For more information about CloudWatch alarms for monitoring specific API activity, see the AWS CloudTrail User Guide. For more information about using CloudWatch with Amazon S3, see Monitoring Metrics with Amazon CloudWatch.

AWS 在提出这个问题后又添加了一项功能,即 CloudTrail 数据事件

目前有 3 个功能可用:

  1. CloudTrail:它记录了存储桶级别 Ref
  2. 的几乎所有 API 调用
  3. CloudTrail 数据事件:记录几乎所有 API 对象级别的调用 Ref
  4. S3服务器访问日志:几乎记录了所有(best effort server logs delivery) access calls to S3 objects. Ref

现在,2 和 3 看起来功能相似,但它们有一些差异,这可能会提示用户使用其中之一或两者(在我们的例子中)!以下是我能找到的差异:

  • 两者都在不同的粒度级别上工作。例如可以为 AWS 帐户的所有 S3 存储桶或仅为 S3 存储桶中的某些文件夹设置 CloudTrail 数据事件。然而,S3 服务器访问日志将设置在单个存储桶级别
  • S3 服务器访问日志似乎提供了有关 BucketOwner、HTTPStatus、ErrorCode 等日志的更全面的信息。Full list

Cloudtrail 日志中不可用但服务器访问日志中可用的信息Reference:

  • 对象大小、总时间、Turn-Around 时间和日志记录的 HTTP Referer 字段
  • 生命周期转换、过期、恢复
  • 在批量删除操作中记录键
  • 身份验证失败
  • CloudTrail 不会为未通过身份验证(其中提供的凭据无效)的请求传送日志。但是,它确实包含授权失败 (AccessDenied) 请求和匿名用户发出的请求的日志。
  • 如果请求是由不同的 AWS 账户发出的,只有当存储桶拥有者拥有或对请求中的对象具有完全访问权限时,您才会在您的账户中看到 CloudTrail 日志。如果不是这种情况,日志将只能在请求者帐户中看到。但是,同一请求的日志将在您帐户的服务器访问日志中传送,无需任何额外要求。

AWS Support 建议可以使用 CloudTrail 日志做出决策,如果您还需要 CloudTrail 日志中没有的其他信息,则可以使用服务器访问日志。