AWS CloudTrail 可观测最佳实践

AWS CloudTrail

AWS CloudTrail 是亚马逊云服务(AWS)提供的一项日志管理服务,主要用于记录和监控 AWS 账户中的所有 API 活动,包括用户操作、AWS 服务之间的交互以及来自控制台、CLI、SDK 等渠道的请求。它会捕获这些活动的详细信息,如操作类型、发起者身份、时间、资源影响等,并将日志数据以事件形式存储在 Amazon S3 桶中,同时支持与 Amazon CloudWatch 等服务集成以实现实时告警和分析。CloudTrail 可以帮助用户满足合规审计需求、追踪资源变更、排查安全问题,以及实现对 AWS 环境的全面可见性和治理,是保障云环境安全性和可追溯性的核心工具之一。

观测云

观测云是一个统一实时监测平台,它提供全面的系统可观测性解决方案,帮助用户快速实现对云平台、云原生、应用及业务的监控需求。观测云的核心功能包括:基础设施监测,日志采集和分析,用户访问监测(RUM),应用性能监测(APM),服务可用性监测(拨测),安全检测(SIEM),智能监控等等。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用服务的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

AWS CloudTrail 日志采集

1、日志采集方式

  • 将 AWS CloudTrail 日志写入 S3 存储桶
  • S3 触发 Event 调用 Lambda 函数,通过 Datait 或者 DataWay 将数据上报到观测云平台(推荐通过 DataWay 直接上传,本文将主要介绍这种方式)

2、配置开通 CloudTrail

要将 AWS CloudTrail 日志写入 S3 存储桶,可按以下步骤配置开通:

  1. 创建 S3 存储桶:在 AWS 管理控制台进入 S3 服务,创建一个专用存储桶(建议使用唯一名称并启用版本控制),确保桶策略允许 CloudTrail 写入日志(可在创建跟踪时自动生成策略)。
  2. 创建 CloudTrail 跟踪:进入 CloudTrail 控制台,点击"创建跟踪",设置跟踪名称,选择"应用于所有区域"或指定区域。
  3. 配置日志存储:在"存储位置"中选择"现有 S3 存储桶"或创建新桶,指定存储桶名称。
  4. 设置高级选项(可选) :如启用多区域跟踪、配置日志文件验证、设置 CloudWatch Logs 集成等。
  5. 完成创建 :确认配置后点击"创建跟踪",系统会自动向指定 S3 存储桶授予必要权限,后续 CloudTrail 捕获的 API 活动日志将写入该桶(路径格式通常为 AWSLogs/<账户ID>/CloudTrail/<区域>/<年份>/<月份>/<日期>/ )。

配置完成后,可在 S3 存储桶中查看生成的日志文件,这些文件以 JSON 格式存储,包含详细的 API 调用记录。

3、创建 Lambda 函数

  1. 打开 Lamba 控制台的函数页面。
  2. 选择创建函数
  3. 选择从头开始创作
  4. 输入函数名称
  5. 设置 运行时 选项为 Python 3.10
  6. 在 Execution Role(执行角色)中,Lambda 创建执行角色,该角色授予函数上载日志到 Amazon CloudWatchlogs 的权限。在您调用函数时,Lambda 函数担任执行角色,并使用该执行角色为 Amazon 软件开发工具包创建凭证和从事件源读取数据,lambda 权限如下:
yaml 复制代码
  logs: CreateLogGroup 
  logs: CreateLogStream 
  logs: PutLogEvents 
  lambda: * AmazonS3ReadOnlyAccess
  1. 点击创建函数 8. 在 GitHub 中拉取同步代码至下方代码源中将 lambda-forward.py 内容复制到 lambda-function.py

  2. 在将 lambda-function.py 相同目录下新建 setting.pydatakit.pydataway.py 文件,并将 GitHub 中相应文件代码复制进去

  3. 添加环境变量,以下是必要的配置

  • DATAKIT_IP: datakit 部署的 ip 地址,上报数据源为 datakit
  • DATAKIT_PORT: datakit 服务端口,上报数据源为 datakit
  • DATAWAY_URL: dataway URL (Eg: xx-openway.xxx.com) 上报数据源为 dataway
  • WORKSPACE_TOKEN: 工作空间 Token,上报数据源为 dataway

