AWS CloudTrailのセキュリティ対策

SHARE:

Source: pixabay.com

アマゾン ウェブ サービス(AWS)アカウントを管理される場合、そのアカウントのセキュリティを最優先事項とされていることでしょう。AWSは、セキュリティの確保、保護、監査機能の提供のために多くのツールを提供しております。AWS CloudTrailは、セキュリティ対策ツールキットにおいて重要な要素となるべきものです。本記事では、CloudTrailとその機能を活用してAWSアカウントを保護する方法について探っていきます。また、CloudTrail自体を悪意ある攻撃者から保護する方法についてもご説明いたします。これにより、CloudTrailが生成・保存するデータを信頼してご利用いただけます。

AWS CloudTrailとは?

AWS CloudTrailは、AWSアカウント内におけるユーザー操作を追跡・記録するサービスです。これらの操作には、AWS APIへの呼び出し、AWS Management Console内での操作、およびAWS Command Line Interfaceからの呼び出しが含まれます。グローバルに展開されたリージョン全体で利用可能な数百ものサービスが存在するAWSアカウントにおいて、これらのインサイトはコンプライアンスの確保、監査業務の実施、リスクの特定、適切な利用状況の監視に不可欠です。

CloudTrailサービスは、上記の各アクティビティをCloudTrailイベントとして記録します。CloudTrailイベントは、どのユーザーまたはサービスがリクエストを開始したかを時系列で表示するとともに、異常や予期せぬ操作(悪意のあるものも含む)を分析し適切に対応するための関連詳細情報を提供します。

次に、AWSアカウント内でCloudTrailへのアクセスを設定する方法について説明いたします。その後、CloudTrail がイベントをログに記録するプロセスを詳細に検証し、それらのイベントに含まれる詳細情報について説明いたします。サービスからの一連のイベントは トレイル と呼ばれます。トレイルの保護の重要性について議論し、AWS CloudTrail を有効化する際に実装すべきベストプラクティスをご紹介いたします。各ベストプラクティスについては、詳細に説明しながら進め、最後に要約を記載いたしますので、簡潔な参照リストとしてご利用いただけます。

CloudTrail のセキュリティ設定

新しい AWS アカウントを作成すると、CloudTrail は自動的に有効になります。最初に行うべき手順の一つは、CloudTrail イベントトレイルを管理する権限を持つユーザーグループを作成することです。このグループには、AWS が管理する IAM ポリシーを適用することで権限を付与できます。異なるアクセスレベルを持つ 2 つの管理ポリシーをご利用いただけます。

AWSCloudTrail_FullAccess

このマネージドポリシーは、ユーザーがイベントを表示したり CloudTrail の設定を管理したりする権限を制御します。このポリシーを適用する前に、CloudTrail の機能を編集する権限を慎重に審査・承認されたアカウント管理者だけに付与するよう、特にご注意ください。このポリシーにより、ユーザーは CloudTrail の監査機能を有効化、無効化、再構成することが可能となります。

AWSCloudTrail_ReadOnlyAccess

このマネージドポリシーは、関連付けられたユーザーがトレイルの閲覧やイベント履歴のダウンロードを可能にしますが、CloudTrail設定の変更や無効化は許可しません。このアクセス権を付与するユーザーについては、依然として慎重な判断が必要です。ただし、監査担当者やアカウント内の使用状況の監視・分析を担当するユーザーには適切なポリシーです。

CloudTrailの権限に関する追加情報、またはマネージドポリシーの詳細な理解をご希望の場合は、AWS CloudTrailドキュメント内のCloudTrail管理の権限付与をご参照ください。

CloudTrail設定を管理する権限のあるユーザーグループが用意できたので、アカウント上でトレイルの設定と閲覧が可能となります。

CloudTrail機能の管理

まずはCloudTrailサービスの概要をご説明いたします。AWSアカウントにログイン後、CloudTrailのホームページへお進みください。画面左側のナビゲーションメニューよりイベント履歴を選択します。デフォルトでは、CloudTrailは過去90日間の全イベント記録を保持します。下記のスクリーンショットは、ルートユーザーとしてAWSコンソールにログインし、CloudTrailを作成、さらにCloudTrail管理グループを作成する手順を示しております:

CloudTrail イベント履歴

各操作に対して複数のイベントが関連付けられていることにご注目ください。例えば、新しいトレイルを作成した際には、CloudTrail.PutEventSelectors API への呼び出しと S3.PutBucketPublicAccessBlock API への呼び出しが行われました。操作を実行したユーザー名、タイムスタンプ、影響を受けたリソースの名前や種類などの詳細情報を確認できます。イベント名をクリックすると、イベントレコードの全内容が表示され、追加の分析に役立ちます。

イベント履歴は有用ですが、現在のリージョン内のイベントのみが表示されます。すべてのAWSリージョンにわたるイベントを収集するCloudTrailを作成し、以下の内容を対象に設定できます:

  • 管理イベント
  • データイベント(以下のようなサービスの読み取り・書き込みイベントを捕捉):
    • DynamoDB および DynamoDB Streams
    • S3、S3 Outpost、S3 Access Points
    • Managed Blockchain
  • インサイトイベント(例):
    • API 呼び出し率
    • API エラー率

