Live:CloudOps Webinars & Hands-on Workshops ·Register ↗
メインコンテンツまでスキップ

CloudTrail Trails

AWS CloudTrail は、AWS インフラストラクチャ全体のアカウントアクティビティを監視および記録し、ストレージ、分析、および修復アクションを制御できるようにします。トレイルは、CloudTrail イベントを指定した Amazon Simple Storage Service (Amazon S3) バケットに配信するための設定です。

CloudTrail は、AWS インフラストラクチャにおけるアカウントアクティビティを監視および記録するための 3 種類のトレイルを提供しています。1 つ目は、すべての AWS リージョンからのアクティビティをキャプチャするマルチリージョントレイルです。デフォルトでは、AWS Management Console からトレイルを作成すると、すべてのリージョンに適用されます。2 つ目は、AWS CLI でのみ利用可能なシングルリージョントレイルで、特定のリージョンのアクティビティをキャプチャします。ただし、より広範なカバレッジのためにマルチリージョントレイルの使用を推奨します。

最後に、AWS Organizations サービスを使用する際に、組織内のすべての AWS アカウントに適用される組織トレイルがあります。このタイプのトレイルは、マルチアカウント環境において包括的なカバレッジと一元化されたモニタリングを提供します。

これらのトレイルタイプを使用することで、CloudTrail の設定をモニタリングおよび記録要件に合わせてカスタマイズできます。これはリージョンレベルで行うことも、組織全体にわたって行うこともできます。以下に、CloudTrail トレイルのベストプラクティスをいくつか示します。

すべての AWS アカウントとリージョンで CloudTrail を設定する

AWS アカウントでユーザー、ロール、またはサービスが実行したイベントの完全な記録を取得するには、すべての AWS リージョンでイベントをログに記録するように各トレイルを設定してください。会社または組織が使用するすべての AWS アカウントにこれらのトレイルを設定します。この設定により、イベントが発生した AWS リージョンに関係なく、すべてのイベントがログに記録されます。その結果、通常は使用されていないリージョンでの予期しないアクティビティを検出できます。グローバルサービスイベント(例:AWS Identity and Access Management および Amazon Route 53)も含まれ、ログに記録されます。すべてのリージョンに適用されるトレイルを作成すると、新しい AWS リージョンが自動的に含まれます。AWS Organizations を通じてマルチアカウントを設定している場合は、その組織内のすべての AWS アカウントのすべてのイベントをログに記録するトレイルを作成できます。

ユースケースごとに個別のトレイルを設定する

CloudTrail は、監査、セキュリティモニタリング、運用上のトラブルシューティングなどのユースケースをサポートしています。AWS では、各チームに必要な情報を提供できるよう、ユースケースごとに複数のトレイルを設定することを推奨しています。これを実現するには、異なるユーザーが管理するトレイルを作成します。トレイルは、ログファイルを別々の S3 バケットに配信するように設定できます。たとえば、セキュリティ管理者はすべてのリージョンに適用されるトレイルを作成し、1 つの AWS Key Management Service (AWS KMS) キーでログファイルを暗号化して、ログファイルの検証を有効にすることができます。同じ会社の開発者は、1 つのリージョンにのみ適用されるトレイルを作成し、特定の API アクティビティの通知を受け取るように Amazon CloudWatch アラームを設定することができます。

CloudTrail ログを、アクセスが制限された別のセキュリティ境界 (別の AWS アカウント) の S3 バケットに配信するよう設定する

監査目的で、専用の S3 バケットに別の管理ドメインでログファイルを保存することで、厳格なセキュリティコントロールと職務の分離を実施できます。この S3 バケットへのアクセスを制限することで、ログへの不正かつ無制限なアクセスの可能性を低減できます。これらのコントロールが整備されていれば、AWS アカウントの認証情報が侵害された場合でも、ログは別のドメインに保存されているため失われることはありません。

ログファイルを保存する Amazon S3 バケットで MFA 削除とバージョニングを有効にする

このS3バケットにMFA(多要素認証)を設定することで、バケットまたはバケット内のオブジェクトを完全に削除するために追加の認証が必要となるようにできます。MFA に加えて、バージョニングが有効なバケットは、誤った削除や上書きからオブジェクトを復元するのに役立ちます。たとえば、オブジェクトを削除した場合、Amazon S3 はオブジェクトを完全に削除する代わりに削除マーカーを挿入します。ほとんどの AWS ユーザーや管理者は悪意を持っていませんが、重要なログファイルを保存している S3 バケットを誰かが誤って削除してしまう可能性があります。これらの保護手段を追加することで、ログファイルが侵害されるリスクを低減できます。

CloudTrail ログファイルの整合性検証を有効にする

CloudTrail ログファイルの整合性検証により、ログファイルが削除または変更されたかどうかを確認できます。また、この検証を使用して、特定の期間中にアカウントにログファイルが配信されなかったことを確認することもできます。これらのインサイトは、セキュリティおよびフォレンジック調査において非常に価値があります。ログファイルの整合性を確保するための追加の保護レイヤーを提供します。CloudTrail ログファイルの整合性検証では、業界標準のアルゴリズムを使用しています。ハッシュには SHA-256、デジタル署名には RSA を使用した SHA-256 を採用しており、検出されることなくログファイルを変更することは計算上不可能です。

CloudTrail ログファイルの保存時の暗号化

