AWS CloudTrail 概要

  • AWS CloudTrail は、AWS アカウントの AWS API コールおよび関連イベントの履歴を取得するのに役立ちます。
  • CloudTrail 追跡には、AWS マネジメントコンソール、AWS SDK、コマンドラインツール、および上位レベルの AWS サービス (AWS CloudFormation など) を使用した呼び出しが含まれます。
  • CloudTrail は、CloudTrail をサポートするサービスに対して AWS と呼ばれるユーザーとアカウント、呼び出し元の IP アドレス、および呼び出しが発生したときの識別に役立ちます。
  • CloudTrail は AWS アカウントごとにあり、それをサポートするすべてのサービスのリージョンごとに有効です
  • CloudTrail によって生成された AWS API 呼び出し履歴により、セキュリティ分析、リソース変更の追跡、およびコンプライアンス監査が可能になります。

CloudTrail Works

cloudtrail

  • AWS CloudTrail は、AWS アカウントによって作成された AWS API 呼び出しおよび関連イベントをキャプチャし、指定された S3 バケットにログファイルを配信します。
  • ログファイルには、アカウントの CloudTrail でサポートされているすべてのサービスからの API 呼び出しが含まれています。
  • すべてのリージョンからのログファイルは1つの S3 バケットに配信され、デフォルトでは S3 サーバ側暗号化 (SSE) を使用して暗号化されます。
  • CloudTrail は通常、API 呼び出しの15分以内にログファイルを配信し、新しいログファイルを1時間に複数回発行します (通常は5分ごと)。
  • CloudTrail は、CloudWatch ログによって監視されるロググループにイベントを配信するように、オプションで構成できます。
  • Amazon SNS 通知は、ログファイルがバケットに配信されるたびに送信されるように構成できます。
  • アカウントの AWS API アクティビティおよび関連するイベントのログを有効にするための設定であるトレイルを作成する必要があります。
  • トレイルは、CloudTrail コンソール、AWS CLI、または CloudTrail API を使用して作成できます。
  • トレイルは、すべてのリージョンまたは単一のリージョンに適用することができます。
    • すべてのリージョンに適用されるトレイル
      • すべてのリージョンに適用するトレイルが作成されると、CloudTrail は各リージョンに同じトレイルを作成し、各リージョンにログファイルを記録し、指定された単一の S3 バケットにログファイルを配信します (必要に応じて CloudWatch ロググループに記録します)。
      • CloudTrail コンソールを使用してトレイルが作成されたときのデフォルト設定
      • 1つの SNS のトピックの通知と CloudWatch ログのロググループのイベントは、すべてのリージョンで十分でしょう
      • 利点
        • トレイルの設定は、すべてのリージョンで一貫して適用されます。
        • 1つの場所からすべてのリージョンのトレイル構成を管理します。
        • 直ちに新しいリージョンからのイベントを受け取る。
        • 単一の S3 バケット内のすべてのリージョンからログファイルを受信し、必要に応じて CloudWatch ロググループに記録します。
        • 異常なアクティビティを監視するために頻繁に使用されないリージョンでトレイルを作成する。
    • 1つのリージョンに適用されるトレイル
      • S3 バケットは、そのリージョンからのみイベントを受信し、指定した任意のリージョンに指定できます。
      • 特定のリージョンに適用される追加の個別のトレイルは、これらのトレイルは、単一の S3 バケットにイベントログを配信することができます。
  • 「トレイルをオンにする」とは、トレイルを作成してロギングを開始することを意味します。
  • CloudTrail はリージョンごとに5つのトレイルをサポートします。すべてのリージョンに適用されるトレイルは、すべてのリージョンで1つのトレイルとして数えられます。
  • ベストプラクティスとして、AWS パーティション内のすべてのリージョンに適用されるトレイル (たとえば、すべての標準 AWS リージョンまたは aws-cn for china) を作成することができます。
  • IAM を使用すると、どの AWS ユーザーがトレイルを作成、構成、または削除したり、ログ記録を開始および停止するかを制御したり、ログイン情報を含むバケットにアクセスしたりできます。
  • ログファイルの整合性検証を有効にすると、CloudTrail がログファイルを配信してからログファイルが変更されていないことを確認できます。

グローバルサービスオプション

  • ほとんどのサービスでは、アクションが発生した地域にイベントが送信されます。
  • IAM、AWS STS、Amazon CloudFront などのグローバルサービスでは、”グローバルサービスを含む”オプションが有効になっているすべてのトレイルにイベントが配信されます。
  • AWS OpsWorks と Amazon Route 53 アクションは、米国東部 (バージニア州) リージョンに記録されます。
  • 重複するグローバルサービスイベントを受信しないようにするには、
    • グローバルサービスイベントは常に、”すべてのリージョンにトレイルを適用”オプションが有効になっているトレイルに配信されます。
    • イベントは、1つのリージョンからトレイルのバケットに配信されます。この設定は変更できません。
    • 単一のリージョントレイルがある場合は、”グローバルサービスを含める”オプションを有効にする必要があります。
    • 複数の単一のリージョントレイルがある場合は、1つのトレイルのみで “グローバルサービスを含める”オプションを有効にする必要があります。
  • グローバルサービスイベントについて
    • “すべての地域にトレイルを適用” オプションが有効になっているトレイルがあります。
    • 複数の単一のリージョントレイルがあります。
    • 単一のリージョントレイルに対して “グローバルサービスを含める” オプションを有効にする必要はありません。グローバルサービスイベントは、最初のトレイルに配信されます。

