Share
Embed
CloudTrail を見つめ直してみる
2026年4月22日にクラスメソッドさんの大阪オフィスで開催された「クラメソおおさか IT 勉強会 Midosuji Tech 〜年度始め宣言LT大会〜」での登壇資料です。
3分の枠だったのに、いろいろ書きすぎたから調整しようと思っていたのに、前日、前々日といろいろとあり、結局調整しきれませんでしたので、だいぶ端折ってお話ししました。
イベント URL:https://classmethod.connpass.com/event/388687/
#midosuji_tech
kazzpapa3
April 22, 2026
Transcript
25 slides
-
CloudTrail を見つめ直してみる クラメソおおさか IT 勉強会 Midosuji Tech 〜年度始め宣言LT大会〜 (April 22,
2026) Speaker : @kazzpapa3(ICHINO Kazuaki) / JAWS-UG 神戸 -
Biography { "Bio": { "Name": "ICHINO Kazuaki a.k.a. kazzpapa3", "Organization":
"A certain AWS partner company", "Role": "Technical Support Engineer", "Favorite AWS Services": [ "AWS CLI", "AWS CloudTrail", "Kiro CLI" ], "Less Favorite AWS Service (as a Support Engineer)": [ "AWS Billing (請求ロジックが難解すぎる)" ], "Personal Interest": "初音ミク", "Socials": { "Twitter/X": "@kazzpapa3", "LinkedIn": "https://www.linkedin.com/in/kazzpapa3/" } } } -
概念は大きく 3 つ 2 つ 機能 概要 イベント履歴 AWS リージョン
内の過去 90 日間の管理イベントをデフォルトで記録 CloudTrail Lake 行ベースの JSON 形式の既存のイベントを Apache ORC 形式に変換した上で、料金プランにより最 大 3,653 日(約 10 年)の保存が可能なマネージドデータレイク SQL で手軽にイベントを検索・分析することができるが 2026 年 5 月 31 日以降、新規受付停止 証跡 S3 バケットに JSON形式 で出力でき、保持期間は S3 のライフサイクルで任意で設定可能 シンプルにログを保存しておきたい用途に向いている 分析や検索方法は別途講じる必要がある 過去 90 日間の管理イベントのデフォルト記録は無料 証跡での管理イベントの1つ目の配信は無料 ただし、S3 バケットでの保管にかかる費用は必要 明示的に「証跡を作成する」という手順が必要 @kazzpapa3 / #midosuji_tech 7 / 25 -
つまり誰でも管理イベントは 90 日は記録されている 明示的な証跡の出力や CloudTrail Lake の使用をしていなくても、管理 イベントは 90 日間記録されている
そのためどのようなお客様でも権限さえあれば、問題が発生した時に管 理イベントを確認することができる 不正利用を働いた攻撃者が どのようなリソースを作ろうとした のか そのリソースの作成が 成功したのかエラーだったのか 成功していれば、意図しないリソースが作られているとわかる これにより 高額請求につながる恐れがある、と判断できる @kazzpapa3 / #midosuji_tech 8 / 25 -
(たぶん)検索しにくい、見にくい 新規受付は停止するものの CloudTrail Lake というサービスが用意され ていたくらいなので、デフォルト無料で使えるイベント履歴は、マネジ メントコンソールで検索しにくい、見にくい 日付指定で範囲可能 イベント名やイベントソースなどの「ルックアップ属性」とその属性に 呼応する値の
1 対しか検索条件に含めることができない @kazzpapa3 / #midosuji_tech 10 / 25 -
みんな大好き黒い画面 AWS CLI を利用して抽出すると後処理がやりやすいのではないかとい う所感 AWS マネジメントコンソールに備わっている CloudShell には AWS
CLI や JSON を抽出・加工を容易にする jq パッケージが導入済み @kazzpapa3 / #midosuji_tech 12 / 25 -
最低限必要な権限 最低限、以下の権限がある状態でマネジメントコンソール抜いサインイ ンしている IAM エンティティであれば操作可能 cloudshell:CreateEnvironment : 環境の作成 cloudshell:CreateSession :
コンソールからの接続 cloudshell:GetEnvironmentStatus : 環境ステータスの取得 cloudshell:StartEnvironment : 停止中の環境の起動 cloudtrail:LookupEvents : 過去90日間の管理イベント / Insights イ ベントの検索 @kazzpapa3 / #midosuji_tech 13 / 25 -
research-via-cloudtrail 基本的には ./research.sh [OPTIONS] の要領で実行するだけ 引数に渡したオプション項目に応じて cloudtrail:LookupEvents を実行 して CSV
ファイルに出力可能 オプトインしている全リージョンに対して cloudtrail:LookupEvents し てくれるので、普段使わないリージョンに何か悪さをされていても網羅 的に把握可能 もちろん、特定のリージョンに限定することも可能 @kazzpapa3 / #midosuji_tech 15 / 25 -
そこで AWS サービスリファレンス情報 https://servicereference.us-east-1.amazonaws.com/ として「参照 情報」が利用できるサービスと公開 URL の情報が提供されている どのようなサービスがあるかは、上記にアクセスすることで判断可能 その上で、上記で見つかったサービスごとの参照情報
URL にアクセス することで、どのような API アクションがあるかを網羅的に把握可能 @kazzpapa3 / #midosuji_tech 17 / 25 -
AWS サービスの一覧の出力例 curl -s http://servicereference.us-east-1.amazonaws.com/ { "service" : "a2c", "url"
: "https://servicereference.us-east-1.amazonaws.com/v1/a2c/a2c.json", "modified" : 1774454984 } # 〜中略〜 , { "service" : "iam", "url" : "https://servicereference.us-east-1.amazonaws.com/v1/iam/iam.json", "modified" : 1774454982 }, # 〜中略〜 , { "service" : "xray", "url" : "https://servicereference.us-east-1.amazonaws.com/v1/xray/xray.json", "modified" : 1774454960 } ] @kazzpapa3 / #midosuji_tech 18 / 25 -
IAM にアクセスした場合の例 curl -s https://servicereference.us-east-1.amazonaws.com/v1/iam/iam.json { "Name" : "iam", "Actions"
: [ { "Name" : "AcceptDelegationRequest", "Annotations" : { "Properties" : { "IsList" : false, "IsPermissionManagement" : false, "IsTaggingOnly" : false, "IsWrite" : true } }, "Resources" : [ { "Name" : "delegation-request" } ], "SupportedBy" : { "IAM Access Analyzer Policy Generation" : false, "IAM Action Last Accessed" : false } }, { # 〜以下略〜 19 / 25 -
個人的に AWS サービス情報の取得を関数化している cat ~/.zshrc # 〜中略〜 awsservice() { curl
-s https://servicereference.us-east-1.amazonaws.com/ | jq -r ".[] | select(.service | contains(\"$1\")).$2" } servicereference() { curl -s $1 | jq -r '.Actions[].Name' } @kazzpapa3 / #midosuji_tech 20 / 25 -
これにより まずはサービスの URL を取得する awsservice iam url https://servicereference.us-east-1.amazonaws.com/v1/iam/iam.json 次に、上記で得られた URL
にアクセスする servicereference https://servicereference.us-east-1.amazonaws.com/v1/iam/iam.json AcceptDelegationRequest AddClientIDToOpenIDConnectProvider # 〜中略〜 UploadServerCertificate UploadSigningCertificate @kazzpapa3 / #midosuji_tech 21 / 25 -
参考資料 What Is AWS CloudTrail? - AWS CloudTrail CloudTrail Lake
availability change - AWS CloudTrail research-via-cloudtrail 25 / 25