注意:上报数据源 datakit 与 dataway 必选一个,选择 datakit 请配置DATAKIT_IP, 选择 dataway 请配置DATAWAY_URL、WORKSPACE_TOKEN

  1. 如果 datakit 端口不是默认的 9529 可添加环境变量 DATAKIT_PORT 填写为正确的端口地址(此变量非必填
  2. 点击 Deploy 发布

4、配置 Lambda 触发器

  1. 点击 添加触发器
  2. 设置选择一个源S3
  3. 选择需要监听的 bucket
  4. 选择要触发 Lambda 函数的事件 Event types
  5. 同意 我承认不推荐对输入和输出使用相同的 S3 bucket,并且这种配置可能导致递归调用、增加 Lambda 使用和增加成本
  6. 点击添加

5、查看 CloudTrail 日志

在观测云的日志查看器,可以通过 source:cloudtrail 来进行搜索。

CloudTrail 日志解析

事件类型

CloudTrail 会记录管理事件、数据事件、网络活动事件和 Insights 事件。例如:

  • 管理事件:也称为控制面板操作,是对 AWS 账户中的资源执行的管理操作,例如创建、修改或删除 Amazon S3 存储桶、启动或终止 Amazon EC2 实例等。同时,还包括非 API 事件,如用户登录账户的控制台登录事件。
  • 数据事件:即数据层面操作,是对资源本身或在资源内执行的操作,通常是高容量活动。例如 Amazon S3 对象级别 API 操作(如 GetObject 和 PutObject)、Amazon Lambda 函数调用 API、Amazon DynamoDB 项目级别 API 操作等,可记录对特定 DynamoDB 表中项目的创建、读取、更新或删除操作。
  • 网络活动事件:用于记录使用 VPC 端点从私有 VPC 到 AWS 服务执行的 API 操作,包括成功通过 VPC 端点策略的 AWS API 调用和被拒绝访问的调用。VPC 端点所有者可通过该日志查看因 VPC 端点策略而被拒绝的操作日志,或确定数据边界之外的行为者是否尝试访问 S3 存储桶中的数据。
  • 洞察事件:CloudTrail Insights 会持续分析 CloudTrail 管理事件,当检测到与写入 API 调用相关的异常活动时,会记录 Insights 也就是洞察事件,并将其传送到目标 S3 存储桶、CloudWatch Events 或 CloudWatch Logs 组,以便用户跟踪和响应异常情况。

事件的详细信息可以参考 AWS 文档:docs.aws.amazon.com/zh_cn/awscl...

日志字段解析

观测云已内置了 CloudTrail 日志解析,可以在【日志】 - 【Pipelines】 - 【Pipeline 官方库】 - 选择 CloudTrail ,添加类型为 中心 Pipeline,保存即可,对新上报数据生效。

日志解析之后,可在查看器中查看扩展字段,并可以根据这些字段快速搜索,或聚类分析。例如:每个 CloudTrail 事件日志都包含一个 userIdentity 元素,描述执行操作的用户或服务。在该元素中,type 字段描述请求是由哪种类型的用户或服务发出的,以及该用户或服务用于发出请求的凭据级别。CloudTrail userIdentity 类型主要包括以下几类:

  • Root:该请求是使用您的主 AWS 账户凭证发出的。如果您为 AWS 账户设置了别名,则该别名将显示在此处。
  • IAMUser:该请求是使用 IAM 用户的凭证发出的。
  • FederatedUser:该请求是由用户通过联合令牌提供的临时安全凭证发出的。
  • AWSAccount:该请求是由第三方 AWS 账户发出的。
  • AWSService:该请求是由 AWS 服务账户发出的。许多 AWS 服务都使用服务账户代表您执行自动化操作。
  • AssumedRole:该请求是使用通过 AWS 安全令牌服务 (STS) AssumeRole 操作获取的临时凭证发出的。

有关 CloudTrail 事件记录字段的详细信息描述,可以参考 AWS 的文档:docs.aws.amazon.com/zh_cn/awscl...

场景视图

登录观测云控制台,点击【场景】->【新建仪表板】,输入 "CloudTrail", 选择 "AWS CloudTrail 日志分析视图",点击 "确定" 即可添加视图。

为了有效地进行安全审计、故障排查和合规性监控,AWS CloudTrail 日志分析视图重点关注基于以下资源类型的日志非常重要,因为大多数威胁都源自这些地方。您也可以根据自身的业务需求进行调整配置。

  • 用户账户
  • 存储桶
  • 网络组件

同时,对于一些进行了日志条件配置的视图,您可以点击视图 -> 查看相关日志,可以直接跳转到日志查看器,进行相关日志的查看:

SIEM 安全监测

针对 CloudTrail 日志的监控告警,可以通过 SIEM (安全信息和事件管理)。观测云的 SIEM 通过高性能日志分析引擎,帮助您从海量日志数据中即时识别潜在的攻击行为:异常登录、配置变更、跨账户访问等安全问题。观测云 SIEM 功能的核心理念是将安全事件视为一种特殊的、需要被观测的数据。它整合了 AWS CloudTrail 等多个数据源,并利用其强大的数据处理和分析能力,提供了一站式的安全监控和分析平台。

观测云提供了丰富的、基于最佳实践的内置安全规则,即官方检测库,涵盖了多种常见的安全威胁场景:

  • 高危操作监控:例如,监控根用户(Root User)的登录或 API 调用、用户删除关键资源(如数据库、S3 存储桶)等。
  • 异常行为检测:例如,检测来自未知 IP 地址的登录、短时间内频繁的 API 调用失败(可能是暴力破解或权限枚举)、或者特定端口被非授权访问等。
  • 策略违规检测:例如,监控 AWS IAM 策略的变更、S3 存储桶被设置为公开访问等。

您可以点击【安全监测】-> 安全事件管理 SIEM 下的【检测规则】,点击右上角的【官方检测库】进行添加。

总结

观测云对 AWS CloudTrail 的日志分析是一个端到端的、高度集成的过程:首先,可以通过 S3 存储桶实时、完整地采集日志;接着,利用其强大的能力自动解析原始 JSON 格式,将关键字段转化为可查询的标签;随后,您可以借助内置或自定义的仪表盘对账户活动进行可视化分析,快速掌握全局概览;最后,通过观测云的 SIEM 功能,您利用内置的安全规则和实时告警,将日志从被动查询转变为主动威胁检测,实现从数据到洞察,再到行动的闭环。

相关推荐
TG_yunshuguoji1 天前
亚马逊云渠道商:本地SSD缓存如何保障数据安全?
运维·服务器·安全·云计算·aws
TG_yunshuguoji1 天前
亚马逊云渠道商:如何通过配置自动替换构建故障自愈的云架构?
运维·服务器·架构·云计算·aws
TG_yunshuguoji1 天前
亚马逊云渠道商:AWS 本地 SSD 缓存是什么?
缓存·云计算·aws
运维行者_1 天前
AWS云服务故障复盘——从故障中汲取的 IT 运维经验
大数据·linux·运维·服务器·人工智能·云计算·aws
王道长服务器 | 亚马逊云1 天前
AWS Systems Manager:批量服务器管理的隐藏利器
linux·网络·云计算·智能路由器·aws
亚林瓜子1 天前
给aws xray添加采样规则
aws·1024程序员节·xray·rule
TG_yunshuguoji2 天前
亚马逊云渠道商:AWS实例自动替换策略在哪里设置?
运维·服务器·云计算·aws
电话交换机IPPBX-3CX3 天前
电话交换机 3CX 数据存储在 AWS S3 的配置文档
aws·亚马逊·ippbx·电话交换机
thinktik3 天前
AWS EKS安装S3 CSI插件[AWS 海外区]
后端·kubernetes·aws