1.はじめに
システム環境全体のログを一元的に監視・分析したいというニーズは多くの現場で見られます。
ログの一元管理は、セキュリティ強化や運用効率化の観点から、企業にとって欠かせない取り組みとなっています。
本記事では、Microsoft Sentinel に Amazon Web Services (AWS) のログを取り込む方法について解説します。
AWSログの取り込みには、
手動セットアップ
自動セットアップ
の2通りの方法がありますが、ここでは Microsoftが推奨する自動セットアップ の手順を説明します。
また、Microsoftが提供している自動セットアップ用スクリプトを使用する際に、うまく動作しなかった箇所の修正ポイントも併せてまとめています。
これからセットアップを行う方や、スクリプトの動作に課題を感じている方は、ぜひ参考にしてください。
2.Sentinelとは
Microsoft Sentinelは、様々なシステムや機器からのログ情報を収集・統合・分析して脅威を検知するSIEM(Security Information and Event Management)機能と、
検知された脅威への対応を自動化するSOAR(Security Orchestration, Automation and Response)機能を兼ね備えた、クラウドベースのセキュリティ運用プラットフォームです。
Sentinelでは、Microsoft製品だけでなく、AWSやGCPなどの他クラウドやPaloalto、Fortinetなどサードパーティ製品などのログも取り込み可能です。
3.AWSログ取り込みの概要
Microsoft Sentinelでは、以下の4種類のAWSログを取り込むための標準コネクタが用意されています。
AWS CloudTrail:
AWSアカウント内での操作履歴(APIコールなど)を記録するログ。
VPC Flow Logs:
Amazon VPC(仮想ネットワーク)内のトラフィック情報を記録するログ。
AWS GuardDuty:
AWS環境における脅威検出結果を記録するログ。
AWS CloudWatch:
AWSのサービスやアプリケーションの動作状況を記録するログ。
AWS ConfigログはSentinelに標準コネクタが用意されていません(2025年11月時点)。Sentinelに取り込むには、Azure Functionなどを利用してカスタムコネクタを作成し、取り込む必要があります。
AWS Configログ:
AWSリソースの構成や変更履歴に関する情報を記録するログ。
AWSのログをMicrosoft Sentinelに取り込む際は、以下のステップで処理が行われます。
1. ログをS3バケットに保存する
各種サービスから出力されたログは、指定されたS3バケットに格納されます。
2. S3バケットが新しいログの通知をSQSキューに送信する
新しいログファイルが保存されると、S3へログが格納されたことをトリガーにSQS(Simple Queue Service)に通知を送ります。
3. Sentinelが定期的にSQSをポーリングし、通知を受信する
Microsoft SentinelはSQSを定期的に確認し、新しいログの存在を検知します。
4. SentinelがS3バケットからログファイルを取得する
通知を受けたSentinelは、該当するログファイルをS3から受け取り、分析に利用します。
参考:
S3バケット:AWSのファイル置き場。ログやデータを保存するためのストレージ。
SQSキュー:AWSの通知箱。S3に新しいログが届いたことを他のサービスに知らせる役割。
4.取り込み手順
自動セットアップを使用したAWSログの取り込み手順について説明します。
前提条件は以下のサイトをご確認ください。
本手順ではAWSのCloudShellを利用しています。
物理PCでスクリプトを実行する場合は、PowerShell、AWS CLIのインストールが必要です。
1.対象のSentinel環境の「コンテンツハブ」より、「Amazon Web Service」をインストールします。
2.インストールが完了したら、「データコネクタ」を開き、「Amazon Web Service S3」を選択し、「Open connector page」をクリックします。

3.「Setup with PowerShell script (recommended)」をクリックします。

4.「AWS S3 Setup Script」をクリックし、セットアップ用のスクリプトをダウンロードします。External ID(Workspace ID)は後ほど使用するため、IDを控えておきます。

展開すると以下の2つのZIPファイルが表示されます。
今回は「ConfigAwsComToAzureCom.zip」を使用します。

7.「アクション」より「ファイルのアップロード」を選択し、「ConfigAwsComToAzureCom.zip」をアップロードします。


