Amazon GuardDuty 結果のクエリの実行 - Amazon Athena

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

Amazon GuardDuty 結果のクエリの実行

Amazon GuardDuty は、AWS 環境内の予期しない、不正な、または悪意のあるアクティビティを識別するためのセキュリティ監視サービスです。予期しない、また、悪意のあるアクティビティを検出すると、GuardDuty は、ストレージと分析のために Amazon S3 にエクスポートできるセキュリティ結果を生成します。結果を Amazon S3 にエクスポートした後、Athena を使用してクエリを実行できます。この記事では、Athena で GuardDuty 結果用のテーブルを作成し、クエリを実行する方法について説明します。

Amazon GuardDuty の詳細については、「Amazon GuardDuty ユーザーガイド」を参照してください。

前提条件

  • 結果を Amazon S3 にエクスポートするために GuardDuty 機能を有効にします。手順については、Amazon GuardDuty ユーザーガイド の「結果のエクスポート」を参照してください。

GuardDuty 結果のための Athena でのテーブルの作成

Athena から GuardDuty 結果のクエリを実行するには、それらの結果に対するテーブルを作成する必要があります。

GuardDuty 結果のために Athena でテーブルをで作成するには

  1. Athena コンソール (https://console.aws.amazon.com/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 結果のクエリの実行に関するヒント

クエリを作成するときは、次の点に注意してください。