エージェントジョブと実行履歴
エージェントジョブ では、選択中のアカウントのスケジュール済み自動化ジョブを確認できます。エージェントの状態、前回・次回実行、定義更新時刻を表示し、名前の昇順・降順、タイル表示・一覧表示を切り替えられます。管理者は Show system jobs でシステムジョブを表示できます。権限とエージェントの種類に応じて、有効化・無効化、スケジュール変更、Run now を実行できます。日時は選択中のアカウントのタイムゾーンで表示されます。History でも同じタイムゾーンが使用されます。
一覧は選択中のアカウントのソース設定で絞り込まれます。Devo エージェントには空でない DevoDomain が必要です。LogEase アラートエージェントには URL と API キーの両方が必要です。3つの Sentinel エージェント(mssentinel-alert-download、mssentinel-user-behavior-profile-download、mssentinel-heartbeat)には SentinelTenantId が必要です。Sentinel エージェントを有効化または実行するには、アカウントの認証情報と有効な運用設定も必要です。各カードまたは一覧行では、エージェント定義の description が表示タイトルとして使われ、その下に種類とバージョンが表示されます。
LogEase アラートの収集
アカウント設定 > Integrations > LogEase で、そのアカウントの LogEase URL と LogEase API key を設定します。両方の値が設定されると logease-alert-download ジョブが エージェントジョブ に表示され、実行できるようになります。保存済みの API キーは再表示されません。既存のキーを保持するには空欄のままにし、削除する場合はクリア操作を使用します。このジョブは LogEase のアラートを選択中のアカウントのアラートおよびケースのワークフローに取り込みます。
Devo アラートデータの収集
devo-alert-download エージェントは、選択中の SIEM+ アカウント向けに Devo の siem.logtrust.alert.info テーブルからアラートを収集します。アカウントの DevoDomain 設定を Devo の client フィルターとして使用し、アカウントのタイムゾーンに基づいて収集範囲を現地日付に分割します。
通常の実行では、次の処理を行います。
Sourceがdevoまたはdevo-で始まる、アカウント内の保存済みアラートの最新時刻から、復旧用に3日間の重複を含めて開始します。Devo アラートがまだない場合は、Days to sync の設定値(既定30日)から開始します。- 現地時間の現在の時刻までをアカウントの現地日付ごとに分割し、各日を15分単位の範囲で処理します。各要求は
client、limit=50、オフセット(skip)を指定してsiem.logtrust.alert.infoを検索し、50件未満の応答になるまでページングを続けます。 - 返された行を設定済みの Devo クライアントで絞り込み、各ページを直ちに保存します。一時的なゲートウェイ、ネットワーク、接続エラーは最大5回まで再試行します。
- アラートを
Alertsにアップサートします。ソース ID はアカウントとクライアント単位で作成され、利用可能な Devo アラート ID(id、alertid、uuid)を使い、ない場合は生行の SHA-256 ハッシュを使います。同じアラートは重複作成せず既存レコードを更新します。 extraDataがオブジェクトの場合はその内容を、そうでない場合は生行をAlertDataに保存します。DataSourceはソーステーブルのフィールドから取得し、Sourceは通常devo-<source>として作成します。AlertTypeは利用可能な MITRE ID、戦術、テクニックを連結し、なければアラート種別フィールドにフォールバックします。新しいアラートの状態はopenです。
管理者が過去日のアラートリセットを要求した場合、通常のダウンロード後に対象範囲を処理し、両方の処理が正常に完了した後だけリセット要求を削除します。アカウントのアラート書き込み後にアラート数のマテリアライズドビューを更新します。既定のスケジュールは6時間ごとで、カスタマイズ可能です。スケジュールはアカウントのタイムゾーンを使用します。
Devo ユーザー行動プロファイルの収集
devo-user-behavior-profile-download エージェントは、Devo のアラート取り込みとは独立して、アカウント単位のユーザー行動プロファイルを作成します。必須の認証ソースとして auth.all テーブルを使用し、アカウントのタイムゾーンで7暦日の範囲を処理します。各日を永続的にステージングしてから、任意のエンリッチメントを適用します。
認証クエリは、Windows の一般的な結果コードとソース固有の成功メッセージを含め、成功・失敗・判定不能のログイン結果を正規化します。活動時間、ソース IP/地域、アクション、ソーステーブルを記録します。日単位で再試行し、中断後は完了済みのステージングを再利用します。必須の認証フェーズとエンリッチメントフェーズが完了した日だけを集計するため、部分的な日付範囲も結果とベースラインソースに記録されます。
利用可能な場合は、認証コホートのユーザーに対して firewall.paloalto.globalprotect、firewall.fortinet.event.user、cloud.office365.management、ユーザー名が付与された firewall.all.traffic、box.all.win、box.all.unix、cloud.gsuite.reports を検索します。任意のテーブルが利用できない場合や、トラフィックにユーザー名が付与されていない場合も、他の完了済みソースのデータは破棄せず、カバレッジの欠落として記録します。ユーザーごとに少なくとも5件の対象認証イベントがある場合にプロファイルを更新します。プロファイルエージェントは、平日・週末の通常アクティブ時間、ソース地域、データソース構成、アクション構成、認証失敗率、分類不明率を作成し、既存のロールと部門のメタデータを保持します。既定のスケジュールは毎週土曜日 00:00 UTC で、読み取り専用です。
Sentinel アラートデータの収集
mssentinel-alert-download エージェントは、選択中の SIEM+ アカウント向けに Microsoft Sentinel のアラートデータを収集します。目的は、Sentinel の検知結果を、共通の SIEM+ アラートスキーマを使ってアカウントのアラートおよびケースワークフローで利用できるようにすることです。このエージェントは Microsoft Graph security API を使用し、Sentinel ワークスペースのログや認証イベントは取得しません。
各回の実行では、次の処理を行います。
lastUpdateDateTimeフィルターを使って、インシデントとアラートを独立して一覧取得します。初回は設定された初期バックフィル期間(既定7日)から開始し、以降はインシデント用とアラート用の別々のカーソルを使います。Microsoft Graph の@odata.nextLinkをたどってすべてのページを読み込みます。- インシデントのメタデータをコンテキストと関連付けのために保存し、アラートレコードを選択中のアカウントにアップサートします。同じ外部アラート ID の Sentinel アラートが既にある場合は重複作成せず更新します。
- 各アラートの
incidentIdを同じ実行で取得したインシデントと関連付けます。現在のインシデント結果に対象インシデントがない場合でも、アラートはインシデントコンテキストなしで保持されます。 - イベント時刻、タイトル、カテゴリ、重大度、状態、サービスソース、製品、説明、MITRE テクニック、ユーザー、送信元・宛先 IP アドレス、クラウドアプリケーションなどの調査用フィールドを正規化します。
- Graph の元のアラートと関連付けたインシデントメタデータを
AlertDataに保持し、異なる形式の Graph 証拠をSentinelAlertEntitiesに保存します。
2つの取得処理は独立して同時に実行されます。成功した取得処理だけがバッチをコミットして対応するカーソルを進めるため、Graph エンドポイントの一方が失敗した場合、実行結果は部分成功になることがあります。インシデント取得が失敗しても、成功したアラート取得の結果は保存され、不足していたインシデントコンテキストは後続のインシデント更新で関連付けられる場合があります。各取得処理のエラーと最終状態は実行履歴に記録されます。
Sentinel データソースを準備する
エージェントが使用する Entra アプリ登録に、次の最小権限の Microsoft Graph アプリケーション権限を追加します。
| 収集目的 | エンドポイント | アプリケーション権限 |
|---|---|---|
| アラートコンテキスト用のインシデントレコードをダウンロード | GET /v1.0/security/incidents | SecurityIncident.Read.All |
| アラートレコードと証拠をダウンロード | GET /v1.0/security/alerts_v2 | SecurityAlert.Read.All |
この2つの権限は List incidents と List alerts API に必要です。Microsoft Graph の Application permissions を使用し、Delegated permissions は使用しないでください。テナント全体の管理者同意も付与します。
収集を実行するには、アカウントとエージェントの両方を設定します。
- 選択中のアカウントの アカウント設定 > Integrations で、対象テナントの Microsoft Sentinel tenant ID、Application (client) ID、Client secret を設定します。プロファイルとハートビートで使用するワークスペースを指定する場合は、任意の workspace ID も入力します。テナント ID が空欄の場合、アカウントに Sentinel エージェントは表示されず、実行もされません。
- Integrations で Save を選択します。既存のクライアントシークレットを保持する場合は空欄のままにしてください。保存後、シークレットは表示されません。
- エージェントジョブ で Sentinel 設定を開き、運用設定だけを保存します。SIEM+ は有効な Sentinel エージェントについて必要な Graph エンドポイントを起動時に確認し、認証エラーや権限不足を報告します。収集実行の失敗はエージェント履歴に記録されます。
- すぐに収集する場合は Run now を選択します。アラートエージェントの既定スケジュールは6時間ごとで、アカウント単位で変更できます。
初期バックフィルは既定7日、ページサイズは既定50です。Microsoft Graph security API の上限により、ページサイズは50を超えられません。リトライ回数、リトライのバックオフ、マッピングプロファイルバージョンも Sentinel エージェント設定に保存されます。
運用設定は Sentinel エージェント定義のコンテキストに保存され、同じ定義を使用するアカウント間で共有されます。Sentinel の認証情報は アカウント設定 > Integrations にアカウント単位で保存され、API にはアプリケーション ID とシークレット設定済みかどうかだけが返され、シークレット自体は返されません。アカウント管理者だけが認証情報または共有運用設定を変更してください。
Sentinel ユーザー行動プロファイルの収集
mssentinel-user-behavior-profile-download エージェントは、Microsoft Graph Advanced Hunting を通じて、Sentinel の正規化された ASimAuthenticationEventLogs テーブルからアカウント単位のユーザー行動プロファイルを作成します。mssentinel-alert-download とは独立して実行され、作成したベースラインを UserBehaviorProfiles に保存します。
プロファイルクエリは固定された7日間のベースライン範囲を使用します。
ASimAuthenticationEventLogs
| where TimeGenerated >= ago(7d) and TimeGenerated <= now()
Microsoft Graph Advanced Hunting のこの要求ではワークスペースの ASIM パーサー関数 imAuthentication を使用できないため、実装は正規化されたテーブルを直接クエリします。KQL フィルターと Graph の Timespan は同じ固定7日間(P7D)のベースライン範囲を使用します。クエリは設定済みのテナントとアカウントのユーザースコープで絞り込まれてから、認証アクティビティをプロファイル統計に集約します。
プロファイルエージェントは、平日・週末の通常アクティブ時間、ソース地域、データソース構成、アクション構成、認証失敗率、分類不明率を作成します。ユーザーごとに少なくとも5件の対象認証イベントがある場合にプロファイルを更新します。Sentinel の認証データにはロールと部門がないため、既存のロールと部門のメタデータは保持されます。
各実行では認証コホートのユーザーについて ASimAuditEventLogs、ASimNetworkSessionLogs、ASimProcessEventLogs、ASimWebSessionLogs も確認します。これらのエンリッチメントテーブルは populated、empty、unavailable として記録され、任意テーブルが利用できない場合は他の完了済みソースを破棄せず、ベースラインは部分カバレッジになります。このエージェントは /v1.0/security/runHuntingQuery を呼び出します。Entra アプリ登録に Microsoft Graph の ThreatHunting.Read.All Application permission を追加し、テナント全体の管理者同意を付与してください。選択した Sentinel ワークスペースには ASimAuthenticationEventLogs が必要で、任意のエンリッチメントテーブルは個別に記録されます。アカウント設定 > Integrations で任意の workspace ID を設定するか、空欄にしてプライマリ/既定ワークスペースを使用します。
チェックインされたプロファイルエージェントのスケジュールは毎週土曜日 00:00 UTC で、読み取り専用です。表示には tenant ID が必要で、有効化または実行には tenant ID、Application (client) ID、Client secret、および有効なエージェント設定が必要です。
Sentinel ハートビートの収集
mssentinel-heartbeat エージェントは Microsoft Graph Advanced Hunting で Sentinel の正規化された ASIM テーブルを検索し、既存の SIEM+ ハートビートカテゴリにマッピングします。アカウントのハートビート同期期間をアカウントのタイムゾーンで処理し、時間単位のハートビート件数を保存します。各 ASIM テーブルは一度だけ検索されるため、複数のソースエイリアスによって同じテーブルが二重計上されることはありません。
| ASIM テーブル | ハートビートカテゴリ |
|---|---|
ASimAuthenticationEventLogs、ASimAuditEventLogs | cloud_identity |
ASimNetworkSessionLogs、ASimWebSessionLogs | network |
ASimProcessEventLogs、ASimAlertEventLogs | endpoint |
ハートビートエージェントは /v1.0/security/runHuntingQuery を使用し、Microsoft Graph の ThreatHunting.Read.All Application permission、テナント全体の管理者同意、選択したワークスペースへの Advanced Hunting アクセスが必要です。既定のワークスペースを使用しない場合は、アカウント設定 > Integrations で workspace ID を設定します。
チェックインされたスケジュールは毎時(0 * * * *)で、読み取り専用です。tenant ID があるとエージェントが表示され、tenant ID、Application (client) ID、Client secret、有効なエージェント設定が揃うと有効化・実行できます。
エージェント管理
カードには名前、種類、定義バージョン、状態、スケジュール、前回・次回実行、定義更新時刻が表示されます。Healthy は完了実績のある有効ジョブ、Awaiting first run は未実行の有効ジョブ、Running は実行中またはキュー中、Disabled は実行しないジョブです。カスタマイズ可能なジョブだけスケジュールを編集できます。devo-alert-download は Agent timezone、その他は UTC を使用します。変更後に Save を選択します。
エージェントジョブの使い方
- ヘッダーで正しいアカウントを選択します。
- エージェントジョブ で表示形式と名前順を選び、必要なら Show system jobs を有効にします。
- ジョブが有効で実行中でないことを確認し、Run now を選択します。同じジョブの重複実行はできません。
- History でエージェント、状態、開始日時の範囲を指定して Search を選択します。
- Queued の行だけ Cancel でキャンセルできます。JSON 結果は展開または Raw JSON で確認できます。
実行履歴
状態は Running、Succeeded、Failed、Cancelled、Skipped です。画面は 15 秒ごとに更新されます。長時間キューに残る場合は更新して状態を確認してから再実行してください。