0Pricing
AWS Solutions Architect · 课时

CloudTrail Insights 与日志文件完整性

启用 CloudTrail Insights 以检测异常 API 活动,并使用摘要文件验证日志文件完整性,用于取证分析

CloudTrail Insights 与日志文件完整性 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。

什么是 CloudTrail Insights

CloudTrail Insights 是一项可选功能,它使用机器学习自动检测 AWS 账户中的异常 API 活动。它会为每个 API 建立正常 API 调用速率和管理事件写入量的基线;当活动明显偏离该基线时,就会向您发出告警。Insights 事件会传送到与 Trail 日志相同的 S3 存储桶,也可以触发 EventBridge 规则以实现自动响应。

启用 CloudTrail Insights

CloudTrail Insights 按 Trail 启用。您可以选择检测 API 调用速率异常(每秒管理事件写入量异常)或 API 错误率异常(访问被拒绝或限流错误数量异常)。Insights 要求存在已启用管理事件的活动 Trail。除常规 Trail 事件费用外,AWS 还会针对 Insights 事件收费。Insights 需要 24–36 小时建立初始基线,之后才能开始检测异常。

# Enable CloudTrail Insights for API call rate and error rate anomalies
aws cloudtrail put-insight-selectors \
  --trail-name OrgAuditTrail \
  --insight-selectors \
    InsightType=ApiCallRateInsight \
    InsightType=ApiErrorRateInsight

# Verify insights configuration
aws cloudtrail get-insight-selectors \
  --trail-name OrgAuditTrail

理解 Insights 事件

Insights 事件包含开始事件和结束事件。异常开始时会触发开始事件——例如,TerminateInstances 调用次数突然异常激增;当 API 调用速率恢复正常时,会触发结束事件。每个 Insights 事件都包含受影响的 API、正常基线速率、观测到的峰值速率以及持续时间。这有助于您判断异常是持续性的攻击,还是短暂的突发活动。

# Search for Insights events in the last 30 days
aws cloudtrail lookup-events \
  --lookup-attributes AttributeKey=EventCategory,AttributeValue=insight \
  --start-time $(date -u -d '30 days ago' +%Y-%m-%dT%H:%M:%SZ) \
  --query 'Events[].{Time:EventTime,Name:EventName,Source:EventSource}' \
  --output table

Insights 在实际场景中检测的内容

CloudTrail Insights 会标记的常见异常包括:攻击者利用被盗密钥高速枚举所有 S3 存储桶的凭证泄露;配置错误的部署脚本循环调用 EC2 API 数千次;内部威胁以异常速度删除资源;或者 Lambda 函数突然发起异常 STS 调用的供应链攻击。与手动查看 CloudTrail 日志相比,Insights 能提供更快的检测窗口。

用于自动响应的 EventBridge 集成

CloudTrail Insights 事件会自动传送到亚马逊 EventBridge,从而支持自动响应。您可以创建 EventBridge 规则,在检测到 Insights 事件时触发 Lambda 函数——例如发送 Slack 消息、创建 Jira 工单,甚至在异常符合已知攻击模式时,自动撤销 IAM 用户的访问密钥。这样便能围绕 Insights 检测结果构建实时安全自动化流程。

# EventBridge rule to trigger Lambda when a CloudTrail Insights event fires
aws events put-rule \
  --name CloudTrailInsightsAlert \
  --event-pattern '{
    "source": ["aws.cloudtrail"],
    "detail-type": ["AWS Insight via CloudTrail"]
  }' \
  --state ENABLED

# Add Lambda as the target
aws events put-targets \
  --rule CloudTrailInsightsAlert \
  --targets Id=LambdaTarget,Arn=arn:aws:lambda:us-east-1:111122223333:function:SecurityResponder

日志文件完整性验证

日志文件完整性验证可确保 CloudTrail 日志文件传送到 S3 后未被修改、删除或伪造。启用此功能后(通过 --enable-log-file-validation),CloudTrail 每小时创建一个摘要文件,其中包含该小时内传送的所有日志文件的 SHA-256 哈希,以及上一个摘要文件的哈希。摘要文件本身使用 CloudTrail 的私钥签名。您可以使用 AWS CLI 的 validate-logs 命令验证日志。

# Enable log file validation when creating or updating a trail
aws cloudtrail update-trail \
  --name OrgAuditTrail \
  --enable-log-file-validation

# Validate log file integrity for a specific time range
aws cloudtrail validate-logs \
  --trail-arn arn:aws:cloudtrail:us-east-1:111122223333:trail/OrgAuditTrail \
  --start-time 2024-01-01T00:00:00Z \
  --end-time 2024-01-02T00:00:00Z \
  --verbose

摘要文件的工作方式