CloudTrail ログファイルの整合性の検証

  • 検証済みのログファイルは、セキュリティとフォレンジック調査で非常に重要です。
  • CloudTrail ログファイルの整合性検証を使用して、CloudTrail の配信後にログファイルが変更、削除、または変更されたかどうかを確認できます。
  • 検証機能は業界標準のアルゴリズムを使用して構築されています: ハッシングの場合はSHA-256、デジタル署名の場合はRSAを使用するSHA-256により、CloudTrailのログファイルを検出せずに変更、削除または偽造することは計算上不可能です。
  • ログファイルの整合性検証が有効になっている場合:
    • CloudTrail は、提供するすべてのログファイルのハッシュを作成します。
    • 1時間ごとに、CloudTrail も作成し、最後の1時間のログファイルを参照し、それぞれのハッシュが含まれているダイジェストファイルを提供します。
    • CloudTrail は、公開キーと秘密鍵のペアの秘密キーを使用して、各ダイジェストファイルに署名します。
    • 配信後、公開キーを使用してダイジェストファイルを検証できます。
    • CloudTrail は、AWS リージョンごとに異なるキーペアを使用します。
    • ダイジェストファイルは、同じAmazon S3バケットに配信されますが、ログファイルのトレールに関連付けられた別のフォルダに配信されます。
    • ダイジェストファイルとログファイルの分離により、きめ細かいセキュリティポリシーの適用が可能になり、既存のログ処理ソリューションを変更せずに操作を継続できます。
    • 各ダイジェストファイルには、以前のダイジェストファイルが存在する場合のデジタル署名も含まれています。
    • 現在のダイジェストファイルの署名は、ダイジェストファイル Amazon S3 オブジェクトのメタデータプロパティにあります。
    • ログファイルとダイジェストファイルは、Amazon S3 または Amazon Glacier に安全に、永続的かつ安価に無期限に保存することができます。
    • Amazon S3 に保存されているダイジェストファイルのセキュリティを強化するために、Amazon S3 MFA の削除を有効にすることができます。

CloudTrail 有効なユースケース

  • AWS リソースの変更を追跡する
    • AWS リソースの作成、変更、または削除を追跡するために使用できます。
  • コンプライアンス支援
    • 内部ポリシーおよび規制基準への準拠を容易に実証する。
  • 運用上の問題のトラブルシューティング
    • 問題をトラブルシューティングするための最近の変更またはアクションを特定する。
  • セキュリティ分析
    • ログファイルを入力として使用して、分析ツールをログに記録し、セキュリティ分析を実行し、ユーザーの動作パターンを検出します。

CloudTrail 処理ライブラリ (CPL:CloudTrail Processing Library)

  • CloudTrail 処理ライブラリ (CPL) は、CloudTrail ログファイル内のイベントに対して即時アクションを実行するアプリケーションを構築するのに役立ちます。
  • CPL は以下のようなことに役立ちます
    • SNS または SQS に配信されたメッセージの読み取り
    • S3 からログファイルを連続的にダウンロードして読み込む
    • イベントを POJO にシリアル化します。
    • 処理のためのカスタムロジック実装が可能
    • フォールトトレラントとサポートマルチスレッド

