17、AWS 中的日志记录与审计(上)

AWS 中的日志记录与审计(上)

1. AWS 日志分类

AWS 中的日志可分为以下三类:
| 分类 | 具体日志 |
| ---- | ---- |
| AWS 基础设施日志 | AWS CloudTrail、AWS VPC 流日志、Amazon CloudFront 等 |
| AWS 服务日志 | Amazon S3、AWS ELB、AWS Lambda 等 |
| 基于主机的日志 | IIS/Apache、Windows 事件日志、自定义日志等 |

AWS 基础设施日志(如 CloudTrail 日志)包含与 AWS 账户中所有 API 活动相关的信息,而 VPC 流日志包含进出 VPC 的 IP 流量信息。AWS 服务日志包括来自各种 AWS 服务的日志,包含安全日志数据、服务访问信息、配置和状态更改、计费事件等。基于主机的日志由 EC2 实例的操作系统生成,如 Apache、IIS 等,运行在 AWS 服务上的应用程序或自定义日志由 Web 服务器生成。

2. 日志记录的最佳实践
  • 始终记录所有资源的访问和审计信息。
  • 确保所有日志数据通过访问控制进行保护,并存储在耐用的存储解决方案(如 S3)中。
  • 使用生命周期策略自动存储、存档和删除日志数据。
  • 遵循标准的日志数据命名约定。
  • 使用集中式日志监控解决方案整合所有来源的日志数据,进行分析并创建可操作的警报。
3. 主要的 AWS 日志服务
3.1 AWS CloudTrail

AWS CloudTrail 是一项审计服务,记录对 AWS 账户进行的所有 API 调用。可用于跟踪 AWS 账户中的用户活动和 API 使用情况。该服务应在 AWS 账户中启用,以收集所有区域的数据,无论资源位于何处。它存储最近七天的历史数据,若要长期存储,需将数据存储在 S3 存储桶中。此服务可与 AWS CloudWatch Logs 和 AWS Lambda 无缝集成,以创建日志监控和处理解决方案。

其生命周期如下:

graph LR
    A[账户活动发生] --> B[CloudTrail 以事件形式捕获活动]
    B --> C[事件历史可供查看和下载]
    C --> D[配置 S3 存储桶存储事件历史]
    D --> E[CloudTrail 将事件日志发送到 S3 存储桶,并可选择发布到 CloudWatch Logs 和 CloudWatch 事件]
3.2 AWS Config

AWS Config 服务记录 AWS 账户中所有 AWS 资源的配置。用于审计资源配置的更改,为特定 AWS 服务提供此类更改的时间线。它使用 S3 存储所有此类更改的快照,确保数据安全存储在耐用、受访问控制的存储中。该服务与简单通知服务(SNS)集成,可在资源发生更改时向用户配置通知。此服务使你能够在特定时间点或一段时间内证明合规性。

3.3 AWS 详细计费报告

你可以按月份、日期或小时;按产品(如 EC2);按资源(如特定的 EC2 实例或特定的 S3 存储桶);或按分配给资源的标签来细分计费报告。这些详细的计费报告用于分析 AWS 账户中资源的使用情况和审计消耗。详细计费报告每天多次提供到你选择的 S3 存储桶。始终为资源分配有意义的标签,以便根据成本中心、部门、项目等分配 AWS 资源的成本。详细计费报告有助于改进成本分析、资源优化和计费对账流程。

3.4 Amazon S3 访问日志

当为 S3 存储桶启用日志记录选项时,S3 会记录对单个 S3 存储桶的所有请求。此访问日志存储有关访问请求的所有信息,如请求者、存储桶名称、请求时间、错误日志等。可用于安全审计,包括 S3 存储桶的失败访问尝试。还可帮助你了解 S3 存储桶内和跨存储桶的对象使用情况以及流量模式,并将 AWS S3 费用与 S3 使用情况进行映射。

3.5 ELB 日志

ELB 为发送到负载均衡器的所有请求和连接提供详细的访问日志。启用此功能后,每个负载均衡器节点每五分钟发布一次日志文件。该日志文件包含客户端 IP 地址、延迟、服务器响应等信息。可用于安全和访问分析,确保不会收到来自未授权源的流量。还可使用延迟和请求时间信息检测性能下降,并采取措施改善用户体验。可配置 S3 存储桶存储这些日志。

3.6 Amazon CloudFront 访问日志

可配置 Amazon CloudFront 生成访问日志。这些日志每小时多次交付到你指定的 S3 存储桶以保存日志数据。这些日志提供有关对 CloudFront 分发进行的每个用户请求的信息,与 S3 访问日志和 ELB 访问日志类似。可用于对访问整个内容分发网络中内容的所有用户进行安全和访问审计。可使用此数据验证内容分发网络是否按预期运行,检查内容交付的延迟以及交付错误,并根据日志数据采取必要的措施。

3.7 Amazon RDS 日志

