Microsoft Defender for Cloud アラートログを収集する
概要
このパーサーは、Microsoft Defender for Cloud の JSON 形式のログからセキュリティ アラート データを抽出します。未加工のログフィールドを Google SecOps UDM に変換してマッピングし、さまざまなデータ型とネスト構造を処理します。また、分析を改善するために、追加のコンテキストとラベルでデータを拡充します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス。
- Microsoft Defender for Cloud への特権アクセス。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Microsoft Defender for Cloud アラートログ)。
- [Source type] として [Webhook] を選択します。
- [Log type] として [Microsoft Defender for Cloud] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。
- Split delimiter: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- 秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
- [完了] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- ソースタイプ: Google SecOps にログを収集するために使用される方法。
- アセットの名前空間: フィードに関連付けられた名前空間。
Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
[秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
[詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント 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
: フィードの認証用に生成した秘密鍵。
Azure Logic App を作成する
- Azure Portal(https://portal.azure.com)にログインします。
- [Create a resource] をクリックし、[Logic App] を検索します。
- [Create] をクリックして、デプロイ プロセスを開始します。
- Logic App を構成する:
- Name: Logic App のわかりやすい名前を指定します(例: GoogleSecOpsWebhook)。
- Subscription: 該当するサブスクリプションを選択します。
- Resource Group: 既存のリソース グループを選択するか、新しいリソース グループを作成します。
- Location: 環境に最も近いロケーションを選択します。
- Log Analytics: Logic App の診断データをロギングする場合は、このオプションを有効にします。
- [Review + Create] をクリックして、Logic App を作成します。
- [Create] をクリックして、Logic App をデプロイします。
Azure Logic App Webhook 接続を構成する
- 前の手順で作成した Logic App に移動します。
- [Development Tools] > [Logic App Designer] をクリックします。
- [Add a trigger] をクリックします。
トリガーとして [Microsoft Defender for Cloud] > [When a Microsoft Defender for Cloud alert is created or triggered] を検索します。
[Create new] をクリックし、画面の指示に沿って認証します。
[Insert a new step] をクリックして、ワークフローに新しいステップを追加します。
[Add an action] をクリックします。
「HTT」を検索します。
アクションとして [HTTP] を選択します。
HTTP アクションを構成します。
- URI: Google SecOps API エンドポイントの URL を入力します。
- Method:
POST
- Add Content-Type header:
Content-Type
をヘッダーキーとして、application/json
をヘッダー値として設定します。これにより、送信されるデータの形式が Google SecOps に通知されます。 - Add API Key to queries:
key
を最初のクエリキーとして、<API_KEY>
をクエリ値として設定します。API_KEY
は、Google SecOps フィード構成時に生成された API キーの値です。 - Add Secret Key to queries:
secret
を 2 番目のクエリキーとして、<SECRET_KEY>
をクエリ値として設定します。SECRET_KEY
は Google SecOps フィード構成時に生成された秘密鍵です。 - Set Body from previous step: [Enter request content] > [Enter the data from previous steps](入力フィールドの左側にある稲妻アイコンのボタン)をクリックします。
[Save] をクリックします。
Microsoft Defender Cloud Alerts Webhook を構成する
- Microsoft Defender for Cloud に移動します。
- [Management] > [Workflow automation] をクリックします。
- [Add workflow automation](ワークフローの自動化を追加)をクリックします。
- Name: 自動化ルールにわかりやすい名前を付けます(例: ForwardAlertsToGoogleSecOps)。
- Resource Group: 既存のリソース グループを選択します。
- Defender for Cloud data type: [Security alert] を選択します。
- Alert severity: [Select all] を選択します。
- Show Logic App instances from the following subscriptions: Logic App が作成されたサブスクリプションを選択します。
- Select Logic App: 前の手順で作成した Logic App を選択します。
- [Create] をクリックして、ワークフローの自動化を保存します。
UDM マッピング テーブル
ログフィールド | UDM マッピング | 論理 |
---|---|---|
AlertLink |
principal.resource.attribute.labels.AlertLink.value |
直接マッピングされます。 |
AlertName |
security_result.rule_name |
直接マッピングされます。 |
AlertSeverity |
security_result.severity |
値が HIGH、MEDIUM、LOW、CRITICAL、UNKNOWN_SEVERITY のいずれかである場合は、直接マッピングされます。それ以外の場合は security_result.severity_details にマッピングされます。値は比較前に大文字に変換されます。 |
AlertType |
security_result.threat_name |
直接マッピングされます。 |
CompromisedEntity |
principal.resource.attribute.labels.CompromisedEntity.value |
直接マッピングされます。 |
Description |
security_result.description |
直接マッピングされます。 |
DisplayName |
security_result.summary |
直接マッピングされます。 |
EndTime |
about.resource.attribute.labels.EndTime.value |
直接マッピングされます。 |
Entities[].Location.City |
principal.location.city |
直接マッピングされます。 |
Entities[].Location.CountryName |
principal.location.country_or_region |
直接マッピングされます。 |
ExtendedLinks[].Category |
about.resource.attribute.labels.extendedLink_Category.value |
直接マッピングされます。 |
ExtendedLinks[].Href |
about.resource.attribute.labels.extendedLink_Href.value |
直接マッピングされます。 |
ExtendedLinks[].Label |
about.resource.attribute.labels.extendedLink_Label.value |
直接マッピングされます。 |
ExtendedLinks[].Type |
about.resource.attribute.labels.extendedLink_Type.value |
直接マッピングされます。 |
ExtendedProperties.Account Session Id |
network.session_id |
accountSessionId に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Alert Id |
metadata.product_log_id |
alertId に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Authentication type |
extensions.auth.auth_details |
authenticationType に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Client Application |
principal.application |
clientApplication に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Client Hostname |
principal.asset.hostname 、principal.hostname |
clientHostName に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Client IP address |
principal.asset.ip 、principal.ip |
clientIpAddress に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Client IP location |
principal.location.country_or_region |
clientIpLocation に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Client Location |
principal.location.country_or_region |
clientLocation に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Client Principal Name |
principal.user.userid |
clientPrincipalName に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Compromised Host |
principal.asset.hostname 、principal.hostname |
compromisedHost に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Suspicious Command Line |
target.process.command_line |
suspiciousCommandLine に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Suspicious Process |
target.process.file.full_path |
suspiciousProcess に名前変更された後、直接マッピングされます。 |
ExtendedProperties.Suspicious Process Id |
target.process.pid |
suspiciousProcessId に名前変更された後、直接マッピングされます。 |
ExtendedProperties.User agent |
network.http.user_agent |
userAgent に名前変更された後、直接マッピングされます。 |
ExtendedProperties.User Name |
principal.user.user_display_name |
userName に名前変更された後、直接マッピングされます。 |
ExtendedProperties.resourceType |
principal.resource.name |
直接マッピングされます。 |
IsIncident |
security_result.detection_fields.IsIncident.value |
直接マッピングされます。文字列に変換されます。 |
ProcessingEndTime |
about.resource.attribute.labels.ProcessingEndTime.value |
直接マッピングされます。 |
ProductName |
metadata.product_name |
直接マッピングされます。 |
ResourceId |
principal.resource.product_object_id |
直接マッピングされます。 |
SourceSystem |
security_result.detection_fields.SourceSystem.value |
直接マッピングされます。 |
StartTime |
about.resource.attribute.labels.StartTime.value |
直接マッピングされます。 |
Status |
security_result.detection_fields.Status.value |
直接マッピングされます。 |
SystemAlertId |
metadata.product_log_id |
直接マッピングされます。 |
Tactics |
security_result.attack_details.tactics.name |
直接マッピングされます。 |
TenantId |
additional.fields.TenantId.string_value |
直接マッピングされます。 |
TimeGenerated |
about.resource.attribute.labels.TimeGenerated.value |
直接マッピングされます。 |
VendorName |
metadata.vendor_name |
直接マッピングされます。 |
WorkspaceResourceGroup |
target.resource.attribute.labels.WorkspaceResourceGroup.value |
直接マッピングされます。 |
WorkspaceSubscriptionId |
target.resource.attribute.labels.WorkspaceSubscriptionId.value |
直接マッピングされます。 |
_Internal_WorkspaceResourceId |
target.resource.product_object_id |
直接マッピングされます。 |
properties.alertDisplayName |
security_result.rule_name |
直接マッピングされます。 |
properties.alertType |
security_result.threat_name |
直接マッピングされます。 |
properties.alertUri |
principal.resource.attribute.labels.AlertUri.value |
直接マッピングされます。 |
properties.correlationKey |
principal.resource.attribute.labels.correlationKey.value |
直接マッピングされます。 |
properties.description |
security_result.description |
直接マッピングされます。 |
properties.endTimeUtc |
additional.fields.EndTime.string_value |
直接マッピングされます。 |
properties.entities[].location.city |
principal.location.city |
直接マッピングされます。 |
properties.entities[].location.countryName |
principal.location.country_or_region |
直接マッピングされます。 |
properties.entities[].location.latitude |
principal.location.region_coordinates.latitude |
直接マッピングされます。浮動小数点数に変換されます。 |
properties.entities[].location.longitude |
principal.location.region_coordinates.longitude |
直接マッピングされます。浮動小数点数に変換されます。 |
properties.extendedProperties.alert_Id |
metadata.product_log_id |
直接マッピングされます。 |
properties.extendedProperties.clientApplication |
principal.application |
直接マッピングされます。 |
properties.extendedProperties.clientIpAddress |
principal.asset.ip 、principal.ip |
直接マッピングされます。IP アドレスとして解析されます。 |
properties.extendedProperties.clientLocation |
principal.location.country_or_region |
直接マッピングされます。 |
properties.extendedProperties.clientPrincipalName |
principal.user.userid |
直接マッピングされます。 |
properties.extendedProperties.compromisedEntity |
principal.resource.attribute.labels.CompromisedEntity.value |
直接マッピングされます。 |
properties.extendedProperties.resourceType |
principal.resource.name |
直接マッピングされます。 |
properties.IsIncident |
security_result.detection_fields.isIncident.value |
直接マッピングされます。文字列に変換されます。 |
properties.productName |
metadata.product_name |
直接マッピングされます。 |
properties.resourceIdentifiers[].<key> |
additional.fields.<key>_<index>.string_value |
直接マッピングされます。キー $id と type には、配列内の要素のインデックスが付加されます。 |
properties.severity |
security_result.severity |
値が HIGH、MEDIUM、LOW、CRITICAL、UNKNOWN_SEVERITY のいずれかである場合は、直接マッピングされます。それ以外の場合は security_result.severity_details にマッピングされます。値は比較前に大文字に変換されます。 |
properties.startTimeUtc |
additional.fields.StartTime.string_value |
直接マッピングされます。 |
properties.status |
security_result.detection_fields.Status.value |
直接マッピングされます。 |
properties.timeGeneratedUtc |
additional.fields.TimeGenerated.string_value |
直接マッピングされます。ログに指定されていない場合は、「MICROSOFT_DEFENDER_CLOUD_ALERTS」に設定されます。「MICROSOFT_DEFENDER_CLOUD_ALERTS」に設定されます。プリンシパルまたはターゲットが存在する場合は「USER_RESOURCE_ACCESS」に設定し、それ以外の場合は「GENERIC_EVENT」に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。