Microsoft Sentinel で AWS セキュリティログを取り込んで分析する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Microsoft Sentinel で AWS セキュリティログを取り込んで分析する

作成者: Ivan Girardi (AWS) と Sebastian Wenzel (AWS)

概要

このパターンでは、ログ、Amazon CloudWatch Logs データ AWS CloudTrail 、Amazon VPC フローログデータ、Amazon GuardDuty の検出結果などの AWS セキュリティログの Microsoft Sentinel への取り込みを自動化する方法について説明します。組織が Microsoft Sentinel をセキュリティ情報イベント管理 (SIEM) システムとして使用している場合、セキュリティ関連のイベントを検出するためにログを一元的にモニタリングおよび分析するのに役立ちます。ログが利用可能になるとすぐに、5 分以内に Amazon Simple Storage Service (Amazon S3) バケットに自動的に配信されます。これにより、 AWS 環境内のセキュリティイベントをすばやく検出できます。

Microsoft Sentinel は、イベントが記録された元のタイムスタンプを含む表形式の形式で CloudTrail ログを取り込みます。取り込まれたログの構造により、Microsoft Sentinel で Kusto クエリ言語を使用してクエリ機能が有効になります。

このパターンは、1 分以内に取り込みの失敗を検出するモニタリングおよびアラートソリューションをデプロイします。また、外部 SIEM がモニタリングできる通知システムも含まれています。を使用して AWS CloudFormation 、必要なリソースをログ記録アカウントにデプロイします。

ターゲットオーディエンス

このパターンは AWS Control Tower、、CloudFormation AWS Organizations、 AWS Identity and Access Management (IAM)、および AWS Key Management Service () の経験があるユーザーに推奨されますAWS KMS。

前提条件と制限

前提条件

このソリューションをデプロイするための前提条件は次のとおりです。

  • で組織として AWS アカウント 管理 AWS Organizations され、 AWS Control Tower ランディングゾーンの一部であるアクティブ。組織には、ログ記録専用のアカウントを含める必要があります。手順については、 AWS Organizations ドキュメントの「組織の作成と設定」を参照してください。

  • 組織全体のイベントをログに記録し、ログ記録アカウントの Amazon S3 バケットにログを保存する CloudTrail 証跡。手順については、「組織の証跡の作成」を参照してください。

  • ログ記録アカウントで、次のアクセス許可を持つ既存の IAM ロールを引き受けるアクセス許可。

    • 提供された CloudFormation テンプレートで定義されたリソースをデプロイします。

    • 提供された CloudFormation テンプレートをデプロイします。

    • ログがカスタマーマネージド AWS KMS キーで暗号化されている場合は、キーポリシーを変更します。

  • AWS Command Line Interface (AWS CLI)、インストールおよび設定済み。

  • Microsoft Sentinel を使用するサブスクリプションを持つ Microsoft Azure アカウント。

  • Microsoft Sentinel を有効にしてセットアップします。手順については、Microsoft Sentinel ドキュメントの「Microsoft Sentinel を有効にする」および「初期機能とコンテンツ」を参照してください。

  • Microsoft Sentinel S3 コネクタを設定するための前提条件を満たします。

制約事項

  • このソリューションは、ログ記録アカウントの Amazon S3 バケットから Microsoft Sentinel にセキュリティログを転送します。Amazon S3 にログを送信する方法については、明示的には説明されていません。

  • このパターンでは、 AWS Control Tower ランディングゾーンにデプロイする手順を示します。ただし、 AWS Control Tower の使用は必須ではありません。

  • このソリューションは、ログアーカイブで作成された Amazon S3 バケットのバケットポリシーへの変更の禁止など、Amazon S3 ログバケットがサービスコントロールポリシー (SCPs) で制限されている環境と互換性があります。 AWS Control Tower Amazon S3

  • このパターンは CloudTrail ログを転送する手順を提供しますが、CloudWatch Logs、Amazon VPC フローログ、GuardDuty からのログなど、Microsoft Sentinel がサポートする他のログを送信するようにこのソリューションを調整することができます。

  • 手順では、 AWS CLI を使用して CloudFormation テンプレートをデプロイしますが、 を使用することもできます AWS Management Console。手順については、「 AWS CloudFormation コンソールの使用」を参照してください。コンソールを使用してスタックをデプロイする場合は、ログ記録バケット AWS リージョン と同じ にスタックをデプロイします。

  • このソリューションは、Amazon Simple Queue Service (Amazon SQS) キューをデプロイして Amazon S3 通知を配信します。キューには、実際のデータではなく、Amazon S3 バケットにアップロードされたオブジェクトのパスを含むメッセージが含まれます。キューは SSE-SQS 暗号化を使用して、メッセージの内容を保護します。SQS キューを SSE-KMS で暗号化する場合は、カスタマーマネージド KMS キーを使用できます。詳細については、Amazon SQS での保管時の暗号化」を参照してください。

