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

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