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

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

查询 Amazon GuardDuty 调查结果

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

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

先决条件

  • 启用 GuardDuty 功能以将调查结果导出到 Amazon S3。有关步骤,请参阅 Amazon GuardDuty 用户指南中的导出调查结果

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

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

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

  1. https://console.amazonaws.cn/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 用户访问

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

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 调查结果的提示

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