Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
AWS CloudTrail ログの検索用に、Amazon Athena テーブルを自動的に作成する方法を教えてください。
大量の AWS CloudTrail ログを検索しようと思います。エラーを回避するため、手動による Amazon Athena テーブルの作成は考えていません。
解決策
CloudTrail コンソールで Athena テーブルを自動的に作成します。詳細については、「Amazon Athena を使用して AWS CloudTrail ログを検索する」を参照してください。
CloudTrail ログから Athena テーブルを作成します。
次の手順を実行します。
- CloudTrail コンソールを開きます。
- ナビゲーションペインで [証跡] を選択し、CloudTrail ログを含む Amazon Simple Storage Service (Amazon S3) バケットの名前を書き留めます。
- ナビゲーションペインで [イベント履歴] を選択し、[Athena テーブルを作成] を選択します。
- [Amazon Athena にテーブルを作成] ウィンドウで、[ストレージの場所] メニューから該当する S3 バケットを選択します。
注: Athena で CloudTrail ログのパーティションプロジェクションを使用すると、特定の時間範囲内での検索を改善できます。 - **[テーブルを作成]**を選択します。
- **[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 クエリを実行する
次の手順を実行します。
- Athena コンソールを開きます。
- [新規クエリ] を選択し、サンプルクエリをクリアします。
- クエリを入力し、[クエリを実行] を選択します。
クエリの例を使用する
実行できるクエリの例を次に示します。
注: 次の例で、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
関連情報
IAM アクセス許可での Access Denied または Unauthorized エラーをトラブルシューティングする参考になるデータを取得する方法を教えてください
関連するコンテンツ
- 質問済み 6ヶ月前lg...
- 質問済み 3年前lg...
- 質問済み 8ヶ月前lg...