AWS認定試験の練習問題

  • 質問はインターネットから収集され、答えは自分の知識と理解に基づいてマークされます(これはあなたと異なる場合があります)。
  • AWSサービスは毎日更新され、回答と質問はすぐに時代遅れになる可能性がありますので、それに応じて調査してください。
  • AWSのアップデートのペースを追うためにAWS試験の質問は更新されないため、基礎となる機能が変更されても質問が更新されないことがあります。
  • さらなるフィードバック、ディスカッション、修正を可能にします。
  1. 現在、AWS US-East リージョンで Web アプリケーションを操作しています。アプリケーションは、EC2 インスタンスと RDS マルチ AZ データベースの自動スケーリング層で実行されます。IT セキュリティコンプライアンス担当者は、EC2、IAM、および RDS リソースに加えられた変更を追跡するための、信頼性の高い永続的なログソリューションを開発することを任務としています。このソリューションでは、ログデータの完全性と機密性を確保する必要があります。どちらのソリューションをお勧めしますか?
    1. 1つの新しい S3 バケットを使用して、ログを保存し、”グローバルサービス” オプションを選択して、新しい CloudTrail トレイルを作成します。ログを格納する S3 バケットの IAM ロール、S3 バケットポリシー、およびマルチファクタ認証 (MFA) Delete を使用します。(機密性のために、IAM と MFA Delete を備えたグローバルサービスオプションを持つ単一の新しいバケット)
    2. ログを格納する新しい S3 バケットを1つ持つ新しい CloudTrail を作成します。管理システムにログファイル配信通知を送信するように SNS を構成します。ログを格納する S3 バケットで IAM ロールと S3 バケットポリシーを使用します。(IAM のグローバルサービスがありません)
    3. 既存の S3 バケットを使用してログを格納する新しい CloudTrail トレイルを作成し、”グローバルサービス” オプションを選択すると、ログを格納する S3 バケット上の S3 ACL とマルチファクタ認証 (MFA) Delete を使用します。(既存のバケットが機密性を妨げる)
    4. 3つの新しい S3 バケットを持つ3つの新しい CloudTrail トレイルを作成し、AWS マネジメントコンソール用のログ、AWS SDK 用とコマンドラインツール用の1つを格納します。ログを格納する S3 バケットで IAM ロールと S3 バケットポリシーを使用する (3 バケットは不要、グローバルサービスオプションがない)
  2. AWS CloudTrail には次のうちどれが当てはまりますか? 3つの回答を選択
    1. CloudTrail はグローバルに有効になっています (すべての地域および地域ごとに有効にすることもできます)。
    2. CloudTrail はデフォルトで有効になっています (デフォルトでは有効になっていませんでしたが、最新の AWS 拡張に従ってデフォルトで有効になっています)
    3. CloudTrail はリージョンごとに有効です (リージョンごとに有効にすることもできます)。
    4. CloudTrail はサービスごとに有効です (一度有効にすると、サポートされているすべてのサービスに適用され、サービスを選択できません)
    5. ログは、単一の Amazon S3 バケットに集約するために配信できます。
    6. CloudTrail は、リージョン内の利用可能なすべてのサービスに対して有効になります。(CloudTrail サポートされているサービスに対してのみ有効です)
    7. ログは、生成された領域にのみ処理および配信できます。(任意の地域のバケットに記録することができます)
  3. 組織がCloudWatchでカスタムメトリックアップロードを設定しました。組織は、CLIを使用してSDKを使用してデータをアップロードすることを社員に許可しています。ユーザーはCloudWatchの呼び出しをどのように追跡できますか?
    1. ユーザーは、すべての活動を記録する CloudWatch でログを有効にすることができます
    2. CloudTrail を使用して API 呼び出しを監視する
    3. IAM ユーザーを作成し、各ユーザーが S3 バケットを使用してデータをログに記録できるようにする
    4. CloudWatch で詳細な監視を有効にする
  4. ユーザーは、AWS サービスの CloudWatch メトリックを理解しようとしています。ユーザーは、まず AWS サービスの名前空間を理解する必要があります。AWSサービスの有効な名前空間でないものは次のうちどれですか?
    1. AWS/StorageGateway
    2. AWS/CloudTrail (CloudWatch がサポートする名前空間)
    3. AWS/ElastiCache
    4. AWS/SWF
  5. あなたの CTO は、あなたの AWS アカウントがハッキングされたと考えている。あなたのハッカーが非常に洗練された AWS のエンジニアであり、彼らが彼らのトラックをカバーすることができるすべてをやっていると仮定して、不正アクセスと何をしたかどうかを特定するための唯一の方法は何ですか?
    1. CloudTrail ログファイルの整合性検証を使用します。(リンク参照)
    2. AWS 設定の SNS サブスクリプションを使用し、リアルタイムでイベントを処理します。
    3. AWS S3 および Glacier にバックアップされた CloudTrail を使用します。
    4. AWS 設定タイムラインフォレンジックを使用します。
  6. あなたの CTO は、あなたの AWS アカウントのすべてのユーザーがすべての回でリソースを変更するためにやっていることを知っていることを確認するように求めている。彼女は時間をかけて何をやっているのレポートを望んでいる, できるだけ広いリソースタイプのグループとして、週に一度彼女に報告.どのようにこれを行う必要があります?
    1. グローバル AWS CloudTrail Trail を作成します。 S3 に配信されたログデータを1週間に1回集約し、これを CTO に送信するようにスクリプトを構成します。
    2. すべての AWS API 呼び出しにサブスクライブされている SNS トピックで CloudWatch イベントルールを使用します。この SNS トピックの電子メールタイプ配信に CTO をサブスクライブします。
    3. AWS IAM クレデンシャルレポートを使用して、IAM ユーザトークンのすべての使用の CSV を時間の経過と共に CTO に配信します。
    4. AWS Config を使用して、Lambda の SNS サブスクリプションで、これらの変更を時間の経過と共に DynamoDB テーブルに挿入します。このテーブルの内容に基づいてレポートを生成します。

リファレンス


Jayendra’s Blog

この記事は自己学習用に「AWS CloudTrail – Certification(Jayendra’s Blogより)」を日本語に訳した記事です。