轻量级AWS CloudTrail审计方案-阿里云(云淘科技)

本文主要介绍了使用日志服务搭建一套轻量级的AWS CloudTrail审计方案。

目标读者

在AWS上构建企业应用并且有企业安全合规审计需求的开发运维、安全运维人员。

需求背景

随着基于AWS构建的应用程序的扩展和日常管理的增加,企业的合规审计以及在AWS上的安全防护成为一项越来越复杂的任务。对于企业而言,时刻面临着云上的基础设施以及应用程序被攻击的可能,因此,监控AWS账户行为的操作、识别可能的恶意行为和检测可能的错误配置是企业安全合规的重要内容。AWS CloudTrai记录的审计日志信息为企业的安全合规提供了基础的数据,根据CloudTrail的审计日志就可以构建出企业的云上审计方案。

什么是CloudTrail

CloudTrail是AWS提供的一项服务,用于记录用户、角色和服务所执行的操作,这些操作包括在AWS控制台、AWS命令行界面、AWS开放工具包以及API中执行的操作。CloudTrail将这些操作记录为事件,通过在CloudTrail中创建一个Trail,就可以持续记录AWS账户的活动和事件,从而帮助用户对AWS账户进行监管、合规性以及运营和风险审计。事件类型在创建Trail时,用户可以选择记录管理事件、数据事件以及洞察事件,默认记录所有的管理事件。当AWS账户中发生事件时,CloudTrail会评估该事件是否与用户的Trail的配置匹配,只有匹配了的事件才会传送到Amazon S3存储桶。管理事件管理事件指AWS账户中对资源执行的管理操作,这包括读取、创建、删除和修改AWS的资产,例如EC2实例和S3存储桶。对于API活动,可以选择记录 AllRead-onlyWrite-only管理事件,如果不想记录AWS KMS 和Amazon RDS 数据 API 事件,可以选择排除这两种事件。数据事件数据事件指在创建的AWS资源内执行的数据请求操作,通常是一些涉及到大量数据活动的事件。创建Trail时默认不启动数据事件,因为它会产生额外的收费。在数据事件中,可以记录 Amazon S3 存储桶、AWS Lambda 函数、Amazon DynamoDB 表或这些表的组合的数据事件。洞察事件洞察事件指的是CloudTrail通过分析记录的管理事件,在识别出API调用相关的异常活动时记录的事件。洞察类型包括API调用率和API错误率,CloudTrail通过数学模型来确定账户的API事件的正常水平(称之为基线,在洞察事件开始前的7天内计算的),在调用率和错误率超出基线时就会生成洞察事件,并且投递到S3存储桶目标文件夹的/CloudTrail-Insight目录下。CloudTrail日志示例CloudTrail存储到S3的日志文件以JSON的格式编写,每个文件中包含一条或多条记录,如下所示为CloudTrail记录的一个示例事件,关于事件中每个字段的详细含义,可以参考CloudTrail record contents。{
“eventVersion”: “1.08”,
“userIdentity”: {
“type”: “IAMUser”,
“principalId”: “EX_PRINCIPAL_ID”,
“arn”: “arn:aws:iam::123456789012:user/Alice”,
“accountId”: “123456789012”,
“accessKeyId”: “EXAMPLE_KEY_ID”,
“userName”: “Alice”
},
“eventTime”: “2022-03-24T21:11:59Z”,
“eventSource”: “iam.amazonaws.com”,
“eventName”: “CreateUser”,
“awsRegion”: “us-east-2”,
“sourceIPAddress”: “127.0.0.1”,
“userAgent”: “aws-cli/1.3.2 Python/2.7.5 Windows/7”,
“requestParameters”: {“userName”: “Bob”},
“responseElements”: {“user”: {
“createDate”: “Mar 24, 2022 9:11:59 PM”,
“userName”: “Bob”,
“arn”: “arn:aws:iam::123456789012:user/Bob”,
“path”: “/”,
“userId”: “EXAMPLEUSERID”
}}
}这条日志显示了IAM用户Alice使用AWS CLI调用了CreateUser操作创建了名为Bob的新用户。对于CloudTrail记录的事件,包含了一些重要的字段,例如执行操作的AWS用户名称以及访问密钥ID(userIdentity字段),执行操作的详细信息(eventTime、eventSource和eventName字段)。对于管理事件和数据事件,日志还包含了requestParameters和responseElements来提供了执行操作的请求参数以及响应元素,通过响应元素可以帮助用户确认操作的执行情况,如果执行失败的话,日志中会包含errorCode和errorMessage两个字段来说明失败的原因。

方案架构