アーキテクチャ

このセクションでは、サンプルコードが確立するアーキテクチャの概要を説明します。次の図は、既存の Amazon S3 バケットから Microsoft Sentinel にログを取り込むために、ログ記録アカウントにデプロイされたリソースを示しています。

Amazon SNS キューを使用して S3 バケットからログを取り込む Microsoft Sentinel

アーキテクチャ図は、次のリソースインタラクションを示しています。

  1. ログ記録アカウントでは、Microsoft Sentinel は OpenID Connect (OIDC) を介して IAM ロールを引き受け、特定の Amazon S3 バケットと Amazon SQS キューのログにアクセスします。

  2. Amazon Simple Notification Service (Amazon SNS) と Amazon S3 は暗号化 AWS KMS に使用します。

  3. Amazon S3 は、新しいログを受信するたびに Amazon SQS キューに通知メッセージを送信します。

  4. Microsoft Sentinel は Amazon SQS で新しいメッセージをチェックします。Amazon SQS キューは SSE-SQS 暗号化を使用します。メッセージ保持期間は 14 日間に設定されています。

  5. Microsoft Sentinel は Amazon SQS キューからメッセージを取得します。メッセージには、アップロードされた Amazon S3 オブジェクトのパスが含まれます。Microsoft Sentinel は、これらのオブジェクトを Amazon S3 バケットから Microsoft Azure アカウントに取り込みます。

  6. CloudWatch アラームは Amazon SQS キューをモニタリングします。メッセージが 5 分以内に Amazon SQS キューから受信および削除されない場合、E メールを送信する Amazon SNS 通知が開始されます。

AWS Control Tower は、基本的な組織単位 (OU) 構造をセットアップし、CloudTrail ログをログ記録アカウントに一元化するのに役立ちます。また、ロギングバケットを保護するために必須SCPs を実装します。

ラン AWS Control Tower ディングゾーンにターゲットアーキテクチャを用意しましたが、これは厳密に必須ではありません。この図では、管理アカウントのリソースには、組織全体のイベントをログに記録する AWS Control Tower デプロイと CloudTrail 証跡が反映されています。

このパターンは、ログ記録アカウントにリソースをデプロイすることに焦点を当てています。 AWS Control Tower ランディングゾーンの Amazon S3 に保存されているログがカスタマーマネージド KMS キーで暗号化されている場合は、Microsoft Sentinel がログを復号できるようにキーポリシーを更新する必要があります。 AWS Control Tower ランディングゾーンでは、キーが作成された管理アカウントからキーポリシーを管理します。

ツール

AWS のサービス

  • AWS CloudFormation は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および リージョン全体でライフサイクル全体を通じてリソースを管理するのに役立ちます。

  • Amazon CloudWatch は、 AWS リソースと で実行するアプリケーションのメトリクスを AWS リアルタイムでモニタリングするのに役立ちます。

  • AWS Control Tower は、ベストプラクティスに従って、 AWS マルチアカウント環境をセットアップして管理するのに役立ちます。

  • AWS Key Management Service (AWS KMS) は、データの保護に役立つ暗号化キーの作成と制御に役立ちます。

  • AWS Organizations は、作成して一元管理する AWS アカウント 組織に複数の を統合するのに役立つアカウント管理サービスです。

  • Amazon Simple Queue Service (Amazon SQS) 」は、安全で耐久性があり、配信ソフトウェアシステムとコンポーネントを統合および分離できる利用可能なホスト型キューを提供します。

  • Amazon Simple Storage Service (Amazon S3) 」は、どのようなデータの量であっても、保存、保護、取得することを支援するクラウドベースのオブジェクトストレージサービスです。

