Amazon Athenaで AWS CloudTrail証跡から特定のIAMユーザーアクセスキーを使用したリクエストを抽出する

AWS

2023.3.22

Topics

はじめに

本記事では、IAMユーザーアクセスキーおよびシークレットアクセスキーの流出が疑われる場面において、当該アクセスキーを使用した APIリクエスト履歴の確認方法をご紹介します。
なお流出が疑われる場合は、影響範囲を抑えるために、まず始めに以下の対応を実施してください。


  • 対象の IAMアクセスキーを無効化してください。この段階で削除は行いません。
  • 当該 IAMユーザーに「AdministratorAccess」権限、または IAM関連のリソースを編集可能な権限が付与されていた場合、全ての IAMユーザーおよびルートユーザーのアクセスキーをローテーションし、パスワードを変更してください。アクセスキーのローテーションは、既存のアクセスキーを無効化した上で、新規にアクセスキーを作成することで実施できます。

Athenaを利用して CloudTrail証跡をクエリすることにより、当該アクセスキーを使用したリクエストを全件抽出することが可能です。

本手順は、予め CloudTrail証跡が有効化されていることを前提としています。
CloudTrail証跡を有効化することで、過去90日以前の操作履歴も保存できます。
監査証跡として利用したり、今回のような流出が行われた際の調査にも活用できますので、AWSアカウントを開設したらまず CloudTrail証跡を有効化してください。
参考資料:証跡の作成 – AWS CloudTrail

Athena テーブルを作成する

  1. CloudTrailコンソールのナビゲーションペインで [証跡] を選択し、S3バケット名を控えます。

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

  3. [Amazon Athena でテーブルを作成] ウィンドウで、ストレージの場所メニューを開き、先ほど控えた S3バケットを選択します。

  4. [テーブルを作成] を選択します。
  5. [Athena に移動] を選択します。

Athena でクエリを実行する

下記クエリ文例では、2022/03/20 00:00 UTC - 2023/03/20 00:00 UTC 間に、当該アクセスキーを使用して行われた全てのリクエストを抽出します。


SELECT *
FROM <自動生成されたAthena テーブル名>
WHERE useridentity.accesskeyid = '<IAM アクセスキー ID (AKIA から始まる ID)>'
AND eventtime >= '2022-03-20T00:00:00Z'
AND eventtime < '2023-03-20T00:00:00Z'
ORDER BY eventtime ASC;
  1. 自動生成されたAthena テーブル名、IAM アクセスキー ID (AKIA から始まる ID)、リクエストを抽出したい期間を入力し、[実行] を選択します。

  2. 出力されたクエリ結果から、身に覚えのないリソース作成や設定変更といった、不審なアクティビティの有無を確認していきます。CloudTrail イベントに記録される内容の詳細については、公式ドキュメント CloudTrail レコードの内容 - AWS CloudTrail をご参照ください。

参考資料

AWSアカウントの不正なアクティビティに気付いた場合はどうすればよいですか?
CloudTrail レコードの内容 - AWS CloudTrail

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

GENSAI

2014年入社。 関東近郊の山と銭湯と飲み屋を巡り歩いてます。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら