Amazon Web Services ブログ
AWS CloudTrail データイベントの集約とインサイト機能の発表
AWS CloudTrail は、AWS アカウントの API 呼び出しとイベントを記録し、ガバナンス、コンプライアンス、運用上のトラブルシューティングのための監査証跡を提供します。お客様は CloudTrail でデータイベントを有効にすることで、リソースレベルの操作に対するより深い可視性を得ることもできます。これには、Amazon S3 のオブジェクトレベル操作(GetObject/PutObject など)や AWS Lambda 関数の呼び出しが含まれます。データイベントは、不正アクセスの検出、セキュリティインシデントの調査、およびデータプレーンに関する詳細なアクティビティログを必要とするコンプライアンス要件の充足に役立ちます。
データイベントは、AWS インフラストラクチャにおける重要な監視ポイントになります。Amazon S3 オブジェクトへのアクセス、Amazon DynamoDB の操作、AWS Lambda 関数の呼び出しのいずれにおいても、これらのイベントを理解することはセキュリティ、コンプライアンス、運用の優位性にとって不可欠です。しかし、これらのイベントは膨大な量のデータを生成する可能性があり、ダウンストリームワークフローのコストとストレージ要件の増大を招く恐れがあります。組織はこの点に関して難しい課題に直面することがよくあります:多くの組織は、ダウンストリームシステムに送信されるデータ量を削減することが困難であったり、データイベントの異常を特定したり、異常が発生した際に迅速に対応することに苦労しています。これらの課題は、不必要なコスト負担を生み出し、トラブルシューティングの取り組みを遅らせ、潜在的なセキュリティリスクを放置してしまう可能性をもたらします。
本日、データイベントの監視と対応方法を変革する AWS CloudTrail の強力な新機能を 2 つご紹介できることを嬉しく思います:CloudTrail データイベント用のイベント集約と Insights です。各機能は、お客様のそれぞれのニーズに対応します。イベント集約は、ダウンストリームワークフローのデータ量を最適化し、API アクティビティの変化パターンを特定しやすくします。そして CloudTrail Insights は、データイベントの異常を特定し、セキュリティ監視を強化するのに役立ちます。インフラストラクチャコストの最適化、コンプライアンス要件の充足、セキュリティインシデントの調査といった目的に対して、これらの新機能は、大量のログデータでチームを圧倒することなく、適切なソリューションを提供します。
この記事では、これらの新機能がどのように機能するかを紹介し、データイベントを分析して実用的なインサイトを作成する方法を説明します。
前提条件
このウォークスルーには、データイベントが有効になっている既存の CloudTrail 証跡が必要です。新しい証跡を作成する際に、集約イベントと Insights イベントを直接有効にすることもできます。また、これら 2 つの新機能は CloudTrail の追加コストが発生します。料金の詳細については、AWS CloudTrail の料金をご覧ください。
注意:イベント集約とデータイベント用インサイトを使用するには、証跡でデータイベントを有効にする必要があります。
イベント集約
データイベント用の CloudTrail イベント集約の設定
CloudTrail イベント集約は、データイベントを 5 分間のサマリーに統合し、アクセス頻度、エラー率、最も頻繁に使用された API アクションなどの主要なトレンドに対する可視性を提供します。この要約アプローチは、セキュリティ監視、運用監視にとって重要なインサイトを維持しながら、ダウンストリームの分析システムに送信されるデータ量を大幅に削減します。
このサンプルシナリオでは、データイベントを有効にしている既存の証跡に対して集約を有効化する方法を説明します。
- CloudTrail コンソールに移動します。
- 左側のナビゲーションメニューで、証跡を選択します。
- CloudTrail イベント用の証跡を選択します。
- Aggregated events で、編集を選択します。
- Aggregation templateで、サービスが提供する以下のテンプレートから任意のものを選択して、データイベントを集約できます。
-
- API Activity:API 呼び出しのデータイベントに関して、5 分単位のサマリーを取得します。このテンプレートを使用することで、頻度、呼び出し元、ソースを含む API の使用パターンを理解できます。
- Resource Access:AWS リソースのアクティビティパターンを取得します。このテンプレートを使用することで、AWS リソースがどのようにアクセスされているか、5 分間のウィンドウで何回アクセスされているか、誰がリソースにアクセスしているか、どのようなアクションが実行されているかを理解できます。
- User Actions:API 呼び出しを行う IAM プリンシパルに基づいたアクティビティパターンを取得します。
図 1:AWS CloudTrail 集約イベント
- 変更の保存を選択します。
CloudTrail は証跡に設定されているリソースに関して、全てのデータイベントの集約を開始します。(補足:この機能は、新しい証跡を作成する際にも設定できます)。
CloudTrail 集約イベントの分析
集約イベントは、証跡に設定した S3 バケット内の CloudTrail-Aggregated フォルダに配信されます。その後、Amazon Athena を使用して S3 バケットからこれらのイベントをクエリしたり、CloudTrail イベントを CloudWatch Logs に配信している場合は CloudWatch Logs Insights を使用することもできます。
CloudWatch Logs Insights を使用して、API アクティビティの集約イベントをクエリし、5 分間の API アクティビティの集約カウントを表示する方法を見てみましょう。次に、全体的なアクティビティに寄与したユーザー ID とリソースを表示します。
-
- CloudWatch コンソールに移動します。
- 左側のナビゲーションメニューで、Logs Insights を選択します。
- Query definition セクションで、SQL を選択します。
- 以下のクエリをコピーして、エディタウィンドウに貼り付けます。(注意:[Log Group] を CloudTrail 用のロググループ名に置き換える必要があります)。
SQL クエリ:
SELECT accountId, awsRegion, `summary.primaryDimension.dimension` as Dimension, `timeWindow.windowStart` as `Start Time`,
`timeWindow.windowEnd` as `End Time`,`summary.details.3.statistics.0.name` as sourceIpAddress,
`summary.primaryDimension.statistics.0.name` as eventName, `summary.primaryDimension.statistics.0.value` as Count,
`summary.details.1.statistics.0.name` as userIdentity, `summary.details.0.statistics.0.name` as resource,
`summary.details.0.statistics.0.value` as `Resource Count`
FROM `[Log Group]`
Where `eventCategory` = 'Aggregated'
and `summary.primaryDimension.dimension` = 'eventName'
ORDER BY `timeWindow.windowStart`, `timeWindow.windowEnd` DESC;
-
- クエリの実行をクリックすると、結果が表示されます。
図 2: CloudWatch Logs Insights のクエリ結果
クエリ結果には、集約イベントの各期間で実行された API アクションと全体のカウントが表示されます。また、API アクティビティの全体カウントに寄与したユーザーとリソースに関して、追加の統計情報も表示されます。さらに、追加の分析のために Resource Access および User Access 集約テンプレートに関連するイベントに対して、同じ要領でクエリを実行することもできます。
サブスクリプションフィルターによる集約イベントのダウンストリームへの送信
イベント集約は、データイベントを 5 分間のサマリーに統合し、全体のカウントを提供するとともに、イベント集約中にキャプチャされた全体カウントに寄与したユーザー ID、API アクティビティ、またはリソースに関する主要な統計情報を表示します。イベント集約レコードのフィールドに関する詳細は、集約イベントの CloudTrail レコードの内容のドキュメントを参照してください。イベント集約がデータイベントと比較して配信するイベント量を削減している例を以下に示します。
図 3:CloudTrail におけるデータイベント数と集約イベントの総数の比較
CloudTrail ログに対してサブスクリプションフィルターを作成し、CloudWatch Logs から Kinesis Data Streams、Amazon Data Firehose、Lambda 関数、または Amazon OpenSearch Service などの宛先にデータイベントではなく集約イベントを送信することで、ダウンストリームのシステムに送信されるデータ量を削減できます。
CloudTrail の管理イベントと集約イベントのみを送信するサブスクリプションフィルターの設定方法を見てみましょう。
- CloudWatch コンソールに移動します。
- 左側のナビゲーションメニューで、ロググループを選択します。
- CloudTrail に使用されているロググループを選択します。
- サブスクリプションフィルタータブを選択します。
- 作成を選択し、Amazon Kinesis Data Streams、AWS Lambda、Amazon Data Firehose、または Amazon OpenSearch Service のいずれかを選択します。
- 次に、サブスクリプションフィルターに以下のログ形式とフィルターパターンを使用します。
-
- ログの形式: JSON
- サブスクリプションフィルターのパターン: { ($.eventCategory = “Management”) || ($.eventCategory = “Aggregated”) }
図 4:CloudWatch サブスクリプションフィルター
データイベントのインサイト
データイベントに対する CloudTrail Insights の設定
AWS CloudTrail Insights は、CloudTrail イベントを分析することで、AWS アカウント内の異常な API アクティビティのパターンを自動的に検出する高度な機能です。以前は管理イベントのみが対象でしたが、現在はデータイベントに対しても、アカウントの通常時と大きく異なる使用パターンを識別できるようになりました。機能を有効化すると、CloudTrail Insights は API コールレートとエラーレートを監視し、リソースプロビジョニングの突然の急増、アクセスパターンやエラーレートなどに関する異常を検出したときに Insights イベントを生成します。
このサンプルシナリオでは、既存の CloudTrail 証跡に対してデータイベント用の Insights イベントを設定する方法を説明します。
- CloudTrail コンソールに移動します。
- 左側のナビゲーションメニューで、証跡を選択します。
- CloudTrail イベントの証跡を選択します。
- Insights イベントの編集を選択します。
- Data events Insights types で、以下のオプションを選択できます。
-
- API コールレートインサイト – 1 分あたりに発生するデータ API 呼び出しの数が API コールレートのベースラインから逸脱したときにインサイトを生成します。書き込み操作に関するデータ API 呼び出しのみを計測します。
- API エラーレートインサイト – 失敗してエラーを返したデータ API 呼び出しの数がエラーレートのベースラインから逸脱したときにインサイトを生成します。読み取りと書き込みの両方のデータ API 呼び出しを計測します。
図 5:データイベントに対する Insights イベントの設定
Insights イベントを有効にすると、CloudTrail はまず通常のアクティビティパターンのベースラインを確立する必要があり、最初の Insights イベントが配信されるまでに最大 36 時間かかることがあります。また、Insights イベントを無効にしてから再度有効にした場合や、証跡のログ記録を停止してから再開した場合も、同様に Insights イベントの配信が再開されるまでに最大 36 時間かかる可能性があります。
データイベントに対する CloudTrail Insights の分析
CloudTrail Insights イベントは、標準の CloudTrail イベントとは異なり、CloudTrail がアカウントの通常の API アクティビティのパターンからの逸脱を検知した場合にのみ生成されます。コンソールを通じてインサイトイベントを表示する方法を見てみましょう:
- CloudTrail コンソールに移動します。
- 左側のナビゲーションメニューで、Insights を選択します。
- Data events タブを選択して、インサイトイベントのリストを表示します。
- リストから Insights イベントを選択して、詳細を表示します。
図 6:CloudTrail Insights の Insights イベントの一覧
- Insights イベントの詳細ページには、異常なアクティビティのタイムラインのグラフが表示されます。
図 7:Insights イベントの詳細
さらに、CloudWatch メトリクスフィルターや Event Bridge ルールを使用して、特定のインサイトパターンに基づいてアラームと通知を設定できます。設定方法の詳細については、ブログ記事 Leveraging AWS CloudTrail Insights for Proactive API Monitoring and Cost Optimization および Analyzing AWS CloudTrail in Amazon CloudWatch をご覧ください。
クリーンアップ
追加料金の発生を防ぐため、このウォークスルー中に作成した CloudTrail Insights と集約イベントの設定を削除してください。
まとめ
CloudTrail イベント集約とデータイベントの Insights は、さまざまなお客様のニーズに対応する強力な新機能を提供します。CloudTrail 集約イベントは、CloudTrail のデータをダウンストリームワークフローに送信するお客様向けのソリューションを提供し、必要な可視性を維持しながらデータ量と関連コストの削減を支援します。CloudTrail Insights は、異常やパターンを明確に特定するために必要なコンテキストを提供し、セキュリティチームと運用チームが手動分析なしで異常なアクティビティを検出できるよう支援します。この記事では、データ処理パイプラインを最適化する CloudTrail イベント集約の設定方法と、異常なアクティビティパターンを自動的に検出し、CloudWatch メトリクスフィルターを使用してアラートを作成するためのデータイベント用 CloudTrail Insights の設定方法を説明しました。これらの新しい CloudTrail の機能が、セキュリティ体制の強化やコストの最適化にどのように役立つか詳しく知るには、AWS CloudTrail ドキュメントをご覧ください。
本ブログは Solutions Architect の 加藤 が翻訳しました。原文はこちらです。