这些日志存储有关 RDS 数据库的性能、访问和错误等信息。你可以从 AWS 管理控制台、CLI 或通过 Amazon RDS API 查看、下载和监视这些日志。还可以通过特定于数据库引擎的数据库表查询这些日志文件。可用于对 RDS 中的托管数据库进行安全、性能、访问和操作分析。应建立自动化流程,将日志文件传输到集中式访问日志存储库,如 S3 或 Amazon CloudWatch Logs。

3.8 Amazon VPC 流日志

VPC 流日志捕获进出 VPC 网络接口的所有 IP 流量的信息。可以为 VPC、子网甚至单个弹性网络接口(ENI)启用流日志。此日志数据存储在 CloudWatch Logs 中并可查看,也可导出进行高级分析。可用于审计、调试,或在需要为安全或监管目的捕获和分析网络流量数据时使用。借助 VPC 流日志,可排查流量未到达预期目的地的所有情况。

4. AWS CloudWatch Logs

AWS CloudWatch Logs 是 AWS CloudWatch 服务的一部分,提供监控、日志记录和日志存储功能。可消费来自任何 AWS 区域资源的日志,但只能在支持 CloudWatch Logs 的区域的 CloudWatch 中查看日志。日志数据可在日志组级别使用 KMS 进行加密。主要用于以下任务:
- 将近实时地监控所有日志,将其路由到 AWS CloudWatch Logs,这些日志可以是操作系统日志、应用程序日志、AWS 服务日志或 AWS 基础设施日志(如 VPC 流日志和 AWS CloudTrail 日志)。
- 将所有日志存储在具有可配置保留期的耐用存储中。
- 通过在 EC2 实例上安装 CloudWatch Logs 代理为 EC2 实例生成日志。
- 与 AWS 服务集成,如 AWS CloudWatch 用于创建指标和警报、AWS IAM 用于安全访问日志以及 AWS CloudTrail 用于记录 AWS CloudWatch Logs 在 AWS 账户中的所有 API 活动。

其核心概念如下:
- 日志事件 :被记录的应用程序或资源捕获的任何活动的记录,包含时间戳和 UTF - 8 格式的事件消息。
- 日志流 :来自同一源(如应用程序或 EC2 实例)的一系列日志事件。
- 日志组 :多个共享相同属性(如保留期、策略、访问控制等)的日志流的组,每个日志流都是日志组的一部分,日志组也可以打标签。
- 指标过滤器 :用于从 CloudWatch Logs 摄入的日志数据中提取指标,分配给日志组,并应用于该日志组的所有日志流,一个日志组可以有多个指标过滤器。
- 保留策略 :定义在 CloudWatch Logs 中存储日志数据的保留策略,分配给日志组及其所属的日志流,日志数据过期后会自动删除,默认情况下,日志数据无限期存储,可设置 1 天到 10 年的保留期。
- 日志代理 :需要在 EC2 实例上安装 CloudWatch 日志代理,以自动将日志数据发送到 CloudWatch Logs,代理包含以下组件:
- CLI 插件,用于将日志数据推送到 CloudWatch Logs。
- 启动向 CloudWatch Logs 推送数据的脚本。
- 用于检查脚本是否按计划运行的 cron 作业。

CloudWatch Logs 也有一些限制:
- 一批数据的最大大小为 1 MB。
- 5 GB 的数据存档免费。
- 一个事件的最大大小为 256 KB。
- 每个账户、每个区域每秒可获取 10 个日志事件请求。
- 5 GB 的传入数据免费。
- 每个账户、每个区域最多可拥有 5000 个日志组(软限制,可联系 AWS 支持提高)。
- 每个日志组最多可拥有 100 个指标过滤器。
- 每个日志组可拥有一个订阅过滤器。

其生命周期通常从在 EC2 实例上安装日志代理开始,代理将数据发布到 CloudWatch Logs,成为日志组中日志流的一部分,日志流使用过滤器处理事件数据并为日志数据创建指标,日志组还可以有订阅以实时处理日志数据。

AWS 中的日志记录与审计(下)

5. AWS CloudTrail 详解

AWS CloudTrail 是一项全托管的审计服务,它以事件历史的形式捕获 AWS 账户中所有资源的 API 活动。简单来说,用户、角色或 AWS 服务执行的所有操作都会被该服务记录为事件,包括通过 AWS 管理控制台、CLI 工具、SDK、API 以及其他 AWS 服务进行的 API 调用。这些信息会存储在日志文件中,并可交付到 S3 进行持久存储。

5.1 CloudTrail 相关概念
  • CloudTrail 事件 :CloudTrail 在 AWS 账户中捕获的活动或操作记录。这些操作可由用户、角色或与 CloudTrail 集成以记录事件的任何 AWS 服务执行。这些事件能让你了解通过 AWS 管理控制台、CLI、AWS SDK 和 API 执行的所有操作的 API 以及非 API 活动历史。
  • CloudTrail 事件历史 :默认情况下,你可以获取过去七天的事件详细信息。你可以通过 CLI 或 AWS 管理控制台查看、搜索和下载这些详细信息,这些历史数据能让你深入了解用户或应用程序对 AWS 资源和服务的操作。
  • Trails :用于确保 CloudTrail 事件发送到预定义的 S3 存储桶、CloudWatch Logs 或 CloudWatch 事件。它是一个可配置项,用于过滤事件并将其交付到多个存储、监控和进一步处理的源。还可使用 AWS KMS 加密 CloudTrail 事件日志文件,并使用 Amazon SNS 设置事件日志文件交付的通知。每个区域最多可创建五个 trails。
