AWS CloudTrail ログ検索をするために Amazon Athena のテーブルを自動的に作成する方法を教えてください。

最終更新日: 2019 年 12 月 12 日

大量の AWS CloudTrail ログを検索したいです。エラーを回避するため、Amazon Athena テーブルを手動で作成したくありません。

解決方法

CloudTrail コンソールを使用して、Athena テーブルを自動的に作成します。詳細については、「 Amazon Athena を使用した AWS CloudTrail ログ検索」をご参照ください。

Athena テーブルを作成します

  1. CloudTrail コンソールを開き、ナビゲーションペインで [Trails] を選択します。S3 バケット名をメモしておきます。
  2. ナビゲーションペインで [Event history] を選択し、そして「 Amazon Athena で高度なクエリを実行する」を選択します。
  3. Amazon Athena でテーブルを作成ウィンドウで、ストレージ位置メニューを開き、CloudTrail ログファイルを含む Amazon Simple Storage Service (Amazon S3) バケットを選択します。
  4. [Create Tag] を選択します。
  5. [Go to Athena] を選択します。

注意: 「ご使用のアカウントには、Amazon Athena でテーブルを作成するための十分な権限がありません」というエラーが表示される場合があります。 IAM ポリシーをアタッチ (コンソール) するの手順に従って、AmazonAthenaFullAccess 管理ポリシーをアタッチします。

次の 1 つ以上のサンプルクエリを使用してログを照会します。your_athena_tablename を Athena テーブル名に、access_key_id を 20 文字のアクセスキーに置き換えます 。通常、アクセスキーは AKIA または ASIA の文字で始まります。

Athena クエリを実行します

Athena コンソールを開き、[New query] を選択し、そしてダイアログボックスを選択してサンプルクエリを消去します。

クエリを入力し、[Run Query] を選択します。

特定のアクセスキーについて記録されたすべての AWS API アクティビティを表示します

SELECT eventTime, eventName, userIdentity.principalId
FROM your_athena_tablename 
WHERE userIdentity.accessKeyId like 'access_key_id'

EC2 インスタンスのセキュリティグループの変更を特定します

SELECT eventname, useridentity.username, sourceIPAddress, eventtime, requestparameters
FROM your_athena_tablename
WHERE (requestparameters like '%sg-5887f224%' or requestparameters like '%sg-e214609e%' or requestparameters like '%eni-6c5ca5a8%')
and eventtime > '2017-02-15T00:00:00Z'
order by eventtime asc;

24 時間以内にコンソールログインをすべて表示します

SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata
FROM your_athena_tablename 
WHERE eventname = 'ConsoleLogin'
and eventtime >= '2017-02-17T00:00:00Z'
and eventtime < '2017-02-18T00:00:00Z';

24 時間以内に失敗したコンソールサインインの試行を表示します

SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata
FROM your_athena_tablename
WHERE eventname = 'ConsoleLogin'
and useridentity.username = 'HIDDEN_DUE_TO_SECURITY_REASONS'
and eventtime >= '2017-02-17T00:00:00Z'
and eventtime < '2017-02-18T00:00:00Z';

CloudTrail の月額料金の増加を特定します

SELECT eventName,count(eventName) AS NumberOfChanges,eventSource
FROM your_athena_tablename 
WHERE eventtime >= '2019-01-01T00:00:00Z'and eventtime < '2019-01-31T00:00:00Z'
GROUP BY eventName, eventSource
ORDER BY NumberOfChanges DESC

注意 :eventtime で定義された値は単一の月に制限されています。数ヶ月間の結果を得るには、追加のクエリを実行します。

欠けている AWS Identity and Access Management (IAM) 権限を特定する

SELECT count (*) as TotalEvents, useridentity.arn, eventsource, eventname, errorCode, errorMessage
FROM your_athena_tablename
WHERE (errorcode like '%Denied%' or errorcode like '%Unauthorized%')
AND eventtime >= '2019-10-28T00:00:00Z'
AND eventtime < '2019-10-29T00:00:00Z'
GROUP by eventsource, eventname, errorCode, errorMessage, useridentity.arn
ORDER by eventsource, eventname

失敗した API 呼び出しが結果に表示されない場合は、次のようなクエリ範囲を広げます。  

SELECT count (*) as TotalEvents, useridentity.arn, eventsource, eventname, errorCode, errorMessage
FROM your_athena_tablename
WHERE errorcode <> ''
AND eventtime >= '2019-10-28T00:00:00Z'
AND eventtime < '2019-10-29T00:00:00Z'
GROUP by eventsource, eventname, errorCode, errorMessage, useridentity.arn
ORDER by eventsource, eventname