1. はじめに
Microsoft Sentinel では、コネクターを用いて様々なログを収集することが出来るのですが、AWS Cloud 向けに S3 Bucket の Amazon SQS 経由によるデータコネクターがリリースされていました。Microsoft の Document では分かり難いところもあるので、手順について整理も含めて記事にしてみました。
2. 環境について
Microsoft Sentinel と AWS Cloud のデータ収集の接続構成図は次のようなイメージです。
- AWS 側で対象のデータソースを Amazon S3 Bucket に保管収集する(本記事では CloudTrailを対象にしています)
- S3 Bucket の通知設定を用いて、新規分のデータを Amazon SQS のキューに転送する
- Azure 側では、AWS 側の IAM ロールを用いて、Amazon SQS のキューをポーリング収集する
- Log Analytics ワークスペースに
AWSCloudtrail
テーブルが作成される - Microsoft Sentinel 側で、分析ルール / 可視化ブックを用いて分析を行う
3. やってみる
以下、設定手順の流れです。
AWS 環境の構成用に自動化ツールとして専用の PowerShell スクリプトも配布されていますが、AWS 側の既存の CloudTrail 設定を用いず新たに新規作成してしまうため、今回は手動による設定手順をまとめています。
3.1 Azure 側 - Microsoft Sentinel に「Amazon Web Services」をインストールする
- コンテンツハブから、AWS 用のパッケージである「Amazon Web Services」をインストールします
- コンテンツハブの導入を行うことで、AWS 接続用のデータコネクターや、可視化ブック、分析ルールのパッケージが使えるようになります
3.2 Azure 側 - データコネクターの設定から、Sentinel ワークスペース ID を記録する
- コンテンツハブでインストールした後、データコネクター設定から「Amazon Web Service S3」を開きます
- 設定情報に「External ID (Workspace ID)」をコピーして控えておきます
3.3 AWS 側 - Amazon SQS キューの作成
- AWS CloudTrail ログ更新をキューイングさせるため、Amazon SQS キューを作成します
- SQS キュー側のポリシー設定で、CloudTrail (Amazon S3) からのデータアップロードを許可するポリシーを設定します
- この部分が Microsoft 側ドキュメントに記載されておらず、分かり難いです
- AWS 側の設定になりますが、S3 Bucket からの
SendMessage
アクションを許可する必要があります
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "SQS:SendMessage",
"Resource": "arn:aws:sqs:ap-northeast-1:(AWSアカウントID):(SQSリソース名)",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:::aws-cloudtrail-logs-xxxxxxxxxxx-xxxxxx"
}
}
}
]
}
3.4 AWS 側 CloudTrail ログ保管 S3 Bucket の通知設定
- CloudTrail のログ保管先 S3 Bucket のイベント通知設定より、SQS キュー通知を設定します
- 前 Step の許可ポリシーが投入されていれば、設定の保存が出来るはずです
3.5 AWS 側 IAM 設定
- MS Learn の手順に従い、OIDC プロパイダーと IAM ロールの設定を行います
- Microsoft Defender for Cloud の設定を行っている場合は、既に OIDC プロパイダーが設定されています(同じ OIDC プロパイダーを使います)
-
MS Learn の手順に従い、対象者として API を追加します
-
Microsoft Sentinel が用いる IAM ロールを作成します
- IAM ロール名は指定があり OIDC_ で始まる命名規則にする必要があります
- 本記事では
OIDC_MicrosoftSentinelRole
で作成しました - 「信頼されたエンティティ」の欄に、
"sts:RoleSessionName": "MicrosoftSentinel_{WORKSPACE_ID)"
のフォーマットで、3.2 項で控えたワークスペース ID の情報を追加します - 許可ポリシーとして 4 つを追加します
AmazonSQSReadOnlyAccess
AWSLambdaSQSQueueExecutionRole
AmazonS3ReadOnlyAccess
ROSAKMSProviderPolicy
3.5 Azure 側 Sentinel データコネクターの設定
- AWS 側の設定が完了しましたら、Sentinel データコネクターのパラメータを投入して保存します
- パラメータとして以下の情報が必要です
- AWS 側 IAM ロールの ARN 名
- Amazon S3 から通知させた Amazon SQS の URL 情報
- 宛先テーブル(CloudTrail / VPC FlowLog / Amazon GuardDutyが選択可能)
- 設定が無事に投入できると、「ロールARN / キュー URL / 宛先」に反映されます(認証エラーなどで接続が出来ないと、設定情報が反映されずにエラーが出力されます)
- 複数のデータソース (CloudTrail / Amazon GuardDuty / VPC Flow Log / CloudWatch Log など)を設定する場合は、3.3 ~ 3.4 の設定を繰り返してください
4. 動作確認
データコネクターの設定が反映されると、数分後に Amazon SQS キュー経由で Sentinel / Log Analytics ワークスペースに反映されます。
直近のデータの送受信の確認については、Amazon SQS のメトリクス画面を見ると、送信/受信のメッセージ数が双方カウントされることで、キューの受け渡しが出来ていることがわかります。
データコネクターのページだと、暫く時間が経過した後に受信データが上がり、Log Analytics ワークスペースに取り込まれたことが分かります。
5. Sentinel での分析
5.1 可視化ブックの確認
Microsoft Sentinel では、AWS CloudTrail 用の専用可視化ブックが提供されています。
AWS User Activities を開くと、CloudTrail ログからユーザーのアクティビィティ状況が確認できます。
5.2 Sentinel 分析ルールの有効化
「Amazon Web Services」コンテンツハブをインストールすると、AWS CloudTrail 用の異常検知ルールが提供されています。VPC や CloudTrail そのものの変更、FullAdmin ポリシーのロールアタッチなど、脅威と判定したいものを有効化してみてください。
ルールの詳細は GitHub レポジトリにも公開されています。
6. チューニング - 不要なログをそぎ落とす
AWS CloudTrail のログを取り込んで気付いたのですが、別途設定していた Microsoft Defender for Cloud の CSPM 監査ポーリングが大量に記録されていることに気付きました。このような別途監視しているサービスのデータは記録上不要なので、取り込まないフィルターをかけたいと思います。
以下は Microsoft Defender for Cloud が利用する CspmMonitorAws
ロールが CloudTrail に記録されたログです。
Log Analytics ワークスペースのテーブルの変換を用いて、不要なデータを削除します。
Log Analytics ワークスペースから対象のテーブルを選択し、「変換の編集」を選択します。
今回の Log Analytics ワークスペースでは、以下のように Microsoft Defender for Cloud が用いる IAM ロール名を除外するように設定しました。
source
| where SessionIssuerUserName !in~ ("CspmMonitorAws", "DefenderForCloud-OidcCiem", "DefenderForCloud-AgentlessScanner", "DefenderForCloud-DataSecurityPostureDB")
7. まとめ
Microsoft Sentinel を用いて、AWS 各種ログを取得する方法、解析・分析する方法をご紹介しました。データコネクターが提供されていると、設定が容易になり、Microsoft Sentinel 側からの監視も容易になりそうです。
本記事がどなたかの参考になれば幸いです。
*本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。