その他のツール

  • Microsoft Sentinel は、セキュリティオーケストレーション、自動化、およびレスポンス (SOAR) を提供するクラウドネイティブの SIEM システムです。

コードリポジトリ

このパターンのコードは、GitHub Ingest and analyze AWS security logs in Microsoft Sentinel repository で入手できます。

ベストプラクティス

エピック

タスク説明必要なスキル

Microsoft Sentinel S3 コネクタを準備します。

  1. Microsoft Sentinel で、データコネクタを選択します。

  2. データコネクタギャラリーから、Amazon Web Services S3 を選択します。

    注記

    コネクタが表示されない場合は、Microsoft Sentinel の Content Hub から Amazon Web Services ソリューションをインストールします。

  3. コネクタの詳細ペインで、コネクタを開くページを選択します。

  4. 設定セクションで、外部 ID をコピーします。この ID は後で必要になります。

DevOps エンジニア、AWS 全般
タスク説明必要なスキル

リポジトリをクローン作成します。

bash シェルで、次のコマンドを入力します。これにより、Microsoft Sentinel リポジトリで AWS セキュリティログの取り込みと分析のクローンが作成されます。

git clone https://github.com/aws-samples/ingest-and-analyze-aws-security-logs-in-microsoft-sentinel.git

DevOps エンジニア、AWS 全般

ログ記録アカウントの IAM ロールを引き受けます。

ログ記録アカウントで、CloudFormation スタックをデプロイするアクセス許可を持つ IAM ロールを引き受けます。で IAM ロールを引き受ける方法の詳細については AWS CLI、『』の「IAM ロールを使用する AWS CLI」を参照してください。

DevOps エンジニア、AWS 全般

スタックをデプロイします。

CloudFormation スタックをデプロイするには、次のコマンドを入力します。

  • <Bucket name> は、ログ記録 Amazon S3 バケットの名前です。

  • <Sentinel external ID> は、Microsoft Sentinel の Amazon S3 コネクタの外部 ID です。

  • <Email address> は、通知を受け取る有効な E メールアドレスです。

  • <Customer managed key ARN> は、カスタマーマネージド KMS キーの Amazon リソースネーム (ARN) です。ログがカスタマーマネージド KMS キーで暗号化されている場合にのみ、このパラメータを指定します。

  • <Suffix> は、リソース名の競合を回避するためのオプションのパラメータです。

  • <ARN for the OIDC provider> は、OIDC プロバイダーがすでに存在する場合の ARN です。このパラメータを指定しない場合、CloudFormation は OIDC プロバイダーを作成します。

    重要

    AWS 組織が Microsoft Code Defender でモニタリングされている場合、Microsoft の OIDC プロバイダーは既にデプロイされています。このパラメータと既存のプロバイダーの ARN を指定する必要があります。

aws cloudformation deploy --stack-name cloudtrail-sentinel-integration \ --no-fail-on-empty-changeset \ --template-file template.yml \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND \ --parameter-overrides \ ControlTowerS3BucketName="<Bucket name>" \ AzureWorkspaceID="<Sentinel external ID>" \ EmailAddress="<Email address>" \ KMSKeyArn="<Customer managed key ARN>" \ Suffix="<Suffix to avoid name conflicts>" \ OIDCProviderArn="<ARN for the OIDC provider>"
DevOps エンジニア、AWS 全般

出力をコピーします。

CloudFormation スタックの出力から、 SentinelRoleArnと の値をコピーしますSentinelSQS。これらの値は、後で Microsoft Sentinel で設定を完了するために使用します。

DevOps エンジニア、AWS 全般

キーポリシーを変更します。

カスタマーマネージド KMS キーを使用して Amazon S3 バケットのログを暗号化していない場合は、このステップをスキップできます。