SLS导入CloudTrail数据的原理图如下所示,借助于SLS自研的任务调度框架,可以周期性地按照下图的流程拉取CloudTrail的数据。可以看到,在创建导入数据的任务之前,需要在AWS上进行相应地配置,能够使得当CloudTrail将记录的日志数据投递到S3后,可以发送事件通知到SQS,日志服务只需要持续轮询SQS中的队列,如果发现有新数据存储到S3中,那么就去S3中读取CloudTrail日志数据。这样的架构可以稳定地读取到CloudTrail记录的日志数据,并且由于SQS的缓冲,可以避免数据量陡增时带来的吞吐压力,再加上SLS任务调度框架的稳定高效,可以充分地保证数据的完整性和实时性。cloudtrail-architecture

方案优势

对于海量的审计数据,往往需要较大的存储成本。相对于一些商业化SaaS,例如DataDog、Sumo Logic等,SLS只需要极低的成本就可以开启CloudTrail的审计方案,例如每天写入1百万条日志,并且用户开启了智能冷热分层存储(热存设置为30天),那么用户一年的存储成本大约为253元(约39美元)。除了成本极低以外,使用SLS作为AWS CloudTrail的监控分析平台具有以下优势:

  • 集成了AWS CloudTrail审计应用,简化日志接入流程,提供一站式审计服务。
  • 免费提供查询、报表分析以及告警监控的功能,极低的存储成本。对于告警监控功能,只收取语音通知和短信通知费用。
  • 灵活、高性能的查询分析能力。支持PB级数据实时查询与分析,提供10多种查询运算符、10多种机器学习函数、100多个SQL函数,支持千亿级数据高性能分析,能够快速支撑审计场景下的查询监控。
  • 丰富的报表和告警内置规则,强大的智能告警系统。应用内置了开箱即用的仪表盘,包括总览、登录审计、S3数据事件、IAM审计、网络和安全审计报表,还内置了涵盖账号安全、多种AWS云产品操作合规以及API调用等关键方向的告警规则。另外,日志服务告警是一站式告警监控、降噪、事务管理、通知分派的智能运维平台,具有高可用和高可靠性。
  • SLS具有强大完善的开放平台能力。支持通过SDK/API查询消费,也提供开箱即用的组件与其他平台工具对接,包括数仓如MaxCompute和OSS等、流计算平台如Flink和Spark Streaming等、可视化框架如Grafana和DataV等。

方案实施

前提条件

已开通阿里云日志服务,并且需要在AWS上进行如下的准备工作:

  • 在CloudTrail中创建一个Trail,具体参考创建一个Trail。
  • 在SQS中创建一个Queue,具体参考创建一个队列。
  • 在第一步创建的Trail对应的S3 Bucket中,配置事件通知,目的地选择第2步创建的Queue,具体参考S3配置事件通知。
  • 记录下第二步的SQS中的Queue URL。
  • 操作步骤

    步骤一:进入AWS CloudTrail审计应用

    在日志服务控制台首页-日志应用-审计与安全中可以进入本应用,入口链接。AWS CloudTrail入口示意图

    步骤二:配置数据接入任务

    进入AWS CloudTrail审计应用后,在接入管理页面进行简单的配置就可以完成AWS CloudTrail审计的功能,导入任务的参数配置可以参考创建配置。AWS CloudTrail创建数据接入任务

    步骤三:探索CloudTrail日志-查询分析

    在导入CloudTrail日志的时候,SLS会自动根据CloudTrail日志的字段创建索引,因此用户可以直接在查询分析框内输入对应的查询分析语句来探索CloudTrail日志。下图所示为查询15分钟内所有事件名称为GetObject的日志,返回的内容包括查询到的符合条件的日志总条数以及原始日志。除了根据索引字段过滤和查询原始的CloudTrail日志,还可以利用SQL进行统计分析。下图所示为统计1天内每隔15分钟所产生的日志数量,并且以线图的形式将统计分析的结果展示出来。

    步骤四:数据可视化-查看安全审计报表

    AWS CloudTrail审计应用提供开箱即用的仪表盘,包括总览、登录审计、S3数据事件、IAM审计、网络和安全审计,用于分析和审计AWS账户的各类事件。下图所示为总览和S3数据事件的内置报表,更多信息可以参考查看数据报表。除了内置的报表以外,用户还可以根据自己的需求深度自定义报表,在查询分析页面将统计分析结果保存到仪表盘就可以完成报表的定制。

    • 总览报表
    • s3数据事件报表cloudtrail-s3-dataevent

    参考

    • AWS CloudTrail用户指南:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html
    • AWS CloudTrail审计应用:https://help.aliyun.com/document_detail/423442.html
    • 阿里云日志服务:https://help.aliyun.com/product/28958.html
    • 欢迎扫群加入阿里云-日志服务(SLS)技术交流或关注公众号,获取第一手资料与支持

    发表评论