証跡の Insights イベントの記録 - AWS CloudTrail

証跡の Insights イベントの記録

AWS CloudTrail Insights は、CloudTrail 管理イベントを継続的に分析することで、AWS ユーザーが write API コールに関連する異常なアクティビティを特定し、それに応答するのに役立ちます。

Insights イベントは、CloudTrail がアカウントで異常な write 管理 API アクティビティを検出したときにログに記録されます。CloudTrail Insights を有効にし、CloudTrail が異常なアクティビティを検出した場合、Insights イベントは証跡の宛先 S3 バケットに配信されます。CloudTrail コンソールで Insights イベントを表示すると、インサイトのタイプとインシデント期間も確認できます。CloudTrail 追跡でキャプチャされた他のタイプのイベントとは異なり、Insights イベントは、アカウントの典型的な使用パターンと大きく異なるアカウントの API 使用状況の変化を CloudTrail が検出した場合にだけログに記録されます。

CloudTrail Insights は、CloudTrail write 管理イベントを継続的にモニタリングし、数学的モデルを使用して、アカウントの API イベントとエラーレートアクティビティの通常のレベルを決定します。CloudTrail Insights は、通常のパターンの外にある動作を特定し、Insights イベントを生成し、これらのイベントを証跡に選択した送信先 S3 バケットの /CloudTrail-Insight フォルダに配信します。CloudTrail のために AWS Management Console 内の Insights イベントにアクセスして表示することもできます。コンソールで、AWS CLI を使用して Insights イベントにアクセスして表示する方法の詳細については、このガイドの「CloudTrail Insights イベントの表示」を参照してください。

デフォルトでは、証跡は管理イベントを記録し、データイベントや Insights イベントは記録しません。データイベントおよび Insights イベントには追加料金が適用されます。詳細については、AWS CloudTrail 料金を参照してください。

アカウントでイベントが発生すると、CloudTrail はイベントが証跡の設定と一致するかどうかを評価します。証跡設定に一致するイベントだけが、Amazon S3 バケットと Amazon CloudWatch Logs ロググループに配信されます。

CloudTrail Insights について

CloudTrail Insights を使用すると、Insights イベントを発生させることで、AWS アカウントの異常な API ボリュームまたはエラーレートのアクティビティを検出します。CloudTrail Insights は、ベースラインとも呼ばれる API コールボリュームと API エラーレートの通常のパターンを測定し、コール量や API エラーレートが通常のパターン外にある場合に Insights イベントを生成します。API コールボリュームに関する Insights イベントは、write 管理 API に対して生成されます。一方、API エラーレートに関する Insights イベントは、readwrite の両方の管理 API に対して生成されます。

証跡で CloudTrail Insights を有効にした後、異常なアクティビティが検出された場合、CloudTrail が最初の Insights イベントを配信するまでに最大 36 時間かかることがあります。CloudTrail Insights は、グローバルではなく 単一のリージョンで発生する管理イベントを分析します。CloudTrail Insights イベントは、サポート対象の管理イベントが生成されるのと同じリージョンに生成されます。

これらの Insights イベントの例を次のイメージに示します。Insights イベントの詳細ページを開くには、[ダッシュボード] ページまたは [Insights] ページから Insights イベント名を選択します。

証跡で CloudTrail Insights を無効にするか、証跡の記録を停止した (CloudTrail Insights が無効になります) 場合、Insights を有効にした前の期間の日付で、CloudTrail Insights が送信先 S3 バケットに保存されているか、コンソールの [Insights] ページに表示されている可能性があります。

フィルター列