ログがカスタマーマネージド KMS キーで暗号化されている場合は、キーポリシーを変更して、ログを復号するアクセス許可を Microsoft Sentinel に付与します。以下は、キーポリシーの例です。このポリシー例では、KMS キーが別の にある場合、クロスアカウントアクセスを許可します AWS アカウント。

{ "Version": "2012-10-17", "Id": "key-policy", "Statement": [ ... { "Sid": "Grant access to decrypt", "Effect": "Allow", "Principal": { "AWS": "<SentinelRoleArn>" }, "Action": "kms:Decrypt", "Resource": "<KeyArn>" } ] }
DevOps エンジニア、AWS 全般
タスク説明必要なスキル

Microsoft Sentinel で設定を完了します。

  1. Microsoft Sentinel で、データコネクタを選択します。

  2. データコネクタギャラリーから、Amazon Web Services S3 を選択します。

  3. コネクタの詳細ペインで、コネクタを開くページを選択します。

  4. 設定セクションで、次の操作を行います。

    1. 追加するロールに、コピーしたSentinelRoleArn値を入力します。

    2. SQS URL で、コピーしたSentinelSQS値を入力します。

    3. 送信先テーブルリストで、 を選択しますAWSCloudTrail

  5. [接続を追加] を選択します。

DevOps エンジニア

Amazon S3 イベント通知を Amazon SQS に送信します。

Amazon S3コンソールを使用したイベント通知の有効化と設定」の手順に従って、Amazon SQS キューにイベント通知を送信するように Amazon S3 ログ記録バケットを設定します。 Amazon SQS CloudTrail が組織全体に設定されている場合、このバケットのログにはプレフィックス があり<OrgID>/AWSLogs/<OrgID>/<OrgID>は組織 ID です。詳細については、「組織の詳細の表示」を参照してください。

DevOps エンジニア、AWS 全般

ログが取り込まれていることを確認します。

  1. ログが Microsoft Sentinel に取り込まれるまで待ちます。これには数分間かかる場合があります。

  2. Microsoft Sentinel で Amazon S3 データコネクタページを開き、次の操作を行います。

    • Amazon S3 Data Connector のステータスが であることを確認しますConnected

    • データ受信グラフのデータ量を確認します。

    データコネクタアクティビティの検査の詳細については、Microsoft ドキュメントの「データコネクタ」を参照してください。

DevOps エンジニア
タスク説明必要なスキル

CloudWatch ログと Sentinel ログを比較します。

のデフォルト設定では AWS Control Tower、CloudTrail ログは Amazon CloudWatch に送信され、 AWS Control Tower 管理アカウントに保存されます。詳細については、「 でのログ記録とモニタリング AWS Control Tower」を参照してください。次の手順を使用して、ログが Microsoft Sentinel に自動的に取り込まれることを確認します。

  1. CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[Logs] (ログ)、[Logs Insights] (ログのインサイト) の順に選択します。

  3. Select log group (s) で、 など、CloudTrail ログが保存されているロググループを選択しますaws-controltower/CloudTrailLogs

  4. クエリエディタボックスに、 と入力しますfields eventID

  5. [Run query] (クエリの実行) を選択します。

  6. 結果のエクスポートを選択し、テーブルをクリップボードにコピー (CSV) を選択します。

  7. 結果をテキストエディタに貼り付けます。

  8. Microsoft Sentinel クエリで使用できるように出力の形式を変更します。以下は、Kusto クエリ言語を使用する例です。

    AWSCloudTrail | where AwsEventId in ( 'aa08b5fe-3bfb-391a-a14e-5fcebe14dab2', '9decd805-269c-451c-b75b-762f5dce59f9' )
  9. Microsoft Sentinel で、Amazon S3 データコネクタページを開きます。データ受信グラフの横にある「Go to log analytics」を選択します。

  10. クエリエディタボックスにクエリを入力し、実行を選択します。

  11. Microsoft Sentinel と CloudWatch で、エントリの数が同じであることを確認します。必要に応じて時間範囲を調整します。

DevOps エンジニア、AWS 全般

関連リソース

AWS ドキュメントとリソース

Microsoft ドキュメント