Microsoft Sentinel ログを収集する
概要
このパーサーは、Microsoft Sentinel JSON ログからフィールドを抽出し、IP アドレスの抽出や文字列操作などの変換を実行し、抽出されたデータを UDM にマッピングします。これには、principal、target、security_result、metadata フィールドが含まれます。また、さまざまなデータ型を処理し、抽出されたエンティティを UDM 構造に統合します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Microsoft Sentinel へのアクセス。
Microsoft Sentinel ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Microsoft Sentinel ログ)。
- [ソースタイプ] として [Webhook] を選択します。
- [ログタイプ] として [Microsoft Sentinel] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
\n
など)。 - アセットの名前空間: アセットの名前空間。
- 取り込みラベル: このフィードのイベントに適用されるラベル。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- このシークレットは再び表示できないため、秘密鍵をコピーして保存します。新しい秘密鍵を再度生成できますが、秘密鍵を再生成すると、以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
- [完了] をクリックします。
Webhook フィードの API キーを作成する
Google Cloud コンソール > [認証情報] に移動します。
[認証情報を作成] をクリックして [API キー] を選択します。
API キーによる Google Security Operations API へのアクセスを制限します。
エンドポイント URL を指定する
- クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
カスタム ヘッダーの一部として API キーとシークレット キーを次の形式で指定して、認証を有効にします。
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
推奨事項: API キーは URL ではなくヘッダーとして指定してください。Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーとシークレット キーを指定できます。
ENDPOINT_URL?key=API_KEY&secret=SECRET
次のように置き換えます。
ENDPOINT_URL
: フィードのエンドポイント URL。API_KEY
: Google Security Operations の認証に使用する API キー。SECRET
: フィードの認証用に生成したシークレット キー。
Microsoft Sentinel インシデント用に Logic App を構成する
Microsoft Sentinel インシデント用の Logic App を構成する手順は次のとおりです。
- Azure Portal にログインします。
- [リソースを作成] をクリックします。
- Logic App を検索します。
- [作成] をクリックして作成プロセスを開始します。
- 次の入力パラメータの値を指定します。
- サブスクリプション: サブスクリプションを選択します。
- リソース グループ: リソース グループを選択します。
- 名前: Logic App の名前を入力します。
- リージョン: リージョンを選択します。
- Log Analytics ワークスペース: Log Analytics ワークスペースを選択します。
- [Review + create] をクリックします。
- [作成] をクリックします。
- Logic App が作成されたら、[リソースに移動] をクリックします。
- [開発ツール] > [Logic App Designer] をクリックします。
- [トリガーを追加] をクリックします。
- [Microsoft Sentinel] を検索します。
- トリガーとして [Microsoft Sentinel インシデント] を選択します。
- Microsoft Sentinel への接続をまだ作成していない場合は、ここで作成する必要があります。[新規作成] をクリックし、画面の指示に沿って認証します。
- [新しいステップを挿入] をクリックします。
- [アクションを追加] をクリックします。
- 「HTTP」を検索して、アクションとして選択します。
- 次の入力パラメータの値を指定します。
- URI: フィードのエンドポイント URL。
- メソッド: POST
- ヘッダー: 次のヘッダーを追加します。
- Content-Type: application/json
- X-goog-api-key: Google Security Operations の認証に使用する API キー。
- X-Webhook-Access-Key: フィードの認証用に生成したシークレット キー。
Microsoft Sentinel アラート用に Logic App を構成する
Microsoft Sentinel アラート用の Logic App を構成する手順は次のとおりです。
- Azure ポータルのホームページに移動します。
- [リソースを作成] をクリックします。
- Logic App を検索します。
- [作成] をクリックして作成プロセスを開始します。
- 次の入力パラメータの値を指定します。
- サブスクリプション: サブスクリプションを選択します。
- リソース グループ: リソース グループを選択します。
- 名前: Logic App の名前を入力します。
- リージョン: リージョンを選択します。
- Log Analytics ワークスペース: Log Analytics ワークスペースを選択します。
- [Review + create] をクリックします。
- [作成] をクリックします。
- Logic App が作成されたら、[リソースに移動] をクリックします。
- [開発ツール] > [Logic App Designer] をクリックします。
- [トリガーを追加] をクリックします。
- [Microsoft Sentinel] を検索します。
- トリガーとして [Microsoft Sentinel アラート] を選択します。
- Microsoft Sentinel への接続をまだ作成していない場合は、ここで作成する必要があります。[新規作成] をクリックし、画面の指示に沿って認証します。
- [新しいステップを挿入] をクリックします。
- [アクションを追加] をクリックします。
- 「HTTP」を検索して、アクションとして選択します。
- 次の入力パラメータの値を指定します。
- URI: フィードのエンドポイント URL。
- メソッド: POST
- ヘッダー: 次のヘッダーを追加します。
- Content-Type: application/json
- X-goog-api-key: Google Security Operations の認証に使用する API キー。
- X-Webhook-Access-Key: フィードの認証用に生成したシークレット キー。
Microsoft Sentinel の自動化ルールを構成する
Microsoft Sentinel の自動化ルールを構成する手順は次のとおりです。
- Microsoft Sentinel ワークスペースに移動します。
- [構成] > [自動化] をクリックします。
- [作成] をクリックします。
- [自動化ルール] を選択します。
- 次の入力パラメータの値を指定します。
- 名前: 自動化ルールの名前を入力します。
- トリガー: [インシデント作成時] を選択します。
- アクション: [Playbook を実行] > [インシデント用に作成された Logic App] を選択します。
- [適用] をクリックします。
- [作成] をクリックします。
- [自動化ルール] を選択します。
- 次の入力パラメータの値を指定します。
- 名前: 自動化ルールの名前を入力します。
- トリガー: [インシデントが更新されたとき] を選択します。
- 条件: [追加] > [条件(AND)] > [ステータス] > [変更済み] をクリックします。
- アクション: [Playbook を実行] > [インシデント用に作成された Logic App] を選択します。
- [適用] をクリックします。
- [作成] をクリックします。
- [自動化ルール] を選択します。
- 次の入力パラメータの値を指定します。
- 名前: 自動化ルールの名前を入力します。
- トリガー: [アラートの作成時] を選択します。
- アクション: [Playbook を実行] > [アラート用に作成された Logic App] を選択します。
- [適用] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
AlertGenerationStatus |
security_result.detection_fields.AlertGenerationStatus |
JSON 解析後に ExtendedProperties フィールドから直接マッピングされます。 |
AlertLink |
principal.labels.AlertLink |
直接マッピング。 |
AlertName |
security_result.rule_name |
直接マッピング。 |
AlertSeverity |
security_result.severity |
直接マッピングされ、大文字に変換されます。値が HIGH、MEDIUM、LOW、CRITICAL、UNKNOWN_SEVERITY のいずれかの場合、security_result.severity にマッピングされます。それ以外の場合は security_result.severity_details にマッピングされます。 |
AlertType |
security_result.threat_name |
直接マッピング。 |
Category |
security_result.detection_fields.Category |
JSON 解析後に ExtendedProperties フィールドから直接マッピングされます。 |
CompromisedEntity |
principal.resource.attribute.labels.CompromisedEntity |
直接マッピング。 |
CompromisedEntityId |
security_result.detection_fields.CompromisedEntityId |
JSON 解析後に ExtendedProperties フィールドから直接マッピングされます。 |
ConfidenceLevel |
security_result.confidence_details |
直接マッピング。 |
ConfidenceScore |
security_result.detection_fields.ConfidenceScore |
直接マッピング。 |
cribl_pipe |
additional.fields.cribl_pipe |
直接マッピング。 |
Description |
security_result.description |
直接マッピング。 |
DestinationDevice |
security_result.detection_fields.DestinationDevice または target.ip |
JSON 解析後に ExtendedProperties フィールドからマッピングされます。値が有効な IP アドレスの場合は、target.ip にマッピングされます。それ以外の場合は、検出フィールドとしてマッピングされます。 |
DestinationDeviceAddress |
target.ip |
JSON 解析後に ExtendedProperties フィールドからマッピングされます(有効な IP アドレスの場合のみ)。 |
DeviceId |
security_result.detection_fields.DeviceId |
JSON 解析後に ExtendedProperties フィールドから直接マッピングされます。 |
DisplayName |
security_result.summary |
直接マッピング。 |
EndTime |
about.labels.EndTime |
直接マッピング。 |
Entities.Address |
principal.asset.ip |
JSON 解析後に Entities 配列から抽出されます。IP アドレスのみがマッピングされます。 |
Entities.HostName |
principal.asset.hostname または principal.asset.ip |
JSON 解析後に Entities 配列から抽出されます。値が有効な IP アドレスの場合は、principal.asset.ip にマッピングされます。それ以外の場合は principal.asset.hostname にマッピングされます。 |
Entities.IoTDevice.DeviceId |
security_result.detection_fields.IoTDeviceID |
JSON 解析後に Entities 配列から抽出されます。 |
Entities.IoTDevice.DeviceType |
security_result.detection_fields.IoTDeviceType |
JSON 解析後に Entities 配列から抽出されます。 |
Entities.IoTDevice.DeviceTypeId |
security_result.detection_fields.IoTDeviceTypeId |
JSON 解析後に Entities 配列から抽出されます。 |
Entities.IoTDevice.Importance |
security_result.detection_fields.IoTDeviceImportance |
JSON 解析後に Entities 配列から抽出されます。 |
Entities.IoTDevice.IoTSecurityAgentId |
security_result.detection_fields.IoTSecurityAgentId |
JSON 解析後に Entities 配列から抽出されます。 |
Entities.IoTDevice.Manufacturer |
security_result.detection_fields.IoT Manufacturer |
JSON 解析後に Entities 配列から抽出されます。 |
Entities.IoTDevice.OperatingSystem |
principal.asset.platform_software.platform_version |
JSON 解析後に Entities 配列から抽出された値。末尾のスペースは削除されています。 |
Entities.IoTDevice.PurdueLayer |
security_result.detection_fields.IoT PurdueLayer |
JSON 解析後に Entities 配列から抽出されます。 |
Entities.IoTDevice.Sensor |
security_result.detection_fields.IoT Sensor |
JSON 解析後に Entities 配列から抽出されます。 |
ExtendedProperties.Protocol |
security_result.detection_fields.Protocol |
JSON 解析後に ExtendedProperties フィールドから直接マッピングされます。 |
ExtendedProperties.SensorId |
security_result.detection_fields.SensorId |
JSON 解析後に ExtendedProperties フィールドから直接マッピングされます。 |
ExtendedProperties.SourceDevice |
principal.ip または security_result.detection_fields.SourceDevice |
JSON 解析後に ExtendedProperties フィールドからマッピングされます。値が有効な IP アドレスの場合は、principal.ip にマッピングされます。それ以外の場合は、検出フィールドとしてマッピングされます。 |
ExtendedProperties.SourceDeviceAddress |
principal.ip |
JSON 解析後に ExtendedProperties フィールドからマッピングされます(有効な IP アドレスの場合のみ)。 |
IsIncident |
security_result.detection_fields.IsIncident |
直接マッピングされ、文字列に変換されます。 |
ProcessingEndTime |
about.labels.ProcessingEndTime |
直接マッピング。 |
ProductComponentName |
principal.resource.attribute.labels.ProductComponentName |
直接マッピング。 |
ProductName |
principal.resource.attribute.labels.ProductName |
直接マッピング。 |
ProviderName |
principal.resource.attribute.labels.ProviderName |
直接マッピング。 |
ResourceId |
principal.resource.product_object_id 、target.resource.name |
直接マッピング。 |
SourceComputerId |
principal.asset.asset_id |
直接マッピングされ、「SourceComputerId:」が接頭辞として付加されます。 |
SourceSystem |
security_result.detection_fields.SourceSystem |
直接マッピング。 |
StartTime |
about.labels.StartTime |
直接マッピング。 |
Status |
security_result.detection_fields.Status |
直接マッピング。 |
SystemAlertId |
metadata.product_log_id |
直接マッピング。 |
Tactics |
security_result.attack_details.tactics.name |
JSON 解析とバックスラッシュの削除後に Tactics フィールドから抽出されます。 |
Techniques |
security_result.attack_details.techniques.id |
JSON 解析とバックスラッシュの削除後に Techniques フィールドから抽出されます。 |
TenantId |
additional.fields.TenantId |
直接マッピング。 |
TimeGenerated |
about.labels.TimeGenerated |
直接マッピング。 |
timestamp |
metadata.event_timestamp 、events.timestamp |
直接マッピング。 |
VendorName |
metadata.vendor_name |
直接マッピング。 |
VendorOriginalId |
additional.fields.VendorOriginalId |
直接マッピング。 |
_time |
metadata.event_timestamp 、events.timestamp |
UNIX 形式または UNIX_MS 形式を使用してタイムスタンプとして解析されます。 |
(パーサー ロジック) | metadata.event_type |
プリンシパル、ターゲット、ResourceId が存在する場合は「USER_RESOURCE_ACCESS」に設定します。それ以外の場合は、「GENERIC_EVENT」に設定します。 |
(パーサー ロジック) | metadata.log_type |
「MICROSOFT_SENTINEL」に設定します。 |
(パーサー ロジック) | metadata.product_name |
「MICROSOFT_SENTINEL」に設定します。 |
変更点
2023-11-03
- 「ResourceId」を「target.resource.name」にマッピングしました。
- 「ResourceId」が「null 以外」で、イベントの「principal」または「target」のいずれかが「null 以外」の場合、「metadata.event_type」を「USER_RESOURCE_ACCESS」にマッピングします。
2023-08-31
- 新しく作成されたパーサー。