Microsoft Sentinel で Entra ID のサインインログを使っていると SigninLogs と AADNonInteractiveUserSignInLogs 、そして、Defender XDR の EntraIdSignInEvents という3つの似たようなテーブルが気になります。コストや使い勝手の観点で、SigninLogsから EntraIdSignInEvents に移行すべきか?(できるか?)という疑問がわいてきたので、この記事ではそれらについて調べてみました。
本記事は2026年5月16日時点の情報を元に作成しています。
個人的な結論
- 自社の要件において、Defender XDR の
EntraIdSignInEventsで事足りるのであれば、SentinelのSigninLogsを辞めてこっちを使おう。 - ただ、エンタープライズの要件になってくると、まだ完全移行するのは厳しそう。
- いい所多いのに惜しいな。今後に期待。
3テーブルの基本情報 1 2 3
前提として、 SigninLogs と AADNonInteractiveUserSignInLogs 、Defender XDR の EntraIdSignInEventsとは何なのかを整理します。注意点としては、SigninLogs + AADNonInteractiveUserSignInLogs が EntraIdSignInEvents ではないところで、対象のログやカラムなどが異なります。
SigninLogs |
AADNonInteractiveUserSignInLogs |
EntraIdSignInEvents |
|
|---|---|---|---|
| ざっくり説明 | Entra ID の Interactive サインインログを Log Analytics / Sentinel に取り込んだもの。ただし、 service principal や workload identity 関連イベントも含まれる。 | Entra ID の Non-Interactive ユーザーサインインログを Log Analytics / Sentinel に取り込んだもの | Microsoft Defender XDR Advanced Hunting で参照できる Microsoft Entra ID のユーザーサインインイベント。Interactive / Non-Interactive を1テーブルで扱う。ただしSPNサインインなどは除く。(別テーブル) |
| 格納場所 | Sentinel(LAW) | Sentinel(LAW) | MDE Advanced Hunting |
| Analytics 保管期間 | 既定30日。Sentinel / Log Analytics の設定により最大2年まで延長可能。 | 同左 | Advanced Hunting 既定30日。現時点の筆者環境では Sentinel 側の保管管理対象外 |
| Total 保管期間 | 長期保管 / Data Lake を含め最大12年 | 同左 | Advanced Hunting 既定30日。現時点の筆者環境では Sentinel 側の保管管理対象外 |
| スコープ | Interactive のみ | Non-Interactive のみ | Interactive/Non-Interactive両方(1テーブル) |
| 取り込みコスト | Sentinel 課金あり | Sentinel 課金あり | Entra ID P2 に含まれ、Sentinel の課金なし |
| 有効カラム数(筆者環境のCSVエクスポート時点) | 94列 | 84列 | 52列 |
| ステータス | GA(従来) | GA(従来) | GA(2025/12/9〜) |
違い・使い分け・移行を考える上でのポイント
ポイント①:Sentinel は2テーブル、XDR は1テーブル
EntraIDのログをコネクターで Sentinel に転送すると、Interactive(画面による操作)と Non-Interactive(リフレッシュトークン、デーモン等)が別テーブルに分かれています。EntraIdSignInEvents はこの両者を1つのテーブルに統合しているため、union が不要になります。Non-Interactiveは情報が多すぎるので、分けてくれた方が嬉しい人もいるかもしれませんが、個人的には単一テーブルの方が好きです。
ポイント②:コスト
Sentinel は重量課金ですが、EntraIdSignInEvents は Entra ID P2 の範囲で固定費用なので、EntraIdSignInEventsで要件が満たせるのであれば、それだけで勘弁したいところであります。特に、AADNonInteractiveUserSignInLogsは超ログ量が多いのでバカ高くなりがちです。
ポイント③:EntraIdSignInEvents の保管期間制約
ポイント①②的には、EntraIdSignInEventsに移行したいところですが、長期保管ができないという大きな制約があります。Microsoft Defender ポータルの「Tables」画面で EntraIdSignInEvents を確認すると、現状は30日固定、Sentinel との統合なしと出ています。Defender for Endpoint 系のログは30日間保存して、その後データレイクへといった柔軟が保管ができますが、それができないのが辛いですね。
Sentinel の SigninLogs は Analytics Tier に格納されるため、保管期間を延長したり、Auxiliary Logs や Data Lake へ階層化することができます。一方 EntraIdSignInEvents は MDE 側の XDR テーブルであり、現時点では Sentinel の保管管理の仕組みが適用されません。
筆者の(なんの保証もできない)見立てでは、これは時間が解決する可能性が高いと思っています。Microsoft は Defender ポータルへの統合を着々と進めており、AADSignInEventsBeta → EntraIdSignInEvents へのリブランド・GA化もその流れの一環です。SigninLogs に比べてフラットで扱いやすいスキーマを持つ EntraIdSignInEvents が、将来的に Sentinel 側の保管管理にも対応してくるというシナリオは十分ありえます。ちなみに、MSにフィードバックを起票しているので賛同いただける方は投票をお願いします。
https://feedbackportal.microsoft.com/feedback/idea/9a02d265-d951-f111-9a90-6045bdb3484a
ポイント④:カラムが違う!!
さらに、SigninLogs と AADNonInteractiveUserSignInLogs 、Defender XDR の EntraIdSignInEvents はカラムが異なります。これも重大なポイントです。これは後ほど詳しく解説します。
ポイント⑤:EntraIdSignInEvents は旧 AADSignInEventsBeta の正式 GA 版
EntraIdSignInEvents の他に Defender XDR にはAADSignInEventsBetaというテーブルがあります。しかし。これは2025年12月9日に廃止され、EntraIdSignInEvents に完全移行しました。そのため、今回の議論の論点からは除外します。旧テーブル名を使っているクエリが残っている場合はまず名称を更新してください。
カラム名の差分を見てみた。
同じようなログではありますが、カラムは結構異なるものも多い印象です。カラム名が異なるだけで値は互換なものが多数ありますが、個人的に気になるものを挙げてみました。
ユーザー・アプリ識別系(リネームのみ)
| Sentinel | EntraIdSignInEvents | 備考 |
|---|---|---|
UserPrincipalName |
AccountUpn |
値は完全互換 |
UserId |
AccountObjectId |
ObjectID。完全互換 |
UserDisplayName |
AccountDisplayName |
リネームのみ |
AppDisplayName |
Application |
リネームのみ |
AppId |
ApplicationId |
リネームのみ |
OriginalRequestId |
RequestId |
リネームのみ |
Id |
ReportId |
リネームのみ |
エラー・結果系(型が変わる)
既存ルールに ResultType == "0" と書いている箇所は ErrorCode == 0 に修正が必要です。
| Sentinel | EntraIdSignInEvents | 注意点 |
|---|---|---|
ResultType(string: "0") |
ErrorCode(int: 0) |
型変換が必要 |
Status(dynamic) |
ErrorCode(int) |
Status.errorCode → ErrorCode で代替可 |
Conditional Access 系(型が変わる)
| Sentinel | EntraIdSignInEvents | 注意点 |
|---|---|---|
ConditionalAccessStatus(string: "success" / "failure" / "notApplied") |
ConditionalAccessStatus(int: 0/1/2) |
0=ポリシー適用、1=ポリシー適用試行失敗、2=ポリシー未適用。サインイン成否ではない点に注意 |
ConditionalAccessPolicies(dynamic) |
ConditionalAccessPolicies(string) |
parse_json() が必要になる |
SigninLogs の ConditionalAccessPolicies は Log Analytics 上では dynamic 型です。一方、AADNonInteractiveUserSignInLogs および EntraIdSignInEvents では string として扱われるため、展開時には parse_json() を挟むのが安全です。
EntraIdSignInEvents
| extend CAPolicies = parse_json(ConditionalAccessPolicies)
| mv-expand CAPolicies
| project Timestamp, AccountUpn, PolicyName=tostring(CAPolicies.displayName), Result=tostring(CAPolicies.result)
リスク系(型と値体系が変わる)
| Sentinel | EntraIdSignInEvents | int 値の意味 |
|---|---|---|
RiskLevelAggregated(string: "high" 等) |
RiskLevelAggregated(int) |
0=未設定, 1=none, 10=low, 50=medium, 100=high |
RiskLevelDuringSignIn(string) |
RiskLevelDuringSignIn(int) |
同様の値体系 |
RiskState(string: "atRisk" 等) |
RiskState(int) |
0=none, 1=confirmedSafe, 2=remediated, 3=dismissed, 4=atRisk, 5=confirmedCompromised |
// Before(SigninLogs)
SigninLogs
| where RiskLevelAggregated == "high"
// After(EntraIdSignInEvents)
EntraIdSignInEvents
| where RiskLevelAggregated == 100
デバイス・ロケーション系(フラット化で簡潔になる)
Sentinel ではこれらが dynamic 型の中にネストされていました。EntraIdSignInEvents ではすべてフラットな列として取得できます。
| Sentinel(dynamic 展開が必要) | EntraIdSignInEvents(フラット) |
|---|---|
DeviceDetail.displayName |
DeviceName |
DeviceDetail.operatingSystem |
OSPlatform |
DeviceDetail.isCompliant |
IsCompliant(int: 1/0) |
DeviceDetail.isManaged |
IsManaged(int: 1/0) |
DeviceDetail.browser |
Browser |
DeviceDetail.deviceId |
EntraIdDeviceId |
DeviceDetail.trustType |
DeviceTrustType |
LocationDetails.city |
City |
LocationDetails.countryOrRegion |
Country |
LocationDetails.state |
State |
| —(なし)— |
Latitude / Longitude
|
// Before(SigninLogs)
SigninLogs
| extend DeviceName = tostring(parse_json(DeviceDetail).displayName)
| where DeviceName contains "DESKTOP"
// After(EntraIdSignInEvents)
EntraIdSignInEvents
| where DeviceName contains "DESKTOP"
EntraIdSignInEvents にしかない列(移行で得られるもの)
移行することで新たに取得できるようになる情報です。特に GatewayJA4 は Sentinel のどのテーブルにも存在せず、GSA 経由トラフィックの分析に役立ちます。
| カラム | 用途 |
|---|---|
GatewayJA4 |
Global Secure Access 経由のサインインに付与される JA4 指紋 |
IsExternalUser(int) |
外部ユーザーフラグ(-1=未設定, 0=内部, 1=外部) |
IsGuestUser |
ゲストユーザーフラグ。公式スキーマ上は boolean。ただし Advanced Hunting の結果表示や CSV エクスポートでは 0/1 として見える場合がある |
LogonType |
ログオンセッション種別 |
EndpointCall |
使用した Entra ID エンドポイントと要求種別 |
Sentinel にしかない列(移行で失うもの)
EntraIdSignInEvents に完全移行すると失ってしまうカラムは以下の通りです。個人的には、1番目のAuthenticationDetailsは痛いなという感覚です。
① AuthenticationDetails
各認証ステップの詳細(認証方式、認証ステップ結果等)が含まれます。MFA の認証手段ごとに検知するルール(例:SMS OTP のみを許容するか監視するルール)はこのフィールドに依存している場合があります。EntraIdSignInEvents には代替カラムがありません。ちなみに、これは個人的にはほしいカラムだなと思っているので、FBを上げています。賛同いただける方は投票をお願いします。
② RiskDetail
少なくとも、私の検証だと、EntraIdSignInEvents では Identity Protection のリスクイベントの詳細理由(none / userPerformedSecuredPasswordChange 等)が取得できなくなっていました。(ただ、公式ドキュメントにはあるんですよねぇ 4 )とはいえ、なお RiskEventTypes は EntraIdSignInEvents にも存在するため、リスクイベントの種別(anonymizedIPAddress 等)は引き続き参照できます。
// Sentinel では詳細な理由でフィルタリングできる
SigninLogs
| where RiskDetail == "userPerformedSecuredPasswordChange"
// EntraIdSignInEvents では種別は参照できるが、詳細理由(RiskDetail)は存在しない
EntraIdSignInEvents
| where RiskEventTypes has "anonymizedIPAddress"
③ AuthenticationContextClassReferences(Sentinel 両テーブルに存在)
認証コンテキスト(ACR)の詳細。Step-up 認証の検証に使う場合は注意が必要です。
まとめ
総じていうと、まだまだ過渡期でエンタープライズであれば平行利用が現実的という印象ですが、Defender XDR の EntraIdSignInEvents はコスト的なメリットもありそうなので、是非とも今後のアップデートを頑張ってほしいものであります。SIEMを導入する予算のないが、P2を利用されている企業は積極的に活用できるなと思いました。
参考)カラム比較
※私が勝手にマッピングしただけなので、正確性は保証いたしかねます。
| セマンティクス | EntraIdSignInEvents (MDE) | SigninLogs (Sentinel Interactive) | AADNonInteractiveUserSignInLogs (Sentinel Non-Interactive) | 一致区分 / 備考 |
|---|---|---|---|---|
| ログ取り込み時刻(Sentinel インジェスト) | TimeGenerated | TimeGenerated | TimeGenerated | 完全一致(3テーブル) |
| サインイン発生時刻 | Timestamp | CreatedDateTime | CreatedDateTime | 部分一致(名称違い) 列名は違うが型は同じ datetime |
| 表示名 | AccountDisplayName | UserDisplayName | UserDisplayName | 部分一致(名称違い) 型は共通 string |
| オブジェクトID | AccountObjectId | UserId | UserId | 部分一致(名称違い) |
| UPN | AccountUpn | UserPrincipalName | UserPrincipalName | 部分一致(名称違い) |
| 代替サインイン名 | AlternateSignInName | AlternateSignInName | AlternateSignInName | 完全一致(3テーブル) フェデレーション環境でのUPNエイリアス |
| 外部ユーザーフラグ | IsExternalUser | ― | ― | MDE独自 Sentinelは UserType で判別 |
| ゲストユーザーフラグ | IsGuestUser | ― | ― | MDE独自 ⚠️MDE=int(0/1)。Sentinelは UserType='Guest' 相当 |
| ユーザー種別 | ― | UserType | UserType | Sentinel共通 Member / Guest / ExternalMember |
| パスワード最終変更日時 | LastPasswordChangeTimestamp | ― | ― | MDE独自 |
| クライアントアプリ表示名 | Application | AppDisplayName | AppDisplayName | 部分一致(名称違い) |
| クライアントアプリID | ApplicationId | AppId | AppId | 部分一称(名称違い) |
| リソース表示名 | ResourceDisplayName | ResourceDisplayName | ResourceDisplayName | 完全一致(3テーブル) |
| リソースID | ResourceId | ResourceId / ResourceIdentity | ResourceIdentity | 部分一致。EISE の ResourceId はリソースの GUID。SigninLogs では ResourceId が ARM 風 URI、ResourceIdentity がアプリ/リソース識別子として使われる場合がある。AADNonInteractiveUserSignInLogs では筆者環境の CSV では ResourceId は存在せず ResourceIdentity を確認 |
| リソース識別子(Sentinel) | ― | ResourceIdentity | ResourceIdentity | Sentinel共通 URI or GUID 文字列 |
| リソーステナントID | ResourceTenantId | ResourceTenantId | ResourceTenantId | 完全一致(3テーブル) マルチテナント環境でのリソース所在テナント |
| リソースSP ID | ― | ResourceServicePrincipalId | ResourceServicePrincipalId | Sentinel共通 |
| リソース所有テナントID | ― | ResourceOwnerTenantId | ResourceOwnerTenantId | Sentinel共通 |
| アプリ所有テナントID | ― | AppOwnerTenantId | AppOwnerTenantId | Sentinel共通 |
| サービスプリンシパルID | ― | ServicePrincipalId | ServicePrincipalId | Sentinel共通 Non-Interactive調査で重要 |
| サービスプリンシパル名 | ― | ― | ServicePrincipalName | AAD独自 |
| ソースアプリクライアントID | ― | ― | SourceAppClientId | AAD独自 |
| 認証処理詳細 | AuthenticationProcessingDetails | AuthenticationProcessingDetails | AuthenticationProcessingDetails | 完全一致(3テーブル) key/value ペアのJSON配列 |
| MFA要求レベル | AuthenticationRequirement | AuthenticationRequirement | AuthenticationRequirement | 完全一致(3テーブル) singleFactorAuthentication / multiFactorAuthentication |
| MFA詳細 | ― | MfaDetail | MfaDetail | Sentinel共通 authDetail / authMethod を含む |
| 認証メソッド一覧 | ― | AuthenticationMethodsUsed | AuthenticationMethodsUsed | Sentinel共通 |
| 認証ステップ詳細 | ― | AuthenticationDetails | AuthenticationDetails | Sentinel共通 各ステップの成否を格納。調査で重要 |
| 認証要求ポリシー | ― | AuthenticationRequirementPolicies | AuthenticationRequirementPolicies | Sentinel共通 |
| 認証プロトコル | ― | AuthenticationProtocol | AuthenticationProtocol | Sentinel共通 oAuth2 / wsFederation / saml20 / none |
| コンテキストクラス参照 | ― | AuthenticationContextClassReferences | AuthenticationContextClassReferences | Sentinel共通 |
| トークン発行者種別 | TokenIssuerType | TokenIssuerType | TokenIssuerType | 完全一致(3テーブル) ⚠️型差異: MDE=int(0=AzureAD...)、Sentinel=string("AzureAD"等) |
| トークン発行者名 | ― | TokenIssuerName | TokenIssuerName | Sentinel共通 |
| 一意トークンID | UniqueTokenId | UniqueTokenIdentifier | UniqueTokenIdentifier | 部分一致(名称違い) Base64文字列 |
| インタラクティブフラグ | ― | IsInteractive | IsInteractive | Sentinel共通 SigninLogs=true固定、AADNonInteractive=false固定 |
| 受信トークン種別 | ― | IncomingTokenType | IncomingTokenType | Sentinel共通 primaryRefreshToken / saml11 / saml20 など |
| Authenticatorアプリ位置 | ― | AuthenticatorAppLocation | AuthenticatorAppLocation | Sentinel共通 |
| Authenticatorアプリデバイス詳細 | ― | ― | AuthenticationAppDeviceDetails | AAD独自 |
| Authenticatorアプリポリシー評価 | ― | ― | AuthenticationAppPolicyEvaluationDetails | AAD独自 |
| クライアント資格情報種別 | ― | ClientCredentialType | ClientCredentialType | Sentinel共通 certificate / secret / managedIdentity / none |
| フェデレーション資格情報ID | ― | FederatedCredentialId | FederatedCredentialId | Sentinel共通 |
| 転送元メソッド | ― | OriginalTransferMethod | OriginalTransferMethod | Sentinel共通 none / deviceCodeFlow など |
| クライアントアプリ種別 | ClientAppUsed | ClientAppUsed | ClientAppUsed | 完全一致(3テーブル) Browser / Mobile Apps and Desktop clients / Exchange ActiveSync など |
| ブラウザ情報 | Browser | ― | ― | MDE独自 Sentinelは DeviceDetail JSON 内 .browser |
| ユーザーエージェント | UserAgent | UserAgent | UserAgent | 完全一致(3テーブル) |
| デバイス名 | DeviceName | ― | ― | MDE独自(個別列) Sentinel: parse_json(DeviceDetail).displayName |
| OSプラットフォーム | OSPlatform | ― | ― | MDE独自(個別列) Sentinel: parse_json(DeviceDetail).operatingSystem |
| デバイストラストタイプ | DeviceTrustType | ― | ― | MDE独自(個別列) Sentinel: parse_json(DeviceDetail).trustType |
| 管理デバイスフラグ | IsManaged | ― | ― | MDE独自(個別列) ⚠️MDE=int(0/1)。Sentinel: parse_json(DeviceDetail).isManaged (bool) |
| 準拠デバイスフラグ | IsCompliant | ― | ― | MDE独自(個別列) ⚠️MDE=int(0/1)。Sentinel: parse_json(DeviceDetail).isCompliant (bool) |
| EntraデバイスID | EntraIdDeviceId | ― | ― | MDE独自(個別列) Sentinel: parse_json(DeviceDetail).deviceId |
| デバイス詳細(JSON束ね) | ― | DeviceDetail | DeviceDetail | Sentinel共通 ⚠️MDEはフラット列。deviceId / displayName / operatingSystem / browser / trustType / isManaged / isCompliant を含む |
| 接続元IPアドレス | IPAddress | IPAddress | IPAddress | 完全一致(3テーブル) IPv4 or IPv6 文字列 |
| 国コード | Country | ― | ― | MDE独自(個別列) ⚠️MDEは個別列。Sentinel: parse_json(LocationDetails).countryOrRegion |
| 都道府県 | State | ― | ― | MDE独自(個別列) Sentinel: parse_json(LocationDetails).state |
| 市区町村 | City | ― | ― | MDE独自(個別列) Sentinel: parse_json(LocationDetails).city |
| 緯度 | Latitude | ― | ― | MDE独自(個別列) Sentinel: parse_json(LocationDetails).geoCoordinates.latitude |
| 経度 | Longitude | ― | ― | MDE独自(個別列) Sentinel: parse_json(LocationDetails).geoCoordinates.longitude |
| 位置情報詳細(JSON束ね) | ― | LocationDetails | LocationDetails | Sentinel共通 ⚠️MDEはフラット列。city / state / countryOrRegion / geoCoordinates を含む |
| ネットワーク位置詳細 | NetworkLocationDetails | NetworkLocationDetails | NetworkLocationDetails | 完全一致(3テーブル) trustedNamedLocation 等を含む JSON 配列 |
| ASN(自律システム番号) | ― | AutonomousSystemNumber | AutonomousSystemNumber | Sentinel共通 接続元ISP識別 |
| リソースプロバイダーIP | ― | ― | IPAddressFromResourceProvider | AAD独自 |
| GSA経由IPアドレス | ― | GlobalSecureAccessIpAddress | GlobalSecureAccessIpAddress | Sentinel共通 |
| GSA経由フラグ | IsSignInThroughGlobalSecureAccess | IsThroughGlobalSecureAccess | IsThroughGlobalSecureAccess | 部分一致(名称違い) 列名違いのみ。型はいずれも bool |
| テナント制限フラグ | ― | IsTenantRestricted | IsTenantRestricted | Sentinel共通 |
| Gateway JA4フィンガープリント | GatewayJA4 | ― | ― | MDE独自 TLSフィンガープリント。脅威ハンティングで活用 |
| CAポリシー評価結果 | ConditionalAccessPolicies | ConditionalAccessPolicies | ConditionalAccessPolicies | 完全一致(3テーブル) 各ポリシーの id / displayName / result / conditionsNotSatisfied を含む JSON 配列 |
| CA全体ステータス | ConditionalAccessStatus | ConditionalAccessStatus | ConditionalAccessStatus | 完全一致(3テーブル) ⚠️型差異: MDE=int(0=success, 1=failure, 2=notApplied)、Sentinel=string |
| CAポリシーV2(拡張) | ― | ConditionalAccessPoliciesV2 | ― | SigninLogs独自 |
| CAオーディエンス | ― | ConditionalAccessAudiences | ConditionalAccessAudiences | Sentinel共通 |
| 適用済みCAポリシー | ― | ― | AppliedConditionalAccessPolicies | AAD独自 |
| 集約リスクレベル | RiskLevelAggregated | RiskLevelAggregated | RiskLevelAggregated | 完全一致(3テーブル) ⚠️型差異: MDE=int(0=not set, 1=none, 10=low, 50=medium, 100=high)、Sentinel=string |
| サインイン中リスクレベル | RiskLevelDuringSignIn | RiskLevelDuringSignIn | RiskLevelDuringSignIn | 完全一致(3テーブル) ⚠️型差異: MDE=int、Sentinel=string |
| リスクイベント種別 | RiskEventTypes | RiskEventTypes | RiskEventTypes | 完全一致(3テーブル) |
| リスクイベント種別V2 | ― | RiskEventTypes_V2 | RiskEventTypes_V2 | Sentinel共通 ⚠️SL=string、AAD=dynamic[] と Sentinel内でも型が異なる |
| リスク状態 | RiskState | RiskState | RiskState | 完全一致(3テーブル) ⚠️型差異: MDE=int、Sentinel=string("atRisk"等) |
| リスク詳細 | ― | RiskDetail | RiskDetail | Sentinel共通 none / userPerformedSecuredPasswordChange など |
| リスクフラグ | ― | IsRisky | IsRisky | Sentinel共通 |
| リスクレベル(AAD独自) | ― | ― | RiskLevel | AAD独自 RiskLevelAggregatedとの差異要確認 |
| レビュー要フラグ | ― | ― | FlaggedForReview | AAD独自 |
| セッションID | SessionId | SessionId | SessionId | 完全一致(3テーブル) 同一セッション内イベントの紐付けキー |
| 相関ID | CorrelationId | CorrelationId | CorrelationId | 完全一致(3テーブル) 関連サインインイベントの紐付けキー |
| リクエストID | RequestId | OriginalRequestId | OriginalRequestId | 部分一致(名称違い) 列名違いのみ |
| レポート/イベント一意ID | ReportId | Id | Id | 部分一致(名称違い) Entra IDログの一意識別子 |
| セッションライフタイムポリシー | ― | SessionLifetimePolicies | SessionLifetimePolicies | Sentinel共通 |
| サインインイベント種別 | ― | SignInEventTypes | ― | SigninLogs独自 interactiveUser / nonInteractiveUser / servicePrincipal など |
| サインイン識別子 | ― | ― | SignInIdentifier | AAD独自 |
| サインイン識別子種別 | ― | SignInIdentifierType | SignInIdentifierType | Sentinel共通 |
| エラーコード/結果種別 | ErrorCode | ResultType | ResultType | 部分一致(名称違い) 0=成功。列名が違うが値は共通 |
| 結果詳細(JSON) | ― | Status | Status | Sentinel共通 errorCode / failureReason / additionalDetails を含む |
| 結果シグネチャ | ― | ResultSignature | ResultSignature | Sentinel共通 SUCCESS / FAILURE |
| 結果説明 | ― | ResultDescription | ResultDescription | Sentinel共通 |
| 処理時間(ms) | ― | ProcessingTimeInMs | ProcessingTimeInMilliseconds | Sentinel共通 ⚠️SL と AAD で列名が異なる(同概念)。DurationMs も両テーブルに存在 |
| 処理時間(ms) [共通] | ― | DurationMs | DurationMs | Sentinel共通 |
| クロステナントアクセス種別 | ― | CrossTenantAccessType | CrossTenantAccessType | Sentinel共通 B2B / B2C / microsoftSupport / none |
| ホームテナントID | ― | HomeTenantId | HomeTenantId | Sentinel共通 |
| ホームテナント名 | ― | HomeTenantName | HomeTenantName | Sentinel共通 |
| テナントID(ログ受信) | TenantId | TenantId | TenantId | 完全一致(3テーブル) Sentinelワークスペーステナント |
| Entra IDテナントID | ― | AADTenantId | AADTenantId | Sentinel共通 |
| トークン保護ステータス詳細 | ― | TokenProtectionStatusDetails | TokenProtectionStatusDetails | Sentinel共通 signInSessionStatus / signInSessionStatusCode を含む |
| ログオン種別(MDE分類) | LogonType | ― | ― | MDE独自 例: ["nonInteractiveUser"] |
| エンドポイント呼び出し種別 | EndpointCall | ― | ― | MDE独自 例: OAuth2:Token |
| オペレーション名 | ― | OperationName | OperationName | Sentinel共通 Sign-in activity |
| オペレーションバージョン | ― | OperationVersion | OperationVersion | Sentinel共通 |
| カテゴリ | ― | Category | Category | Sentinel共通 SignInLogs / NonInteractiveUserSignInLogs |
| リソースグループ | ― | ResourceGroup | ResourceGroup | Sentinel共通 |
| リソースプロバイダー | ― | ― | ResourceProvider | AAD独自 |
| リソース(ARM名称) | ― | ― | Resource | AAD独自 |
| Identity(表示用) | ― | Identity | Identity | Sentinel共通 |
| 重大度レベル | ― | Level | Level | Sentinel共通 Azure Monitor ログレベル |
| 場所(Azureリージョン) | ― | Location | Location | Sentinel共通 |
| エージェント情報 | ― | Agent | Agent | Sentinel共通 agentType / agentSubjectType を含む |
| イベントリスナー適用 | ― | AppliedEventListeners | AppliedEventListeners | Sentinel共通 |
| テーブル種別識別子 | Type | Type | Type | 完全一致(3テーブル) EntraIdSignInEvents / SigninLogs / AADNonInteractiveUserSignInLogs |
| ソースシステム | SourceSystem | SourceSystem | SourceSystem | 完全一致(3テーブル) Azure / MDE など |
ちなみに、こんな感じで見ていくと、ログ発生時刻とSentinelの書き込み時刻の差分など見えて来て面白いですね。

