Amazon SCS-C02: 日志、审计与取证 — 学习指南

属于 AWS Security Specialty SCS-C02 — 学习指南. 使用经过验证的答案练习: Amazon 考试中心, 或参加限时模拟考试: ExamRoll.io.

Amazon GuardDuty 检测结果与修复

GuardDuty 是一项托管的威胁检测服务,它在后台持续接收三种遥测流:CloudTrail 管理事件(以及可选的 S3 数据事件)、VPC Flow Logs 和 Route 53 DNS 查询日志。您无需为 GuardDuty 单独启用、交付或支付这些日志源的费用——该服务直接读取一个重复的数据流。这就是为什么 GuardDuty 只需一个 API 调用即可开启,并在几分钟内开始生成检测结果,而无需任何日志管道工程。

检测结果的严重性值在 0.1 到 8.9 之间,分别对应低(0.1–3.9)、中(4.0–6.9)和高(7.0–8.9)。典型的可操作检测结果包括 UnauthorizedAccess:EC2/SSHBruteForceBackdoor:EC2/C&CActivity.B!DNSCryptoCurrency:EC2/BitcoinTool.BRecon:IAMUser/MaliciousIPCaller。修复模式因检测结果而异:基于 EC2 的入侵通常需要使用隔离安全组来隔离实例,为取证快照卷,然后终止实例;基于 IAM 的检测结果则需要轮换访问密钥并审查该主体近期的 CloudTrail 活动。

对于多账户环境,请通过 AWS Organizations 启用 GuardDuty,并指定一个委派管理员账户(通常是安全工具账户)。委派管理员可以在已开启该服务的每个区域中,为所有现有和新增的成员账户自动启用 GuardDuty。若不进行委派管理员配置,每个账户的 GuardDuty 检测结果将隔离在各自的成员账户中——单独启用检测器并不会将它们集中聚合。

AWS Security Hub 与跨账户聚合

Security Hub 是规范化和聚合层。它接收来自 GuardDuty、Inspector、Macie、IAM Access Analyzer、Firewall Manager、Config 以及数十个合作伙伴产品的检测结果,并将它们转换为 AWS 安全检测结果格式(ASFF)。它还根据 CIS AWS Foundations、AWS 基础安全最佳实践、PCI DSS 和 NIST 800-53 等标准运行自己的控制项。

跨账户、跨区域的聚合方式与 GuardDuty 相同:将 Security Hub 注册到 Organizations 的委派管理员,然后指定一个聚合区域,以便其他区域的检测结果能复制到这单一窗格中。一个常见的错误是在每个账户中都启用 Security Hub,并期望获得一个整合视图——如果没有委派管理员和聚合区域的配置,每个账户仍然只能看到自己的检测结果。

Security Hub 本身不发送电子邮件。通知和自动化是通过在默认的 EventBridge 总线上匹配 Security Hub 检测结果事件,并将其转发到 SNS、Lambda、Step Functions 或 Systems Manager Automation 文档来构建的。

CloudTrail:管理事件 vs. 数据事件

CloudTrail 记录两类活动,混淆这两者是检测覆盖范围中最常见的单一缺口。

如果一个安全要求是“检测到有人通过 PutObjectAcl 将 S3 对象公开”,一个普通的管理事件跟踪将无法捕获它,因为对单个对象的 ACL 更改是数据事件。同样,如果没有数据事件,从敏感存储桶中 GetObject 的数据流出也是不可见的。PutBucketAcl(存储桶级别)是一个管理事件,会被记录;PutObjectAcl(对象级别)则不是。

使用在管理账户或委派管理员账户中创建的组织跟踪,这样每个成员账户的事件都会被捕获到单个 S3 存储桶中,并且成员账户中的主体无法禁用它。通过以下方式保护该跟踪:

创建示例:

aws cloudtrail create-trail \
  --name org-trail \
  --s3-bucket-name central-ct-logs \
  --is-organization-trail \
  --is-multi-region-trail \
  --enable-log-file-validation \
  --kms-key-id arn:aws:kms:us-east-1:111122223333:key/abcd-...

aws cloudtrail put-event-selectors \
  --trail-name org-trail \
  --event-selectors '[{"ReadWriteType":"All","IncludeManagementEvents":true,
                       "DataResources":[{"Type":"AWS::S3::Object",
                                         "Values":["arn:aws:s3:::sensitive-bucket/"]}]}]'

EventBridge 与 SNS 警报

EventBridge 是连接检测结果与人工和自动响应者的路由结构。每个 GuardDuty 检测结果、每个 Security Hub 检测结果更新以及每个源自 CloudTrail 的事件都会到达默认事件总线。规则使用 JSON 事件模式进行筛选,然后扇出到一个或多个目标(SNS、Lambda、SQS、Kinesis Data Firehose、Step Functions、Systems Manager)。

