Amazon Athenaで AWS CloudTrail証跡から特定のIAMユーザーアクセスキーを使用したリクエストを抽出する
はじめに
本記事では、IAMユーザーアクセスキーおよびシークレットアクセスキーの流出が疑われる場面において、当該アクセスキーを使用した APIリクエスト履歴の確認方法をご紹介します。
なお流出が疑われる場合は、影響範囲を抑えるために、まず始めに以下の対応を実施してください。
- 対象の IAMアクセスキーを無効化してください。この段階で削除は行いません。
- 当該 IAMユーザーに「AdministratorAccess」権限、または IAM関連のリソースを編集可能な権限が付与されていた場合、全ての IAMユーザーおよびルートユーザーのアクセスキーをローテーションし、パスワードを変更してください。アクセスキーのローテーションは、既存のアクセスキーを無効化した上で、新規にアクセスキーを作成することで実施できます。
Athenaを利用して CloudTrail証跡をクエリすることにより、当該アクセスキーを使用したリクエストを全件抽出することが可能です。
本手順は、予め CloudTrail証跡が有効化されていることを前提としています。
CloudTrail証跡を有効化することで、過去90日以前の操作履歴も保存できます。
監査証跡として利用したり、今回のような流出が行われた際の調査にも活用できますので、AWSアカウントを開設したらまず CloudTrail証跡を有効化してください。
参考資料:証跡の作成 – AWS CloudTrail
Athena テーブルを作成する
- CloudTrailコンソールのナビゲーションペインで [証跡] を選択し、S3バケット名を控えます。
-
ナビゲーションペインで [イベント履歴] を選択し、右上 [Athena テーブルを作成] を選択します。
-
[Amazon Athena でテーブルを作成] ウィンドウで、ストレージの場所メニューを開き、先ほど控えた S3バケットを選択します。
- [テーブルを作成] を選択します。
- [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;
- 自動生成されたAthena テーブル名、IAM アクセスキー ID (AKIA から始まる ID)、リクエストを抽出したい期間を入力し、[実行] を選択します。
-
出力されたクエリ結果から、身に覚えのないリソース作成や設定変更といった、不審なアクティビティの有無を確認していきます。CloudTrail イベントに記録される内容の詳細については、公式ドキュメント CloudTrail レコードの内容 - AWS CloudTrail をご参照ください。
参考資料
AWSアカウントの不正なアクティビティに気付いた場合はどうすればよいですか?
CloudTrail レコードの内容 - AWS CloudTrail
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitter2014年入社。 関東近郊の山と銭湯と飲み屋を巡り歩いてます。
Recommends
こちらもおすすめ
-
QuickSightとAthenaを活用!データ分析入門
2017.12.11
-
AWS EKSにて権限エラー対策 #SaaS #Kubernetes
2024.3.25
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16