左側の列には、サブジェクト API に関連し、同じ Insights イベントタイプを持つ Insights イベントのリストが表示されます。この列では、詳細情報が必要な Insights イベントを選択できます。この列でイベントを選択すると、そのイベントが [Insights graph] タブのグラフで強調表示されます。デフォルトでは、CloudTrail はフィルターを適用し、['CloudTrail イベント] タブを、Insights イベントをトリガーした異常なアクティビティの期間中に呼び出された特定の API に関するものに設定します。異常なアクティビティの期間中に呼び出されたすべての CloudTrail イベント (Insights イベントとは無関係なイベントを含む) を表示するには、フィルターをオフにします。

[Insights graph] タブ

[Insights graph] タブでは、Insights イベントの詳細ページには、1 つ以上の Insights イベントがログに記録される前後の期間に発生した API コールボリュームまたはエラーレートのグラフが表示されます。グラフでは、Insights イベントは縦棒で強調表示され、棒の幅は Insights イベントの開始時刻と終了時刻を示します。

この例では、強調表示している縦帯は、アカウント内の AWS Systems Manager SendCommand API コールの数が以上であることを示しています。強調表示された領域で、SendCommand コールの数がアカウントの通常の範囲である 1 分あたり 0.0442 回を超えたため、異常なアクティビティが検出されると CloudTrail がInsights イベントを記録しました。Insights イベントでは、午前 5 時 50 分から午前 5 時 55 分までの 5 分間に 15 件の SendCommand の呼び出しがあったことが記録されています。これは、アカウントに対して予想されるよりも毎分約 2 回多い API コールです。この例では、グラフの期間は 3 時間です。つまり、太平洋夏時間 2021年7月15日 午前 4 時 30 分から 2021 年 7 月 15 日 午前 7:30 までです。このイベントの開始時刻は、太平洋夏時間 2021 年 7月 15 日 午前 6:00で、終了時刻はその 2 分後です。終了 Insights イベント (強調表示されていない) は、異常なアクティビティが 午前 6 時 16 分頃に終了したことを示しています。

ベースラインは、Insights イベントの開始前の 7 日間にわたって計算されます。ベースライン期間 (CloudTrail が API での通常のアクティビティを測定する期間) 値は約 7 日間ですが、CloudTrail はベースライン期間を整数の日数に四捨五入するので、正確なベースライン期間は変化する可能性があります。


                    CloudTrail Insights イベントとして記録された異常な API アクティビティを示す  詳細ページ。

ツールバーにある Zoom コマンドを使って終了 Insights イベントを拡大すると、開始時刻と終了時刻を表示できます。この例は、[Zoom] (ズーム) を選択し、強調表示された Insights イベントの一方の端をズームカーソルで少しドラッグすると、Insights イベントが展開され、タイムラインの詳細が表示されることを示しています。


                    拡大してタイムラインの詳細が表示された CloudTrail Insights イベント。

異常なアクティビティを特定するために分析された CloudTrail イベントを表示するには、[CloudTrail events] (CloudTrail イベント) タブを開きます。この例では、CloudTrail は 12 個のイベントを分析し、そのうちの 4 つが Insights イベントをトリガーしました。


                    拡大してタイムラインの詳細が表示された CloudTrail Insights イベント。

次のスクリーンショットでは、API エラーレート Insights イベントの Insights グラフタブが示されてています。強調表示されている領域では、GetRolePolicy IAM API コールでの NoSuchEntityException エラーの発生が、API コールの 1 分あたりのベースライン平均 0.0017 NoSuchEntityException エラーを上回ったため (インサイト期間中に 1 分あたり平均 18 個のエラーが発生)、Insights イベントがログに記録されています。この例では、Insights イベントをトリガーした CloudTrail イベントの数が、1 分あたり 18 個の NoSuchEntityException エラーのインサイト平均と一致します。API コールレートのグラフとは異なり、API エラーレートは 2 本の線を対照的な色で示しています。片方は異常な数のエラーが発生した IAM API GetRolePolicy の呼び出しを測定する線で、もう片方は異常なアクティビティがログに記録されたエラー NoSuchEntityException を測定する線です。


                    Insights イベントとして記録された異常な API アクティビティを示す CloudTrail Insights の詳細ページ。

[Attributions] (属性) タブ

[属性] タブには、Insights イベントに関する次の情報が表示されます。[Attributions] (属性) タブは、Insights アクティビティの原因とソースを特定するのに役立ちます。上位ベースラインの領域を展開して、通常期間のユーザー ID、ユーザーエージェント、およびエラーコードアクティビティを、それらの Insights アクティビティ期間の結果と比較します。[Top baseline user identity ARNs] (上位ベースラインユーザー ID ARN)、[Top baseline user agents] (上位ベースラインエージェント)、および[Top baseline error codes] (上位ベースラインエラーコード) では、ベースライン平均のみが表示されます。ベースライン平均は、Insights イベントの開始時刻前の約 7 日間の、ユーザーアイデンティティもしくはユーザーエージェントによってログに記録される、またはエラーコードにつながる API のイベントの過去平均です。


                    属性を示す CloudTrail Insights イベントの詳細ページ。

次の図に示すように、[Attributions] (アトリビューション) タブには、エラーレートの Insights イベントの上位ユーザー ID ARN と上位ユーザーエージェントのみが表示されます。エラーレートの Insights イベントでは、上位エラーコードは必要ありません。


                    エラーレートの Insights イベントの属性を示す CloudTrail Insights イベントの詳細ページ。
  • 上位ユーザー ID ARN - この表は、異常なアクティビティ期間およびベースライン期間中に API コールに寄与した AWS ユーザーまたは IAM ロール (ユーザーアイデンティティ) の上位 5 までを、API コールの平均数の降順で示しています。異常なアクティビティに寄与したアクティビティ総数としての平均の割合を括弧内に示しています。5 以上のユーザー ID ARN が異常なアクティビティに寄与した場合、そのアクティビティは [Other] の列にまとめて表示されます。

  • 上位ユーザーエージェント - この表は、異常なアクティビティ期間およびベースライン期間中に API コールに寄与したユーザー ID による AWS ツールの上位 5 までを、API コールの平均数の降順で示しています。これらのツールには、AWS Management Console、AWS CLI、または AWS SDK が含まれます。例えば、ec2.amazonaws.com という名前のユーザーエージェントは、Amazon EC2 コンソールが API を呼び出すために使用されたツールの中にあったことを示します。異常なアクティビティに寄与したアクティビティ総数としての平均の割合を括弧内に示しています。5 以上のユーザーエージェントが異常なアクティビティに寄与した場合、そのアクティビティは [Other] の列にまとめて表示されます。

  • Top error codes (上位エラーコード) - API コールレートの Insights イベントに対してのみ表示されます。この表は、異常なアクティビティおよびベースライン期間中に API コールで発生したエラーコードの上位 5 つまでを、API コールの最大数から最小数の順に表示しています。異常なアクティビティに寄与したアクティビティ総数としての平均の割合を括弧内に示しています。異常なアクティビティまたはベースラインアクティビティ中に 5 つ以上のエラーコードが発生した場合は、それらのアクティビティは [Other] の列にまとめて表示されます。

    None の値を上位 5 つのエラーコード値のうちの 1 つとして使用すると、Insights イベントに寄与したコールのかなりの割合がエラーにならなかったことを意味します。エラーコードの値が None、表内に他のエラーコードがない場合、[Insight average] および [Baseline average] の列は、Insights イベント全体の列と同じです。また、これらの値は、[API calls per minute] の [Insights graph] タブの [Insight average] および [Baseline average] 凡例に表示されます。

ベースライン平均とインサイト平均

ベースライン平均インサイト平均は、上位ユーザ ID、上位ユーザエージェント、および上位エラーコードに対して表示されます。

  • Baseline average (ベースライン平均) - アカウントの特定のリージョンで、過去約 7 日内に測定された、Insights イベント がログに記録された API での 1 分あたりの標準的な発生率。

  • Insights average (インサイト平均) - Insights イベントをトリガーしたこの API の 1 分あたりのコールまたはエラーの割合。開始イベントの CloudTrail Insights 平均は、Insights イベントをトリガーした API での 1 分あたりの API コールまたはエラーの割合です。通常、これは異常なアクティビティの最初の 1 分です。終了イベントのインサイト平均は、開始 Insights イベントと終了 Insights イベントの間の異常なアクティビティの期間における 1 分あたりの API コールまたはエラーの割合です。

[CloudTrail イベント] タブ

[CloudTrail events] タブで、異常なアクティビティが発生したと判断するために CloudTrail が分析した関連イベントを表示します。デフォルトで、フィルターはすでに Insights イベント名に適用されています。これは関連する API の名前でもあります。異常なアクティビティの期間中に記録されたすべての CloudTrail イベントを表示するには、[Only show events for selected Insights event] をオフにします。[CloudTrail イベント] タブには、Insights イベントの開始時刻と終了時刻の間に発生したサブジェクト API に関連する CloudTrail 管理イベントが表示されます。これらのイベントは、より詳細な分析を実行して、Insights イベントの考えられる原因と、異常な API アクティビティとエラーレートアクティビティの理由を特定するのに役立ちます。

[Insights イベントレコード] タブ

どの CloudTrail イベントも同様に、CloudTrail Insights イベントは JSON 形式のレコードです。[Insights event record] タブには、Insights の開始イベントと終了イベントの JSON 構造とコンテンツが表示されます。これはイベントペイロードと呼ばれることもあります。Insights イベントレコードのフィールドとコンテンツの詳細については、このガイドの「Insights イベントのレコードフィールド」および「CloudTrail Insights insightDetails 要素」を参照してください。

AWS Management Console を使用した Insights イベントの記録

既存の証跡で CloudTrail Insights イベントコレクションを有効にします。デフォルトでは、Insights イベントは有効になっていません。

  1. CloudTrail コンソールの左のナビゲーションペインで [証跡] を選択し、証跡の名前を選択します。

  2. [Insights events] で、[編集] を選択します。

    注記

    Insights イベントの記録には追加料金が適用されます。CloudTrail の料金については、「AWS CloudTrail 料金」を参照してください。

  3. [Event type] (イベントタイプ) で、[Insights events] (Insights イベント) を選択します。[Write] 管理イベントをログ記録して、Insights イベントをログに記録している必要があります。

  4. [Insights events] (Insights イベント) の [Choose Insights types] (Insights の種類を選択) で、[API call rate] (API コールレート) と [API error rate] (API エラー率) のどちらか一方、または両方を選択選択します。

  5. [Save changes] (変更の保存)を選択して、変更を保存します。

異常なアクティビティが検出された場合、CloudTrail が最初の Insights イベントを配信するまでに最大 36 時間かかることがあります。

AWS Command Line Interface を使用した Insights イベントの記録

AWS CLI を使用して、Insights イベントのログを記録するように証跡を設定できます。

証跡が Insights イベントをログに記録しているかどうかを確認するには、get-insight-selectors コマンドを実行します。

aws cloudtrail get-insight-selectors --trail-name TrailName

次の結果は、証跡に対するデフォルト設定を示しています。デフォルトでは、証跡は Insights イベントを記録しません。Insights イベントコレクションが有効になっていないため、InsightType 属性値が空になっていて、Insights イベントセレクタが指定されていません。

Insights セレクターを追加しない場合、get-insight-selectors コマンドは次のエラーメッセージを返します。「GetInsightSelectors 操作を呼び出すときにエラーが発生しました (InsightNotEnabledException): 証跡で Insights が有効になっていません。証跡の設定を編集して Insights を有効にしてから、もう一度操作を試してください。

{ "InsightSelectors": [ ], "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/TrailName" }

Insights イベントをログに記録するように証跡を設定するには、put-insight-selectors コマンドを実行します。次に、 を含むように証跡を設定する方法の例を示します。Insights セレクターの値は、ApiCallRateInsightApiErrorRateInsight、または両方になります。

aws cloudtrail put-insight-selectors --trail-name TrailName --insight-selectors '[{"InsightType": "ApiCallRateInsight"},{"InsightType": "ApiErrorRateInsight"}]'

次の結果は、証跡用に設定された Insights イベントセレクタを示しています。

{ "InsightSelectors": [ { "InsightType": "ApiErrorRateInsight" }, { "InsightType": "ApiCallRateInsight" } ], "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/TrailName" }

AWS SDK を使用してイベントのログを記録する

GetInsightSelectors オペレーションを実行して、証跡が証跡 Insights イベントを記録しているかどうかを確認します。Insights イベントを記録するように証跡を設定するには、PutInsightSelectors オペレーションを使用します。詳細については、AWS CloudTrail API リファレンスを参照してください。

Amazon CloudWatch Logs へのイベントの送信

CloudTrail は、CloudWatch Logs への Insights イベントの送信をサポートします。CloudWatch Logs のロググループに Insights イベントを送信するように証跡を設定すると、CloudTrail は証跡で指定されている Insights イベントだけを送信します。たとえば、管理イベントおよび Insights イベントを送信するように設定した場合、証跡は管理イベントおよび Insights イベントを CloudWatch Logs ロググループに配信します。CloudWatch コンソールまたは API を使用して CloudWatch Events を設定するには、CloudWatch コンソールの [ルールの作成] ページで AWS Insight via CloudTrail イベントタイプを選択します。詳細については、「Amazon CloudWatch Logs による CloudTrail ログファイルをモニタリングする 」を参照してください。

次の画像は、CloudWatch Events で作成されたルールの例 Insights-test-rule を示しています。CloudTrail が Insights イベントをログに記録すると、ルールは Amazon SNS トピックをターゲットにして、SNS トピックで指定された受信者に通知を送信します。


                CloudTrail Insights 用の新しい CloudWatch Events ルールを設定します。

イベントソースとターゲットを選択したら、ルールに名前を付け、説明を入力します。完了したら、[Create rule] (作成) を選択します。


                CloudTrail Insights の新しい CloudWatch Events ルールに名前を付けます。

CloudTrail がInsights イベントをログに記録すると、SNS トピックの受信者は SNS 通知を受信する必要があります。