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

所要時間2分
0

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

解決策

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

CloudTrail ログから Athena テーブルを作成します。

次の手順を実行します。

  1. CloudTrail コンソールを開きます。
  2. ナビゲーションペインで [証跡] を選択し、CloudTrail ログを含む Amazon Simple Storage Service (Amazon S3) バケットの名前を書き留めます。
  3. ナビゲーションペインで [イベント履歴] を選択し、[Athena テーブルを作成] を選択します。
  4. [Amazon Athena にテーブルを作成] ウィンドウで、[ストレージの場所] メニューから該当する S3 バケットを選択します。
    注: Athena で CloudTrail ログのパーティションプロジェクションを使用すると、特定の時間範囲内での検索を改善できます。
  5. **[テーブルを作成]**を選択します。
  6. **[Athena に移動]**を選択します。

注: Your account does not have sufficient permissions to create tables in Amazon Athena (アカウントには、Amazon Athena でテーブルを作成するための十分なアクセス許可がありません) というエラーが表示される場合があります。このエラーが発生した場合は、マネージドポリシー AmazonAthenaFullAccess を AWS Identity and Access Management (IAM) ロールにアタッチします。

CloudTrail ログテーブルで Athena クエリを実行する

次の手順を実行します。

  1. Athena コンソールを開きます。
  2. [新規クエリ] を選択し、サンプルクエリをクリアします。
  3. クエリを入力し、[クエリを実行] を選択します。

クエリの例を使用する

実行できるクエリの例を次に示します。

注: 次の例で、your_athena_tablename を Athena テーブル名に、access_key_id を 20 文字のアクセスキーに置き換えます。通常、アクセスキーは AKIA または ASIA という文字で始まります。

特定のアクセスキーで記録されたすべての AWS API アクティビティを表示するには、次のクエリを実行します。

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

Amazon Elastic Compute Cloud (Amazon 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 値は 1 か月分のものです。数か月間の結果を取得するには、追加のクエリを実行します。

欠けている 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 アクセス許可での Access Denied または Unauthorized エラーをトラブルシューティングする参考になるデータを取得する方法を教えてください

コメントはありません