轻量级AWS CloudTrail审计方案

2022-05-14 14:39 430 浏览

目标读者

在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-only或 Write-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上进行如下的准备工作:

  1. 在CloudTrail中创建一个Trail,具体参考创建一个Trail

  2. 在SQS中创建一个Queue,具体参考创建一个队列

  3. 在第一步创建的Trail对应的S3 Bucket中,配置事件通知,目的地选择第2步创建的Queue,具体参考S3配置事件通知

  4. 记录下第二步的SQS中的Queue URL。

操作步骤

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

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

AWS CloudTrail入口示意图


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

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

AWS CloudTrail创建数据接入任务


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

在导入CloudTrail日志的时候,SLS会自动根据CloudTrail日志的字段创建索引,因此用户可以直接在查询分析框内输入对应的查询分析语句来探索CloudTrail日志。下图所示为查询15分钟内所有事件名称为GetObject的日志,返回的内容包括查询到的符合条件的日志总条数以及原始日志。

image.png


除了根据索引字段过滤和查询原始的CloudTrail日志,还可以利用SQL进行统计分析。下图所示为统计1天内每隔15分钟所产生的日志数量,并且以线图的形式将统计分析的结果展示出来。

image.png


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

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

  • 总览报表

    image.png


  • s3数据事件报表

    cloudtrail-s3-dataevent




分享:
相关内容
  • 一天完成基于Serverless架构的头像漫画风处理小程序
  • Serverless 应用优化四则秘诀
    Serverless 架构下,虽然我们更多精力是关注我们的业务代码,但是实际上对于一些配置和成本也是需要进行关注的,并且在必要的时候,还需要根据配置与成本进行对我们的 Serverless 应用进行配置优化和代码优化。资源评估依旧重要Serverless 架构虽然是按量付费的,但是并不代表他就一定比传统的服务器租用费用低,如果我们对自己的项目评估不准确,对一些指标设置不合理,Serverless
  • 通过日志服务实现数据库MySQL入湖OSS实践
    目标读者需要将MySQL数据导入SLS或者OSS进行分析和存储的开发运维人员。方案背景日志服务(SLS)是云原生观测分析平台,为Log/Metric/Trace等数据提供大规模、低成本、实时平台化服务。一站式提供数据采集、加工、分析、告警可视化与投递功能。阿里云提供了企业级的数据湖解决方案,存储层基于阿里云对象存储OSS构建。日志服务支持开箱即用的OSS投递入湖功能,实现数据的端到端的
  • MySQL到SLS:一站式查询分析可视化场景介绍
  • 使用Terraform玩转SLS告警
相关推荐
阿里云
热门内容
  • 如何解决[Docker管理器]运行时发生错误!
    解决办法:返回主页,点击右上角修复。或者等待10分钟自主会修复!
  • 宝塔防火墙禁止境外访问,禁止境内访问讲解
    一、禁止境外访问,禁止境内访问简介首先说明一下:禁止海外访问--->禁止除大陆之外的地区访问禁止境内访问---> 禁止国内访问二、防御设置2.1 禁止海外访问 (全局开关+站点开关=开启)这里全局开关需要开启。这个开启只是说开启了全局的。如果需要网站开启需要在网站里面开启才能让网站禁止海外访问两边开启成功之后才是真正的给这个网站开启了禁止海外访问2.1 禁止境内访问 (
  • 如何解决宝塔安装出现"下载宝塔运行环境失败,请尝试...
    用的是阿里云服务器,安全组该放行的端口都放行了您好,您那边使用的是哪个地区的服务器呢?您那边执行下面命令绑定下hosts然后重新安装看下是否正常echo "36.133.1.8 www.bt.cn download.bt.cn api.bt.cn dg1.bt.cn dg2.bt.cn" >> /etc/hosts
  • bt宝塔Nginx反向代理详细图文教程
    概念:反向代理:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。(
  • 如何解决ubuntu20.04编译安装nginx失败
Tags标签
联系方式