5.2 访问和管理 CloudTrail

你可以通过以下方式访问和管理 CloudTrail:
- AWS 管理控制台 :提供了一个用户界面,可执行常见任务,如查看事件日志和事件历史、搜索和下载事件详细信息、创建或编辑 trail、配置 trail 的存储、通知、加密或监控。
- CLI、CloudTrail API 和 AWS SDK :可通过编程方式访问和管理 AWS CloudTrail。

5.3 访问控制

CloudTrail 与 IAM 集成,因此你可以控制 AWS 账户中访问 CloudTrail 的用户和权限。遵循 IAM 最佳实践授予访问权限,不共享凭证,对于所有编程访问使用角色而非用户,并在一段时间未访问服务时撤销访问权限。

5.4 AWS CloudTrail 生命周期
graph LR
    A[账户活动发生] --> B[CloudTrail 以事件形式捕获活动]
    B --> C[事件历史可供查看和下载]
    C --> D[配置 S3 存储桶存储事件历史]
    D --> E[CloudTrail 将事件日志发送到 S3 存储桶,并可选择发布到 CloudWatch Logs 和 CloudWatch 事件]
5.5 AWS CloudTrail 优势
  • 简化合规性 :可用于简化内部政策和监管标准的合规性审计。支持自动化事件日志存储和记录 AWS 账户中的所有活动,并与 AWS CloudWatch Logs 无缝集成,允许你搜索日志数据、为不符合合规政策的任何事件创建指标过滤器、发出警报并发送通知。这种自动化和集成有助于更快地解决事件调查,并更快地响应审计人员的请求。
  • 用户和资源活动可见性 :通过捕获每个 API 调用(包括登录 AWS 管理控制台),让你了解 AWS 账户中的用户和资源活动。对于每个捕获的调用,它会记录调用者、源 IP 地址、调用的服务、调用时间、执行的操作以及 AWS 资源的响应等信息。
  • 安全分析和故障排除 :使用 AWS CloudTrail 收集的信息,你可以快速、准确地排查 AWS 账户中的事件。还可以通过搜索和过滤特定时间段的事件来精确发现操作问题。
  • 安全自动化 :使用 AWS CloudTrail 事件日志,你可以为威胁 AWS 账户中应用程序和资源安全的事件和事件自动执行安全响应。这种自动化通过 AWS CloudTrail 与 AWS CloudWatch 事件的集成实现,帮助你定义安全漏洞检测和修复的全自动化工作流程。例如,当 CloudTrail 事件检测到弹性块存储(EBS)卷未加密时,你可以创建一个工作流程对其进行加密。
6. 总结

在 AWS 环境中,有效的日志记录和审计对于确保系统的安全性、合规性和性能至关重要。通过合理利用 AWS 提供的各种日志服务,如 AWS CloudTrail、AWS Config、AWS CloudWatch Logs 等,以及遵循日志记录的最佳实践,你可以更好地监控和管理 AWS 资源。

以下是对 AWS 主要日志服务的总结表格:
| 服务名称 | 主要功能 | 存储位置 | 用途 |
| ---- | ---- | ---- | ---- |
| AWS CloudTrail | 记录所有 API 活动 | 可存储在 S3 | 合规性审计、用户活动跟踪、安全分析 |
| AWS Config | 记录资源配置更改 | S3 | 资源配置审计、合规性证明 |
| AWS 详细计费报告 | 细分计费信息 | S3 | 成本分析、资源优化、计费对账 |
| Amazon S3 访问日志 | 记录 S3 存储桶访问请求 | S3 | 安全审计、使用情况分析 |
| ELB 日志 | 记录负载均衡器请求和连接信息 | 可配置 S3 | 安全和访问分析、性能监控 |
| Amazon CloudFront 访问日志 | 记录 CloudFront 分发的用户请求信息 | S3 | 安全和访问审计、性能验证 |
| Amazon RDS 日志 | 存储 RDS 数据库性能、访问和错误信息 | 可传输到 S3 或 CloudWatch Logs | 数据库安全、性能和操作分析 |
| Amazon VPC 流日志 | 捕获 VPC 网络接口的 IP 流量信息 | CloudWatch Logs | 审计、调试、网络流量分析 |
| AWS CloudWatch Logs | 监控、存储和处理日志 | 自身服务 | 多类型日志监控、指标和警报创建 |

通过了解和运用这些日志服务,你可以构建一个全面的日志管理和审计体系,为 AWS 环境的稳定运行提供有力保障。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值