一个将高严重性 GuardDuty 检测结果同时转发到用于电子邮件的 SNS 主题和用于分析并馈送到 OpenSearch 的 Firehose 交付流的典型模式:

{
  "source": ["aws.guardduty"],
  "detail-type": ["GuardDuty Finding"],
  "detail": { "severity": [ { "numeric": [ ">=", 7 ] } ] }
}

将 Security Hub CRITICAL 级别的检测结果路由到电子邮件:

{
  "source": ["aws.securityhub"],
  "detail-type": ["Security Hub Findings - Imported"],
  "detail": {
    "findings": {
      "Severity": { "Label": ["CRITICAL"] },
      "Workflow": { "Status": ["NEW"] }
    }
  }
}

电子邮件终端节点是一个简单的 SNS 订阅;订阅者必须通过电子邮件中的链接进行确认,交付才会开始。单个规则最多可以有五个目标,因此警报和下游分析不需要重复的规则。

在编写模式时,请记住 CloudTrail 管理事件到达时带有 "detail-type": "AWS API Call via CloudTrail",而数据事件不会出现在默认总线上,除非您配置一个将日志发布到 CloudWatch Logs 的跟踪,并使用指标筛选器或通过 EventBridge 的 CloudTrail 数据事件集成进行订阅。如果在未启用数据事件的情况下,在默认总线上编写一个匹配 "eventName": "PutObjectAcl" 的 EventBridge 规则,会产生零匹配。

CloudWatch Logs、Insights、指标筛选器和警报

将 CloudTrail(以及 VPC Flow Logs 和应用程序日志)发送到 CloudWatch Logs 可以实现近乎实时的检测。指标筛选器 (Metric filters) 会根据模式扫描每个传入的日志事件,并为一个自定义的 CloudWatch 指标增量;基于该指标的 CloudWatch 警报 (CloudWatch alarm) 会触发 SNS。

示例:针对重复的控制台登录失败设置警报。

aws logs put-metric-filter \
  --log-group-name /aws/cloudtrail/org \
  --filter-name ConsoleSignInFailures \
  --filter-pattern '{ ($.eventName = "ConsoleLogin") && ($.errorMessage = "Failed authentication") }' \
  --metric-transformations metricName=ConsoleLoginFailures,metricNamespace=Security,metricValue=1

CloudWatch Logs Insights 提供使用专用查询语言的即席查询功能,这在警报触发后进行事件响应时非常有用:

fields @timestamp, userIdentity.arn, sourceIPAddress, eventName

常见陷阱

实践问题:用例场景

场景: Meridian Financial 公司运营着一个多账户的 AWS Organization,其中包含一个专用的安全账户和一个集中的日志记录账户。他们的环境中,S3 存储着客户的个人身份信息 (PII),EC2/Lambda 上运行着事务性 API,并且 CloudTrail 已经将管理事件写入一个中央 S3 存储桶;团队希望实现更快的检测和跨账户的协同响应。

挑战: 安全工程师检测到 S3 GET 操作突然激增,以及相关的 GuardDuty 调查发现表明可能存在数据泄露,但告警信息过多且缺乏关联的 CloudTrail 上下文和跨账户的自动遏制措施。

推荐方法:

  1. 在每个成员账户中启用 Amazon GuardDuty,并将安全账户指定为 GuardDuty 的委托管理员;启用 S3 数据事件保护,以便调查发现中包含对象级别的访问异常。
  2. 为每个账户配置 CloudTrail,将管理事件传送到中央 S3 存储桶以供留存,并将选定的高价值数据事件(S3 GetObject/PutObject/DeleteObject 和 Lambda Invoke)转发到安全账户中的 CloudWatch Logs,以进行低延迟检查。
  3. 在安全账户中开启 AWS Security Hub,并启用与成员账户的跨账户聚合,以便将 GuardDuty 调查发现、源自 CloudTrail 的调查发现以及 Config/Inspector 的结果进行集中和规范化处理。
  4. 创建 EventBridge 规则,匹配高严重性的 GuardDuty 和 Security Hub 调查发现,并将它们路由到 SNS 以发送告警通知,同时路由到一个修复 Lambda,该 Lambda 利用 CloudTrail 上下文采取遏制措施(撤销 API 密钥、移除 IAM 会话、隔离 EC2 ENI)。
  5. 添加 CloudWatch Logs 指标筛选器,用于检测按 IAM 主体范围划分的异常 s3:GetObject 速率,并设置一个警报来触发相同的 EventBridge/SNS/Lambda 管道;在安全账户中使用 CloudWatch Logs Insights 查询,通过关联的 CloudTrail 事件来丰富告警信息,以进行事件分类。

