使用 Amazon QuickSight 仪表盘对亚马逊云科技账户中的操作进行审计和监控

从 AWS CloudTrail Lake 中提取亚马逊云科技账户中的特定操作事件,并创建 Amazon QuickSight 仪表盘以可视化和监控这些事件。


Amazon QuickSight
Amazon Athena
AWS CloudTrail
AWS Glue
教程
亚马逊云科技
Olawale Olaleye
难度
100 - 初级
时间
20 分钟
前提条件

海外区域: 注册 / 登录 亚马逊云科技
中国区域: 注册 / 登录 亚马逊云科技

上次更新时间
2024 年 6 月 25 日

引言

对几乎所有在亚马逊云科技上运行工作负载的客户而言,安全性与合规性始终是重中之重。确保您在亚马逊云科技中的工作负载安全且合规是我们共同的责任。您可以利用多种亚马逊云科技服务来监控和审计亚马逊云科技中的工作负载和操作。在本篇教程中,我们将介绍如何利用 AWS CloudTrail Lake 的 SQL 查询功能创建实用的 Amazon QuickSight 仪表盘,从而监控亚马逊云科技账户中的操作。

已经有数百万用户选择使用 AWS CloudTrail 来进行亚马逊云科技账户的操作、风险审计、管理以及合规性检查。您的亚马逊云科技账户中的任何活动都会被 AWS CloudTrail Event 记录下来。AWS CloudTrail Lake 还使我们能够使用熟悉的 SQL 查询语言查询这些事件。这项功能非常实用,因为您可以通过高效设计查询来轻松筛选出对您至关重要的数据和指标。AWS CloudTrail Lake 预置了一组数量庞大且实用的示例查询供您借鉴参考。此外,您还可以通过自定义查询来获取您需要的信息。

在本教程中,我们将介绍如何使用 AWS Glue Data Catalog 和 Amazon Athena 从 AWS CloudTrail Lake 事件中提取相关信息,并在 Amazon QuickSight 仪表盘中将其可视化。


仪表盘 - 步骤指南

本教程中详细介绍了如何启用 AWS CloudTrail Lake 以及如何使用原生查询编辑器运行查询。本教程中介绍的步骤假定您已按照前述教程完成了初始设置。


AWS CloudTrail Lake 事件存储

如果您已按照前述教程中的操作启用了 AWS CloudTrail Lake,那么您应该已经拥有一个事件数据存储。

事件数据存储如下图所示:

事件数据存储

您可以参考示例查询或定义自己的自定义查询。

示例查询

在查询编辑器中尝试这些查询,以确保返回的结果符合预期。

查询编辑器

在本教程中,我们将使用列表中的 3 个示例查询:

  • 监控安全组变动
  • 跟踪路由表变动
  • 跟踪网络 ACL 配置变动

现在,您的 AWS CloudTrail Lake 已经准备就绪,开始下一步吧。


AWS Glue Data Catalog

创建事件数据存储时,会自动创建一份相应的表(该表用自动生成的字母数字字符串命名),该表位于您的 AWS Glue Data Catalog 中名为 "aws:cloudtrail" 的数据库里。

如下图所示:

AWS Glue Data Catalog 中的表

Amazon Athena

我们需要使用 Amazon Athena 作为查询引擎来创建仪表盘。AWS Glue 已原生集成 Amazon Athena。

通过亚马逊云科技控制台转到 Amazon Athena。如下所示,您应该看到 AWS Glue Data Catalog 表已可用。如果您尚未完成,则必须将查询结果位置设置为 Amazon S3 存储桶(此为一次性操作)。

Amazon Athena 中的 AWS Glue 表

尝试在 Amazon Athena 查询编辑器中运行您的 AWS CloudTrail Lake SQL 查询。截至目前,直接使用 AWS CloudTrail Lake 中的查询不起作用,因为 Amazon Athena 无法识别架构。为了使其正常工作,必须以 <"database_name"."table_name"> 的格式提供表名。

例如,如上图所示,名是 "82b6fde8-e083-4811-b950-060d90d783ff"

要从 Amazon Athena 查询编辑器中选择迄今为止所有网络 ACL 变动,要使用的 SQL 查询是:

SELECT *
FROM
"aws:cloudtrail"."82b6fde8-e083-4811-b950-060d90d783ff"
WHERE eventSource = 'ec2.amazonaws.com' AND eventName in ('CreateNetworkAcl', 'CreateNetworkAclEntry', 'DeleteNetworkAcl', 'DeleteNetworkAclEntry', 'ReplaceNetworkAclEntry', 'ReplaceNetworkAclAssociation')

在 Amazon Athena 中运行您的查询,并确保它们按预期工作。

现在,我们已准备好使用 Amazon QuickSight。