ほとんどの場合、CloudTrail ログを S3 に保存する際の料金は AWS が負担しますが、CloudTrail インサイトイベントには追加料金が発生する場合があります。

新しいCloudTrailを作成するには、CloudTrailダッシュボードに移動し、トレイルの作成ボタンを選択します。AWS内の他の作成ウィザードと同様に、コンソールでは以下の手順を順を追って進めます:

  1. トレイルの属性(名前、S3ストレージの場所、暗号化など)を定義します。
  2. トレイルが監視すべきイベントの種類を特定します。
  3. 内容を確認し、作成を確定します。

AWSドキュメントには、新しいCloudTrailトレイルの作成プロセスを詳細に解説した優れたチュートリアルが掲載されています。このチュートリアルでは、CloudTrailの利用コストに関するドキュメントやその他の有用な情報へのリンクも提供されています。

CloudTrailのセキュリティリスクと機能

CloudTrailの閲覧および管理アクセスを、組織内で慎重に選定・審査された限られた関係者に限定することの重要性については既に説明いたしました。トレイルとログの管理・閲覧には、安全なアクセスを確保する必要があります。ここでは、トレイルとそのイベント記録の両方を安全に保つために講じられる追加のリスク対策とセキュリティ対策についてご説明いたします。

AWS は CloudTrail イベントログを、一般公開されていない S3 バケットに保存します。ただし、アカウント内の特定のユーザーが依然として当該バケットにアクセスできる可能性があります。新しい CloudTrail を作成する際の重要な手順として、ログの閲覧および分析を担当する者にのみバケットへのアクセスを制限することが挙げられます。AWS では、CloudTrail ログ用に一元化された S3 バケットを作成し、以下のセキュリティ制限を適用することを推奨しています:

  • バケットへのアクセス権限を付与する際には、最小権限の原則を適用してください。
  • バケットにライフサイクルルールを追加し、Amazon Glacier へのアーカイブを含む、バケット内ファイルの長期保存を確保してください。
  • 削除操作には多要素認証(MFA)の検証を必須とするバケットポリシーを追加してください。

さらに、イベントログの内容を保護し、適切なツールやアプリケーションのみがアクセスできるようにするため、サーバーサイド暗号化を有効化することを推奨いたします。新しいトレイルを作成する際、トレイル作成プロセスの最初のステップでチェックボックスを選択することで、SSE-KMS暗号化を有効化できます。この手順の詳細およびAWS Key Management System(KMS)の使用方法については、AWSドキュメントをご参照ください。

AWS CloudTrail単体でも、AWSアカウント内のイベントを追跡・監視する上で不可欠かつ強力なツールです。検討すべきアイデアの一つとして、CloudTrail設定自体の変更を監視するトレイルの構成が挙げられます。また、CloudTrailの機能をAWS Configなどの他のAWSサービスと組み合わせることも有効です。AWS Configは、アカウント内のAWSリソース設定の変更を監視します。AWS CloudTrailとAWS Configを併用することで、設定変更を行った担当者と、その変更が実施された時系列のタイムラインを特定することが可能となります。このプロセスについては、AWSのブログ記事「リソースへの変更を行った担当者を特定するためのAWS ConfigとCloudTrailの活用方法」(2022年10月)で詳細に解説されています。

CloudTrailとCloudWatchの連携

CloudTrailのようなサービスを設定しご利用いただくことで、アカウント全体のイベントを正確に追跡・保存できます。この情報は調査に役立ちますが、これらのイベントを毎日監視・分析する担当者を常駐させることは現実的ではないでしょう。他のAWSサービスと同様に、ログイベントをAWS CloudWatchへ送信するようトレイルを設定することが可能です。

特定のイベントや、イベントの種類・数における異常を検知した際に通知するCloudWatch アラームを作成できます。CloudTrailと同様に、アラート通知の配信に使用されるCloudWatchアラームとSNSトピックを適切に保護することが重要です。

CloudTrail セキュリティのベストプラクティス

本記事では、CloudTrail のアクセスおよびイベントログを適切に保護するためのベストプラクティスについてご説明しました。以下にそれらの要点をまとめます:

  1. CloudTrail のトレイルおよびログの管理、分析、閲覧へのアクセスを制御するユーザーグループを作成してください。
  2. CloudTrail イベントログを保存するための中央 S3 バケットを作成し、最小権限の原則に基づいてそのバケットを保護してください。また、ログの長期保存を有効化し、削除アクションには多要素認証(MFA)の検証を必須とします。
  3. CloudTrailアクション計画の一環として、CloudTrailイベントを監視します。
  4. 自動化された監視と異常報告のため、CloudTrailをCloudWatchと統合します。
  5. この目的で使用するCloudWatchアラームとSNSトピックも適切に保護されていることを確認します。
  6. CloudTrailをAWS Configと組み合わせ、インフラストラクチャおよびアカウント内のリソース管理状況をより包括的に把握します。