基本原理: 集中化调查发现(GuardDuty + Security Hub)并将目标 CloudTrail 数据事件发送到 CloudWatch,可以通过 EventBridge/SNS/Lambda 实现低延迟的关联、告警和自动遏制——这与 AWS 在检测、跨账户聚合和自动响应方面的最佳实践相一致。

集中的 CloudTrail 与日志完整性

CloudTrail 是 AWS API 活动的权威记录,任何审计架构的基础都是一个单一的多区域跟踪 (multi-Region trail),它将日志传送到一个集中的 S3 存储桶,理想情况下该存储桶位于 AWS Organizations 内一个专用的日志归档账户中。多区域跟踪会自动捕获当前每个区域以及 AWS 未来推出的任何新区域中的管理事件——而单区域跟踪一旦有工作负载在其他地方启动,就会产生盲点,这是审计过程中典型的完整性失败。当在组织层面应用时,该跟踪还会捕获每个成员账户的事件,因此新加入组织的账户无需任何单账户配置即可被覆盖。

在跟踪上启用日志文件验证。启用后,CloudTrail 每小时会向同一个 S3 存储桶传送一个签名的摘要文件,其中包含已传送日志文件的 SHA-256 哈希值。aws cloudtrail validate-logs 命令会遍历摘要链并检测篡改、删除或间断。如果没有验证,防御方无法证明日志在事后未被更改,这将使其作为法庭证据失效。

aws cloudtrail create-trail \
  --name org-trail \
  --s3-bucket-name corp-audit-logs \
  --is-multi-region-trail \
  --is-organization-trail \
  --enable-log-file-validation \
  --kms-key-id arn:aws:kms:us-east-1:111122223333:key/abcd-...
aws cloudtrail start-logging --name org-trail

传送失败几乎总是下游的权限问题,而不是 CloudTrail 的缺陷。S3 存储桶必须在创建跟踪之前就存在,其存储桶策略必须授予 cloudtrail.amazonaws.com s3:PutObject 权限,并带有与该跟踪匹配的 aws:SourceArn 条件,并且对象所有者必须是存储桶所有者 (bucket-owner-full-control)。如果跟踪使用 SSE-KMS,CMK 策略必须为 CloudTrail 服务主体允许 kms:GenerateDataKey*并且每个使用者(Athena、安全工程师、Lambda 解析器)都必须拥有对该密钥的 kms:Decrypt 权限。一个常见的故障模式是:日志传送正常,但 Athena 查询返回 “AccessDenied”,因为查询角色缺少对日志加密 CMK 的 Decrypt 权限。应通过修改密钥策略来修复此问题,而不是禁用加密。

CloudWatch Logs、指标筛选器和实时警报

CloudTrail 以 5 到 15 分钟的批次将日志交付到 S3——这对于回顾性审计来说足够了,但对于实时检测来说太慢。要对敏感事件进行警报,可以将跟踪日志流式传输到 CloudWatch Logs(一个跟踪选项),或通过 EventBridge 路由特定事件。CloudWatch Logs 方法使用指标筛选器 (metric filters),它通过模式匹配 JSON 事件并递增一个 CloudWatch 指标,该指标进而驱动 CloudWatch 警报和 SNS 通知。典型的例子是根用户控制台登录:

{ $.eventName = "ConsoleLogin" && $.userIdentity.type = "Root" }

对于范围狭窄、众所周知的事件(如 KMS 密钥禁用、IAM 策略变更),EventBridge 通常是更好的选择,因为其规则可以直接触发 Lambda 或 Step Functions,而不会产生任何 Logs 成本。当您需要聚合计数或仪表板展示时,请使用指标筛选器。

CloudWatch Logs 的保留期默认为永不过期 (Never Expire),这成本高昂且很少是正确的选择。应根据合规性制度为每个日志组设置明确的保留策略(aws logs put-retention-policy)——通常是在 CloudWatch 中保留 90 天热数据,并通过订阅筛选器或 Kinesis Data Firehose 在 S3 中进行长期归档。

为了保障敏感数据的卫生,应在账户级别应用 CloudWatch Logs 数据保护策略。这些策略使用托管数据标识符(如信用卡号、AWS 密钥、SSN)在摄取时屏蔽匹配的字符串。至关重要的是,取消屏蔽需要 logs:Unmask 权限;仅应将此权限授予“紧急破窗”角色。能够读取日志组但缺少 Unmask 权限的用户只能看到星号。账户范围的策略适用于所有当前和未来的日志组,这是正确的控制方式——随着新服务创建新组,按组设置的策略会产生偏差。

大规模日志查询:Insights 和 Athena

两种查询引擎针对不同层级的数据。

一个典型的取证用例是:识别谁禁用了某个 KMS 密钥。由于 CloudTrail JSON 是嵌套的,由 CloudTrail 创建的 Athena 表将 userIdentity 公开为一个结构体 (struct):