8.CloudShellで以下のコマンドを実行します。
※スクリプトの実行に失敗する場合は後述の「5.スクリプトの修正箇所」をご参照ください。
./ConfigAwsConnector.ps1 -LogPath {ログ出力先のパス} -AwsLogType {ログの種類}
ログの種類で有効な値は以下です。
"VPC", "CloudTrail", "GuardDuty"
9.プロンプトの指示に従い、ロール、S3バケット、SQSなどのリソース名の指定や設定を完了させます。
External ID(Workspace ID)は、手順4で控えたIDを入力します。
10.コマンドが完了したら、Role Arn、Sqs Url、Destination Tableの値が出力されるため、値を控えておきます。

11.Sentinel画面に戻り、コマンドにより取得した値をそれぞれ入力し、「Add Connection」をクリックします。
Role to add:Role Arnの値
SQS URL:Sqs Urlの値
Destination Table:Destination Tableの値
接続に成功すると、画面右上にポップアップが表示され、画面下部にRole ARN、Queue URL、Destination tableの値が表示されます。
5.スクリプトの修正箇所
「ConfigAwsComToAzureCom」フォルダにあるスクリプトを実行した際、自身の環境では一部の処理が正常に動作しなかったため、スクリプトを修正しました。
スクリプトが正常に動作しない場合、以下の修正内容をご参照ください。
※2025年11月4日時点の情報です。
・Util\AwsResourceCreator.ps1 146行目あたり
$regionConfiguration = aws configure get region
aws configure set region ap-northeast-1
$regionConfiguration = aws configure get region
スクリプト内にリージョンを指定するコマンドがなく、エラーが発生したためリージョンを明示的に設定するコマンドを追加しました。
S3バケットを作成するリージョンとなりますので、適切なリージョン名を指定ください。
・ConfigVpcFlowDataConnector.ps1 25行目あたり
aws ec2 --output text --query 'Vpcs[*].{VpcId:VpcId}' describe-vpcs
(aws ec2 --query 'Vpcs[*].{VpcId:VpcId}' describe-vpcs | ConvertFrom-Json)."VPCId"
このコマンド実施後、VPCのIDの入力を求められるのですが、大量の出力がある場合、ページ分割(pager)により処理が進まないので、ページ分割を無効化するオプションを追加しました。
・ConfigGuardDutyDataConnector.ps1 199行目あたり、210行目あたり
aws --region $Region guardduty create-publishing-destination --detector-id $detectorId --destination-type S3 --destination-properties DestinationArn=$($AwsCloudResource):s3:::$bucketName, KmsKeyArn=$kmsArn | Out-Null
$destinationArn = "$($AwsCloudResource):s3:::$bucketName"
$destinationProperties = "DestinationArn={0},KmsKeyArn={1}" -f $destinationArn, $kmsArn
aws create-publishing-destination --detector-id $detectorId --destination-type S3 --destination-properties $destinationProperties --region $Region guardduty | Out-Null
aws --region $Region guardduty update-publishing-destination --detector-id $detectorId --destination-id $currentS3Destinations.DestinationId --destination-properties DestinationArn=$($AwsCloudResource):s3:::$bucketName, KmsKeyArn=$kmsArn | Out-Null
$destinationArn = "$($AwsCloudResource):s3:::$bucketName"
$destinationProperties = "DestinationArn={0},KmsKeyArn={1}" -f $destinationArn, $kmsArn
aws guardduty update-publishing-destination --detector-id $detectorId --destination-id $currentS3Destinations[0].DestinationId --destination-properties $destinationProperties --region $Region | Out-Nul
コマンドを実施するための変数が正しく格納されていないため、変数の格納方法を修正しました。
6.まとめ
本記事では、自動セットアップを使用してSentinelにAWSのログを取り込む方法と、スクリプトの修正点について紹介しました。
AWSのセキュリティログをSentinelで一元管理することで、可視性の向上やインシデント対応の迅速化が期待できます。
クラウド環境のセキュリティ強化に取り組む方は、ぜひ本記事を参考にしてみてください。
We Are Hiring!








