查询 Amazon GuardDuty 调查结果 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

查询 Amazon GuardDuty 调查结果

Amazon GuardDuty是一项安全监控服务,用于帮助识别您的Amazon环境。当检测到意外和潜在恶意活动时,GuardTrail 会生成安全性结果,您可以将其导出到 Amazon S3 进行存储和分析。将调查结果导出到 Amazon S3 中之后,您可以使用 Athena 进行查询。本文介绍如何在 Athena 中为您的 GuardDuty 调查结果创建表并查询它们。

有关 Amazon GuardDuty 的更多信息,请参阅Amazon GuardDuty 用户指南

Prerequisites

  • 启用 GuardDuty 能以将调查结果导出到 Amazon S3。要查看步骤,请参阅导出查找结果(在 Amazon GuardDuty 用户指南中)。

在 Athena 中为 GuardDuty 调查结果创建表

要从 Athena 查询您的 GuardDuty 调查结果,您必须为它们创建一个表。

在 Athena 中为 GuardDuty 调查结果创建表

  1. https://console.aws.amazon.com/athena/ 打开 Athena 控制台。

  2. 将以下 DDL 语句粘贴到 Athena 控制台中。修改LOCATION 's3://findings-bucket-name/AWSLogs/account-id/GuardDuty/'以指向您在 Amazon S3 中的 GuardDuty 调查结果。

    CREATE EXTERNAL TABLE `gd_logs` ( `schemaversion` string, `accountid` string, `region` string, `partition` string, `id` string, `arn` string, `type` string, `resource` string, `service` string, `severity` string, `createdate` string, `updatedate` string, `title` string, `description` string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://findings-bucket-name/AWSLogs/account-id/GuardDuty/' TBLPROPERTIES ('has_encrypted_data'='true')
  3. 在 Athena 控制台中运行查询以注册gd_logs表。查询完成后,调查结果准备就绪,可供您从 Athena 查询。

示例查询

以下示例说明如何从 Athena 查询 GuardDuty 调查结果。

例 — DNS 数据泄露

以下查询返回可能会通过 DNS 查询泄露数据的 Amazon EC2 实例的相关信息。

SELECT title, severity, type, id AS FindingID, accountid, region, createdate, updatedate, json_extract_scalar(service, '$.count') AS Count, json_extract_scalar(resource, '$.instancedetails.instanceid') AS InstanceID, json_extract_scalar(service, '$.action.actiontype') AS DNS_ActionType, json_extract_scalar(service, '$.action.dnsrequestaction.domain') AS DomainName, json_extract_scalar(service, '$.action.dnsrequestaction.protocol') AS protocol, json_extract_scalar(service, '$.action.dnsrequestaction.blocked') AS blocked FROM gd_logs WHERE type = 'Trojan:EC2/DNSDataExfiltration' ORDER BY severity DESC

例 — 未经授权的 IAM 用户访问

以下查询返回所有UnauthorizedAccess:IAMUser从所有区域中查找 IAM 委托人的类型。

SELECT title, severity, type, id, accountid, region, createdate, updatedate, json_extract_scalar(service, '$.count') AS Count, json_extract_scalar(resource, '$.accesskeydetails.username') AS IAMPrincipal, json_extract_scalar(service,'$.action.awsapicallaction.api') AS APIActionCalled FROM gd_logs WHERE type LIKE '%UnauthorizedAccess:IAMUser%' ORDER BY severity desc;

查询 GuardDuty 调查结果的提示

创建查询时,请记住以下几点。