CloudTrail Insightsとログファイルの整合性
CloudTrail Insightsを有効にして異常なAPIアクティビティを検出し、ダイジェストファイルでログファイルの整合性を検証してフォレンジックに役立てます。
「CloudTrail Insightsとログファイルの整合性」はCoddyKit上の無料AWS Solutions Architectレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Solutions Architect学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Solutions Architectコースには全4レッスンが含まれています。
CloudTrail Insightsとは
CloudTrail Insightsは、機械学習を使用してAWSアカウント内の通常とは異なるAPIアクティビティを自動的に検出するオプション機能です。APIごとに通常のAPI呼び出し率と書き込み管理イベントの発生量のベースラインを設定し、アクティビティがそのベースラインから大きく逸脱した場合にアラートを発します。Insightsイベントはトレイルログと同じS3バケットに配信され、EventBridgeルールをトリガーして自動対応を実行することもできます。
CloudTrail Insightsの有効化
CloudTrail Insightsはトレイルごとに有効化します。API呼び出し率の異常(1秒あたりの書き込み管理イベント数が通常と異なる状態)またはAPIエラー率の異常(アクセス拒否エラーやスロットリングエラーが通常と異なる状態)を検出するように選択できます。Insightsを使用するには、管理イベントが有効になったアクティブなトレイルが必要です。Insightsイベントには、通常のトレイルイベント料金に加えて料金が発生します。Insightsは、異常の検出を開始する前に初期ベースラインの確立に24~36時間かかります。
# Enable CloudTrail Insights for API call rate and error rate anomalies
aws cloudtrail put-insight-selectors \
--trail-name OrgAuditTrail \
--insight-selectors \
InsightType=ApiCallRateInsight \
InsightType=ApiErrorRateInsight
# Verify insights configuration
aws cloudtrail get-insight-selectors \
--trail-name OrgAuditTrailInsightsイベントの仕組み
Insightsイベントには、開始イベントと終了イベントがあります。開始イベントは異常の発生時に生成されます。たとえば、TerminateInstancesの呼び出しが急増した場合などです。終了イベントは、API呼び出し率が通常に戻ったときに生成されます。各Insightsイベントには、影響を受けたAPI、通常のベースライン率、観測されたピーク時の率、継続時間が含まれます。これにより、異常が継続的な攻撃だったのか、一時的な急増だったのかを把握できます。
# Search for Insights events in the last 30 days
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=EventCategory,AttributeValue=insight \
--start-time $(date -u -d '30 days ago' +%Y-%m-%dT%H:%M:%SZ) \
--query 'Events[].{Time:EventTime,Name:EventName,Source:EventSource}' \
--output tableInsightsが実際に検出する異常
CloudTrail Insightsが検出する一般的な異常には、攻撃者が盗んだキーを使用してすべてのS3バケットを高速で列挙する認証情報の侵害、ループしてEC2 APIを何千回も呼び出す設定ミスのあるデプロイスクリプト、通常よりも速いペースでリソースを削除する内部脅威、Lambda関数が突然通常とは異なるSTS呼び出しを行うサプライチェーン攻撃などがあります。Insightsを使用すると、CloudTrailログを手動で確認するよりも短時間で異常を検出できます。
自動対応のためのEventBridge統合
CloudTrail Insightsイベントは自動的にAmazon EventBridgeに配信されるため、自動対応を実行できます。Insightsイベントが検出されたときにLambda関数をトリガーするEventBridgeルールを作成できます。たとえば、Slackメッセージの送信、Jiraチケットの作成、あるいは異常が既知の攻撃パターンと一致する場合にIAMユーザーのアクセスキーを自動的に無効化するといった処理が可能です。これにより、Insightsの検出結果を中心としたリアルタイムのセキュリティ自動化パイプラインを構築できます。
# EventBridge rule to trigger Lambda when a CloudTrail Insights event fires
aws events put-rule \
--name CloudTrailInsightsAlert \
--event-pattern '{
"source": ["aws.cloudtrail"],
"detail-type": ["AWS Insight via CloudTrail"]
}' \
--state ENABLED
# Add Lambda as the target
aws events put-targets \
--rule CloudTrailInsightsAlert \
--targets Id=LambdaTarget,Arn=arn:aws:lambda:us-east-1:111122223333:function:SecurityResponderログファイル整合性検証
ログファイル整合性検証により、CloudTrailのログファイルがS3への配信後に変更、削除、または偽造されていないことを確認できます。有効化すると(--enable-log-file-validationを使用)、CloudTrailは1時間ごとにダイジェストファイルを作成します。このファイルには、その1時間に配信されたすべてのログファイルのSHA-256ハッシュと、前のダイジェストのハッシュが含まれます。ダイジェストファイル自体はCloudTrailの秘密鍵で署名されます。AWS CLIのvalidate-logsコマンドを使用してログを検証できます。
# Enable log file validation when creating or updating a trail
aws cloudtrail update-trail \
--name OrgAuditTrail \
--enable-log-file-validation
# Validate log file integrity for a specific time range
aws cloudtrail validate-logs \
--trail-arn arn:aws:cloudtrail:us-east-1:111122223333:trail/OrgAuditTrail \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-02T00:00:00Z \
--verboseダイジェストファイルの仕組み
CloudTrailは1時間ごとに、ログファイルとは別のパス(s3://bucket/CloudTrail-Digest/...)にダイジェストファイルをS3へ配信します。ダイジェストには、過去1時間に配信された各ログファイルのSHA-256ハッシュ、各ファイルのS3 URI、および前のダイジェストのハッシュが含まれます。これによりハッシュチェーンが形成されます。攻撃者が配信後にログファイルを変更すると、ダイジェスト内のハッシュと一致しなくなるため、検証に失敗し、改ざんされたファイルが報告されます。
# View the structure of a CloudTrail digest file (JSON)
# {
# "digestStartTime": "2024-01-01T00:00:00Z",
# "digestEndTime": "2024-01-01T01:00:00Z",
# "logFiles": [
# {
# "s3Bucket": "my-cloudtrail-logs",
# "s3Object": "AWSLogs/.../CloudTrail/.../2024/01/01/file.json.gz",
# "hashValue": "sha256:abc123...",
# "hashAlgorithm": "SHA-256"
# }
# ],
# "previousDigestHashValue": "sha256:xyz789..."
# }監査証跡を改ざんから保護する
ログファイルの整合性検証は、ダイジェストファイルとログファイル自体が保護されている場合にのみ有効です。ベストプラクティスは次のとおりです。CloudTrailバケットでS3 MFA Deleteを有効にし、MFAなしではファイルを削除できないようにします。削除拒否バケットポリシーを適用し、どのプリンシパルもオブジェクトを削除できないようにします。S3 Object Lock(Complianceモード)を有効にして、変更できないログ保持を実現します。また、組織トレイルを使用して、メンバーアカウントがロギングを無効化できないようにします。これらの制御を組み合わせることで、内部関係者が監査証拠を消去することはほぼ不可能になります。
# Deny-delete policy on the CloudTrail S3 bucket
# {
# "Sid": "DenyDeleteCloudTrailLogs",
# "Effect": "Deny",
# "Principal": {"AWS": "*"},
# "Action": [
# "s3:DeleteObject",
# "s3:DeleteObjectVersion"
# ],
# "Resource": "arn:aws:s3:::my-cloudtrail-logs-111122223333/*"
# }InsightsとGuardDuty:補完関係にあるサービス
CloudTrail InsightsとAmazon GuardDutyは重複するサービスではなく、互いに補完し合うサービスです。InsightsはAPI呼び出し量の異常、つまり特定の管理API呼び出しが突然急増する状況に焦点を当てます。GuardDutyは、CloudTrailイベント、VPC Flow Logs、DNSログなど、より幅広いデータソースを分析し、認証情報の侵害、暗号資産マイニング、データの流出、既知の悪意あるIPなどの脅威パターンを検出します。多層防御のために両方を有効にしてください。Insightsは量に基づく異常の検出に、GuardDutyは脅威インテリジェンスに基づく検出に使用します。
CloudTrailコンソールでInsightsを表示する
CloudTrailコンソールのInsightsタブには、検出されたすべての異常が、開始時刻と終了時刻、API名、異常発生中のベースライン率と観測率を比較するグラフとともに表示されます。Insightsイベントをクリックすると、同じ時間範囲における関連する管理イベントのイベント履歴に直接移動できます。これにより、「異常が発生した」という事実と、「その原因となった具体的なAPI呼び出し」を関連付けて確認できます。このドリルダウン機能によって、Insightsの検出結果を実際の対応につなげられます。
コンプライアンスにおけるユースケース
ログファイル整合性検証は、複数のコンプライアンスフレームワークで求められています。PCI-DSSでは、監査ログが変更されていないことの証明が必要です。HIPAAでは、医療データに対する改ざん検知可能な監査制御が義務付けられています。SOC 2では、セキュリティログに対する整合性制御が必要です。CloudTrailのログファイル検証、S3 Object Lock、組織トレイルを組み合わせることで、これらの要件を満たせます。この構成はAWSのコンプライアンス関連ドキュメントでもよく紹介されています。試験問題で「ログが改ざんされていないことを証明する」と問われた場合の答えは、ログファイル整合性検証です。
理解度チェック
このレッスンで学んだAWS Solutions Architect(SAA-C03)の概念について、理解度を確認します。
レッスンのまとめ
このレッスンでは、次の内容を学びました。CloudTrail Insightsは機械学習を使用して、API呼び出し率とエラー率に関する通常とは異なる異常を、開始イベントと終了イベントによって検出します。ログファイル整合性検証は、ハッシュチェーン内のSHA-256ダイジェストファイルを使用して、ログファイルの改ざんや削除を検出します。また、拒否削除ポリシーと組み合わせたS3 Object Lockによって監査証跡の整合性を保護できます。次は、AWS Configルールと自動修復について学びます。
よくある質問
「CloudTrail Insightsとログファイルの整合性」レッスンは無料ですか?
はい。「CloudTrail Insightsとログファイルの整合性」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Solutions Architectコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Solutions Architectコースには全4レッスンが含まれています。
「CloudTrail Insightsとログファイルの整合性」で何を学びますか?
CloudTrail Insightsを有効にして異常なAPIアクティビティを検出し、ダイジェストファイルでログファイルの整合性を検証してフォレンジックに役立てます。 ブラウザで直接実行するハンズオンコードでAWS Solutions Architectを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AWS Solutions Architectを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAWS Solutions Architectは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「CloudTrail Insightsとログファイルの整合性」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAWS Solutions Architectレッスンでコードを書いて実行できますか?
はい。すべてのAWS Solutions Architectレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CloudTrailの証跡とイベント履歴
- CloudTrail Insightsとログファイルの整合性
- AWS Configルールと修復
- Conformance Packsと組織の証跡