SELECT eventTime,
       userIdentity.arn                                         AS principal,
       userIdentity.sessionContext.sessionIssuer.arn            AS assumed_role,
       userIdentity.sessionContext.attributes.mfaAuthenticated  AS mfa,
       sourceIPAddress,
       requestParameters
FROM   cloudtrail_logs
WHERE  eventName = 'DisableKey'
  AND  eventTime BETWEEN '2024-05-01T03:00:00Z' AND '2024-05-01T03:30:00Z';

对于 ALB 机器人分析,可以启用 ALB 访问日志到 S3,在日志前缀上定义一个 Athena 表,然后与一个已知恶意 IP 的表进行连接,并在 QuickSight 中可视化聚合结果。QuickSight 从 Athena 读取数据,因此这个管道是:ALB → S3 → Athena → QuickSight。将 ALB 日志发送到 CloudWatch Logs Insights 不是一个受支持的原生路径——ALB 日志只能发送到 S3。

VPC Flow Logs 可以发送到任一目的地:对于 filter dstPort=3389 and action="REJECT" 这类战术性调查,选择 Logs;对于月度规模的趋势查询,选择 S3(使用 Parquet 格式并分区)。

Audit Manager 证据收集

AWS Audit Manager 自动化了持续的证据收集过程,并将其映射到 PCI DSS、HIPAA、SOC 2 和 CIS 等框架。它从 Config 规则、Security Hub 发现结果、CloudTrail 事件和资源清单中提取证据,并将其打包到控制评估中。在 Organizations 管理账户或委托管理员账户中启用时,它会跨所有成员账户收集证据,并生成一份评估报告——一个包含清单的证据压缩包——审计员会接受它来代替手动截图。当场景要求持续、多账户、与框架对齐的证据时,这便是正确答案:单独使用 Config 只能提供资源合规性,但没有框架映射;Security Hub 提供发现结果,但没有评估打包功能;自制的 Athena 报告不是持续性的。

易错点回顾

实践问题:用例场景

场景: Meridian Financial 公司运行一个多账户的 AWS Organization,其中包含生产、预发布和一个专用的日志记录账户。他们的环境托管了面向客户的 API、分析系统以及由 IAM 管理的密钥,并且他们需要集中化、防篡改的日志记录以及快速调查工具,以支持事件响应和合规性请求。

挑战: 最近一系列可疑的控制台登录和 IAM 策略变更在数小时内未被发现,并且有人担心日志完整性和及时告警不足以支持取证重建和 Audit Manager 的证据收集。

推荐方法:

  1. 在所有区域启用 AWS Organizations CloudTrail(组织跟踪),开启 CloudTrail 日志文件完整性验证,将日志和摘要文件交付到集中的 S3 存储桶,该存储桶使用 KMS CMK 加密,其密钥策略将解密权限限制给一个小的安全团队,并启用 S3 访问日志记录和版本控制。
  2. 配置 CloudTrail 将管理事件和选定的数据事件流式传输到 CloudWatch Logs,然后为高风险模式(例如来自新 IP 的控制台登录失败、CreateUser、PutRolePolicy)创建 CloudWatch Logs 指标筛选器,并将 CloudWatch Alarms 附加到 SNS 主题,用于发送告警通知和触发自动化的 Lambda playbook。
  3. 部署 CloudWatch Logs Insights 控制面板,用于对近期事件进行交互式调查,并在日志记录账户中设置保留和生命周期规则,以根据策略保留证据。
  4. 使用 AWS Glue 对 CloudTrail S3 对象进行编目,并运行 Athena 查询(按区域/日期/服务分区)以进行大规模的回溯性分析,并为调查人员生成 CSV 格式的证据导出文件。
  5. 创建一个 AWS Audit Manager 评估,自动将 CloudTrail、AWS Config 和 IAM 的证据收集到一个证据文件夹中,并为合规审查员安排定期导出。

基本原理: 集中化和验证 CloudTrail,流式传输到 CloudWatch 以实现实时指标筛选和告警,以及使用 Athena/Logs Insights 进行可扩展查询,这些都遵循了 AWS 在检测、不可变日志记录和取证准备方面的最佳实践,而 Audit Manager 则为审计自动化了证据收集过程。


威胁检测与告警 · 所有领域 · 加密、KMS 与密钥

练习这些题目 → · 在 ExamRoll.io 上限时练习 →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

通过考试 →

浏览 Amazon →

Related guides

一体化访问

一次订阅。所有考试。

所有计划均可无限制搜索答案、进行模拟测试、获取AI解释以及访问完整的资源库 — 支持20多种语言。

每月
24.87
Just €0.83/day
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

最具价值
12个月
179.87
Just €0.49/daySave 40%
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

✓ 包含免费计划 · ✓ 随时取消 · ✓ 所有计划均解锁完整产品