Amazon QuickSight

如果您之前未使用过 Amazon QuickSight,请按照此文档在您完成前述步骤的同一 AWS 区域进行初始设置。

首先,我们需要为在仪表盘中可视化的每个 SQL 查询创建相应的数据集。在本教程中,我们希望将 3 个 SQL 查询可视化。因此,我们需要创建 3 个数据集。

要创建您的第一个数据集,进入 Amazon QuickSight 控制台 > 数据集 > 新建数据集 > Amazon Athena。为您的数据源指定一个名称,然后点击“创建数据源”

创建数据集

在下一个页面中,确保在 AWS Glue Data Catalog中选择了正确的目录和数据库。点击“使用自定义 SQL”按钮(默认 SQL 会生成一个异常)。

使用自定义 SQL 创建数据集

在字段中输入 SQL 查询(请使用早先提到的 "database_name"."table_name" 格式来定位表),然后点击“确认查询”。

确认查询

在下一个页面中,点击“可视化”以创建视觉对象。

创建视觉对象

在创建视觉对象时,您会有许多选项来设置其格式。可以选择以表格格式显示要关注的字段。

创建视觉对象及格式设置

使用“属性”选项卡自定义视觉对象的详细信息,如名称、格式等。

视觉对象属性

一旦您对视觉效果满意,可以将其发布到一个新的仪表盘,或替换现有的仪表盘

将视觉对象发布到新的仪表盘

您可以重复前述查询步骤,尝试每一种查询,并为其创建相应的数据集、视觉对象和仪表盘。在此案例中,重复相同步骤完成其余两种查询。

将路由表变动可视化的 SQL 查询:

SELECT
coalesce(element_at(requestParameters, 'routeTableId'), cast(json_extract(element_at(responseelements, 'routeTable'), '$.routeTableId') as varchar)) as routeTableId, element_at(requestParameters, 'vpcId') as vpcId, eventTime, requestParameters, responseElements
FROM
"aws:cloudtrail"."82b6fde8-e083-4811-b950-060d90d783ff"
WHERE
eventsource = 'ec2.amazonaws.com' AND eventName in ('CreateRoute', 'ReplaceRoute', 'DeleteRoute', 'CreateRouteTable', 'DeleteRouteTable', 'DisassociateRouteTable', 'ReplaceRouteTableAssociation')
将安全组变动可视化的 SQL 查询:
SELECT
eventName, userIdentity.arn AS user, sourceIPAddress, eventTime,
element_at(requestParameters, 'groupId') AS securityGroup,
element_at(requestParameters, 'ipPermissions') AS ipPermissions
FROM
"aws:cloudtrail"."82b6fde8-e083-4811-b950-060d90d783ff"
WHERE
(element_at(requestParameters, 'groupId') LIKE '%sg-%')
ORDER
BY eventTime ASC

创建一个包含所有视觉对象的仪表盘

在前文中,我们将每个视觉对象发布到了单独的仪表盘。您还可以将要跟踪的所有视觉对象包含到一个仪表盘中。为此,我们需要将全部 3 个数据集添加到同一个 Amazon QuickSight 分析中。

进入 Amazon QuickSight 控制台中的“分析”(Analyses) 部分,并选择任一分析(我们会将所有数据集添加到此分析中)

选择要更新的分析

在选定的分析中,点击“数据集”(Dataset) 部分的下拉菜单,并选择“添加新数据集”(Add a new dataset)

添加新数据集

逐个选择您创建的每个数据集。比如,在此选择的是网络 ACL 分析。因此,在此将安全组和路由表数据集添加到了这一分析中(网络 ACL 数据已包含其中)

选择数据集

创建视觉对象并为其设置格式的步骤与前文相同。唯一的区别是,您将在同一页面中完成操作,而无需前往不同页面。工作表如下图所示

所有视觉对象集中在一个工作表中

一旦您满意当前效果,将工作表发布到仪表盘中,此时所有视觉对象将显示在同一个仪表盘中。结果如下图所示。

整合后的 Amazon QuickSight 仪表盘

现在,您可以从 Amazon QuickSight 控制面板中选择所有相关指标,并对其进行监控、审计和跟踪了。


总结

在本篇教程中,我们介绍了如何用 AWS CloudTrail Lake、AWS Glue Data Catalog 和 Amazon Athena 来提取亚马逊云科技账户中的关键操作和事件,并在 Amazon QuickSight 中将其可视化。需要注意的是,调用 API 后,AWS CloudTrail 返回事件的平均用时是 5 分钟(此时间无法保证)。因此,这并不适合实时跟踪。您还可以利用 Amazon QuickSight 中的生成式 BI 功能,使用数据和视觉对象构建强大且可共享的叙述。