デフォルトでは、CloudTrail によってバケットに配信されるログファイルは、Amazon S3 マネージド暗号化キー (SSE-S3) を使用した Amazon サーバー側暗号化によって暗号化されます。直接管理可能なセキュリティレイヤーを提供するために、CloudTrail ログファイルに AWS KMS マネージドキー (SSE-KMS) を使用したサーバー側暗号化を代わりに使用することができます。

トレイルのデータイベントを有効にする

データイベントは、S3 および AWS Lambda 上またはその内部で実行されるリソース操作への可視性を提供します。これらのイベントはデータプレーン操作とも呼ばれます。データイベントは、特に S3 に機密データを保存している場合や、Lambda 関数を通じて重要なビジネス操作が行われている場合、高頻度のアクティビティになることが多いです。機密データへの予期しないアクセスを可視化することで、データを保護するための是正措置を講じることができます。一部のコンプライアンスレポート(例:FedRAMP および PCI-DSS)ではデータイベントの有効化が必要とされているため、AWS は AWS Config マネージドルールまたは適切な Conformance Pack サンプルテンプレートを使用して、少なくとも 1 つのトレイルがすべての S3 バケットの S3 データイベントをログに記録していることを確認することを推奨しています。

高度なイベントセレクターをデータイベントで使用する

データイベントを使用する場合、高度なイベントセレクターはデータイベントログのより細かい制御を提供します。高度なイベントセレクターを使用すると、EventSource、EventName、ResourceARN などのフィールドの値を含めたり除外したりすることができます。高度なイベントセレクターは、正規表現に似た部分文字列のパターンマッチングによる値の包含または除外もサポートしています。これにより、ログに記録して料金を支払う CloudTrail データイベントをより細かく制御できます。たとえば、S3 の DeleteObject API をログに記録することで、受信する CloudTrail イベントを破壊的なアクションのみに絞り込み、コストを管理しながらセキュリティの問題を特定できます。CloudTrail を監査に使用する場合は、すべてのデータイベントを記録することがベストプラクティスであることに留意してください。ただし、データイベントを運用監視やその他のユースケースに使用する場合は、高度なイベントセレクターが非常に役立ちます。

CloudTrail と Amazon CloudWatch Logs の統合

Amazon CloudWatch は、ログ、メトリクス、イベントの形式で監視および運用データを収集するのに役立ちます。CloudTrail と CloudWatch Logs を統合すると、CloudTrail によってキャプチャされた特定のイベントをほぼリアルタイムで監視し、アラートを受け取ることができます。たとえば、異常な AWS API アクティビティに対してアラームと通知を設定できます。

CloudTrail を CloudWatch Logs と統合すると、CloudWatch Insights によって生成されたデータを視覚化することもできます。これらのインサイトにより、必要なデータを抽出できるため、クエリのプロセスが簡素化されます。たとえば、CloudWatch Logs を使用してログをほぼリアルタイムで Amazon Elasticsearch Service にストリーミングし、Kibana エンドポイントにアクセスしてデータを視覚化できます。

すべてのリージョンに Trail を適用する

AWS アカウントで IAM アイデンティティまたはサービスによって実行されたすべてのアクションをキャプチャするには、すべてのリージョンでイベントをログに記録するように各トレイルを設定してください。すべてのリージョンでイベントをログに記録することで、AWS アカウントで発生するすべてのイベントが、どのリージョンで発生したかに関わらず、確実にログに記録されます。

CloudTrail ログを中央の S3 バケットに配信する

CloudTrail ログを、アクセスが制限された別の AWS アカウントの中央 S3 バケットに配信するように設定します。Amazon S3 アクセスポリシーを定義することで、CloudTrail によって配信されたログにアクセスできるユーザーの権限を制限できます。これにより、ログへの不正アクセスを最小限に抑えることができます。

ログファイルを保存する S3 バケットのデータ保護を設定する

これを行うには、次の操作を実行します。

  • S3 バケットに追加のセキュリティレベルを加えるために、多要素認証 (MFA) を有効にします。MFA では、バケットまたはバケット内のオブジェクトを削除するリクエストに対して、2 つの形式の認証が必要です。
  • 不要な削除や変更からオブジェクトを復元できるように、S3 バケットのバージョニングを有効にします。この追加の保護レイヤーを加えることで、ファイルへの変更リスクを軽減できます。
  • S3 バケットに配信されるログファイルを暗号化する追加の保護手段として、CloudTrail ログファイルの暗号化を有効にします。
  • CloudTrail によって配信されたログファイルが配信後に変更されていないことを確認するために、ログファイルの検証を設定します。

S3 バケットのオブジェクトライフサイクル管理を設定する

CloudTrail のデフォルトでは、ログファイルはトレイルに設定された S3 バケットに無期限に保存されます。Amazon S3 オブジェクトのライフサイクル管理ルールを使用して、ビジネスおよび監査ニーズに合わせた独自の保持ポリシーを定義できます。たとえば、1 年以上経過したログファイルを Amazon Simple Storage Service Glacier (Amazon S3 Glacier) などの別のストレージ階層にアーカイブすることができます。また、一定の時間が経過した後にログファイルを削除することも可能です。

AWSCloudTrail_FullAccess ポリシーへのアクセスを制限する

このポリシーへのアクセスを制限する理由には、以下のものがあります。

  • AWSCloudTrail_FullAccess ポリシーを持つユーザーは、AWS アカウントの重要な監査機能を無効化または再設定できます。
  • このポリシーは、AWS アカウントの IAM アイデンティティに広く共有または適用することを意図していません。このポリシーの適用は、AWS アカウント管理者として行動することが期待される個人に限定してください。