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

所要時間2分
0

大量の AWS CloudTrail ログを検索しようと思います。エラーを回避するため、手動による Amazon Athena テーブルの作成は考えていません。

解決策

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

Athena テーブルを作成します

1.    CloudTrail コンソールを開き、ナビゲーションペインで [トレイル] を選択します。S3 バケット名をメモしておきます。

2.    ナビゲーションペインで [イベント履歴] を選択し、次に**[Athena テーブルを作成]**を選択します。

3.    [Amazon Athena でテーブルを作成] ウィンドウで、[ストレージ位置] メニューを開き、CloudTrail ログファイルとともに Amazon Simple Storage Service (Amazon S3) バケットを選択します。

注:Athena で CloudTrail ログのパーティションプロジェクションを使用すると、1 つの AWS リージョンの特定の時間枠の検索パフォーマンスを向上させることができます。

4.    **[テーブルを作成]**を選択します。

5.    **[Athena に移動]**を選択します。

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

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

Athena クエリを実行します

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

2.    クエリを入力し、**[クエリの実行]**を選択します。

特定のアクセスキーについて記録されたすべての 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 で定義された値は単一の月に制限されています。数か月間の結果を得るには、追加のクエリを実行します。

欠けている 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

関連情報

AWS CloudTrail ログのクエリ

IAM ID のアクセス許可の追加および削除

拒否された IAM 権限のアクセスや、不正なアクセスエラーのトラブルシューティングする方法を教えてください。

AWS公式
AWS公式更新しました 3年前
コメントはありません