CloudTrail 每小时将一个摘要文件传送到 S3,其路径与日志文件分开(s3://bucket/CloudTrail-Digest/...)。摘要文件包含过去一小时内传送的每个日志文件的 SHA-256 哈希、每个文件的 S3 URI,以及上一个摘要文件的哈希,从而形成哈希链。如果攻击者在日志文件传送后修改了该文件,摘要中的哈希将不再匹配;验证会失败,并报告哪些文件遭到了篡改。

# View the structure of a CloudTrail digest file (JSON)
# {
#   "digestStartTime": "2024-01-01T00:00:00Z",
#   "digestEndTime": "2024-01-01T01:00:00Z",
#   "logFiles": [
#     {
#       "s3Bucket": "my-cloudtrail-logs",
#       "s3Object": "AWSLogs/.../CloudTrail/.../2024/01/01/file.json.gz",
#       "hashValue": "sha256:abc123...",
#       "hashAlgorithm": "SHA-256"
#     }
#   ],
#   "previousDigestHashValue": "sha256:xyz789..."
# }

保护审计 Trail 免遭篡改

只有在摘要文件和日志文件本身受到保护时,日志文件完整性才有价值。最佳实践包括:在 CloudTrail 存储桶上启用 S3 MFA Delete,使文件无法在没有 MFA 的情况下被删除;应用拒绝删除存储桶策略,防止任何主体删除对象;启用 S3 Object Lock(Compliance 模式)以实现不可变的日志保留;并使用组织 Trail,使成员账户无法禁用日志记录。这些控制措施结合使用后,内部人员几乎不可能删除审计证据。

# Deny-delete policy on the CloudTrail S3 bucket
# {
#   "Sid": "DenyDeleteCloudTrailLogs",
#   "Effect": "Deny",
#   "Principal": {"AWS": "*"},
#   "Action": [
#     "s3:DeleteObject",
#     "s3:DeleteObjectVersion"
#   ],
#   "Resource": "arn:aws:s3:::my-cloudtrail-logs-111122223333/*"
# }

Insights 与 GuardDuty:互补的服务

CloudTrail Insights 和亚马逊 GuardDuty 是互补服务,而不是重复服务。Insights 专注于 API 调用量异常——即特定管理 API 调用突然激增。GuardDuty 会分析更广泛的数据源,包括 CloudTrail 事件、VPC Flow Logs 和 DNS 日志,以检测威胁模式,例如凭证泄露、加密货币挖矿、数据外泄以及已知恶意 IP。为了实现纵深防御,请同时启用两者:Insights 用于基于调用量的异常检测,GuardDuty 用于基于威胁情报的检测。

在 CloudTrail 控制台中查看 Insights

在 CloudTrail 控制台中,Insights 选项卡会列出所有检测到的异常,包括开始和结束时间、API 名称,以及一张比较异常期间基线速率与观测速率的图表。点击 Insights 事件后,会直接链接到 Event History 中同一时间窗口内的相关管理事件,帮助您将“发生了异常”与“这些是导致异常的具体 API 调用”对应起来。这种深入查看的能力正是 Insights 能够发挥实际作用的原因。

合规使用场景

多项合规框架都要求进行日志文件完整性验证:PCI-DSS 要求证明审计日志未被更改;HIPAA 要求针对医疗数据采取可发现篡改的审计控制措施;SOC 2 要求对安全日志实施完整性控制。CloudTrail 日志文件验证、S3 Object Lock 与组织 Trail 结合使用,可以满足这些要求,并且在 AWS 合规文档中被广泛引用。当考试题目提到“证明日志未被篡改”时,答案就是日志文件完整性验证。

快速检查

请检验您对本课 AWS 解决方案架构师(SAA-C03)概念的理解。

课程回顾

在本课中,您学习了:CloudTrail Insights 使用机器学习检测异常的 API 调用速率和错误率,并生成开始/结束事件;日志文件完整性验证 使用哈希链中的 SHA-256 摘要文件来检测日志文件是否遭到篡改或删除;S3 Object Lock 与拒绝删除策略结合使用可保护审计 Trail 的完整性。接下来我们将学习 AWS Config 规则和自动修复。

常见问题解答

「CloudTrail Insights 与日志文件完整性」课时是免费的吗?

是的 — 「CloudTrail Insights 与日志文件完整性」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。

「CloudTrail Insights 与日志文件完整性」这节课中我会学到什么?

启用 CloudTrail Insights 以检测异常 API 活动,并使用摘要文件验证日志文件完整性,用于取证分析 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AWS Solutions Architect 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「CloudTrail Insights 与日志文件完整性」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AWS Solutions Architect 课中编写并运行代码吗?

能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. CloudTrail 跟踪与事件历史记录
  2. CloudTrail Insights 与日志文件完整性
  3. AWS Config 规则与修复
  4. 合规性数据包与组织级跟踪
← 返回 AWS Solutions Architect