Microsoft Graph security APIの変更点と移行対応|管理者・開発者が確認すべきポイント

Microsoft Graph security API を使ってセキュリティ運用を自動化している組織は、まず レガシ アラート API、アラート v2、インシデント、Advanced Hunting、権限、証拠データのパーサー を確認すべきです。特に /security/alerts を使っているアプリや SIEM 連携、Power BI レポート、Power Automate フローは、単なるエンドポイント差し替えでは済まない可能性があります。

結論として、既存環境で最優先に確認すべき点は3つです。1つ目は、レガシ アラート API の /security/alerts が 2026年8月31日に廃止予定であり、/security/alerts_v2 と /security/incidents への移行が必要なこと。2つ目は、Advanced Hunting の旧エンドポイントが 2027年2月1日にデータを返さなくなる予定であること。3つ目は、2026年5月12日に更新された関連リソース型を含め、alertEvidence の証拠データがより細かい型で扱われるため、連携アプリ側のデータモデルやフィルター条件を見直す必要があることです。(Microsoft Learn)

目次

Microsoft Graph security APIで何ができるのか

Microsoft Graph security API は、Microsoft とエコシステム パートナーのセキュリティ ソリューションを統合するための API です。複数のセキュリティ プロバイダーに対するクエリを集約し、アラート、インシデント、証拠、セキュア スコア、脅威インテリジェンス、監査、eDiscovery などを Microsoft Graph 経由で扱えるようにします。(Microsoft Learn)

実務での用途は、単に「アラート一覧を取得する」だけではありません。たとえば、SOC のトリアージ画面にインシデント情報を取り込む、SIEM に Microsoft Defender のアラートを送る、Power BI で月次の検知傾向を可視化する、重大度の高いインシデントだけをチケット化する、といった使い方が想定されます。

確認項目影響を受ける場面最初にやること
レガシ アラート API/security/alerts を使うアプリ、スクリプト、SIEM 連携/security/alerts_v2 と /security/incidents への移行対象を洗い出す
インシデント中心の設計複数アラートを手作業で関連付けている運用インシデント単位で一覧・詳細・更新する設計に変える
証拠データの型JSON パース、ETL、Power BI、チケット項目userStates など旧フィールド前提の処理を typed evidence に置き換える
Advanced Hunting旧 Advanced Hunting API、Power Platform、Power BIエンドポイント、権限、リクエスト本文、レスポンス形式を見直す
権限とロール委任アクセス、アプリケーション権限、管理者同意最小権限と Microsoft Entra ロールを再確認する
Microsoft SentinelSentinel アラートを Graph で取得する運用Sentinel ワークスペースが Defender ポータルに接続済みか確認する

重要な変更点は「アラート中心」から「インシデント中心」への移行

今回の要点は、Microsoft Graph security API のアラート管理が、従来の単独アラート中心から、インシデントと証拠を軸にしたモデルへ移っていることです。

レガシ アラート API は /security/alerts で利用されてきましたが、Microsoft はこのエンドポイントを非推奨とし、2026年8月31日に廃止予定としています。移行先は /security/alerts_v2 と /security/incidents です。さらに、新 API はレガシ API の一対一の置き換えではなく、Microsoft 365 Defender エコシステム内のアラートとインシデントを扱うモデルです。(Microsoft Learn)

操作旧API新API
アラート一覧取得GET /v1.0/security/alertsGET /v1.0/security/alerts_v2
アラート詳細取得GET /v1.0/security/alerts/{id}GET /v1.0/security/alerts_v2/{id}
アラート更新PATCH /v1.0/security/alerts/{id}PATCH /v1.0/security/alerts_v2/{id}
インシデント一覧取得なしGET /v1.0/security/incidents
インシデント詳細取得なしGET /v1.0/security/incidents/{id}

旧 API では、アプリ側で複数のアラートを集約し、同じ攻撃かどうかを判断する実装が必要になりがちでした。新しい alerts and incidents API では、関連するアラートがインシデントとしてまとめられ、攻撃の開始地点、使われた戦術、影響範囲、関連データを把握しやすくなります。(Microsoft Learn)

既存アプリで壊れやすいポイント

移行時に失敗しやすいのは、エンドポイントだけを置き換えてしまうケースです。たとえば、旧 API の vendorInformation.provider をもとに製品別集計をしていた場合、新 API では serviceSource や productName を使う設計に変える必要があります。また、userStates、hostStates、fileStates、networkConnections のような旧フィールドは、v2 では typed evidence に置き換えて考える必要があります。(Microsoft Learn)

つまり、移行作業では次の3点を分けて確認してください。

観点確認内容
API呼び出し旧エンドポイントを使っていないか
データモデル旧フィールド名や旧JSON構造を前提にしていないか
業務フローアラート単位の対応からインシデント単位の対応へ変更できるか

2026年5月12日更新の関連リソースで見る証拠データの拡張

Microsoft Graph security API の alertEvidence は、アラートに関係する証拠を表す基底型です。公式ドキュメントでは、ユーザー、デバイス、IP、URL、ファイル、クラウドリソースなど多数の派生型が定義されています。これにより、アラート本文の自由記述を解析するのではなく、型付きの証拠データとして処理しやすくなります。(Microsoft Learn)

2026年5月12日に更新された関連リソース型では、GitHub、サービス プリンシパル、SAS トークン、マルウェア、ホストログオン セッションなど、調査時に重要な証拠を扱うページが確認できます。(Microsoft Learn)

証拠リソース型表す内容実務上の見どころ
gitHubOrganizationEvidenceGitHub 組織組織ID、ログイン名、表示名、URLをSOCや資産台帳と突合できる
gitHubUserEvidenceGitHub ユーザーユーザーID、ログイン名、メールアドレスを開発者アカウント管理と照合できる
gitHubRepoEvidenceGitHub リポジトリリポジトリID、オーナー、オーナー種別をサプライチェーン調査に使える
servicePrincipalEvidenceセキュリティ検出に関係するサービス プリンシパルappId、tenantId、servicePrincipalType をもとに不審なアプリ権限を追跡できる
sasTokenEvidenceStorage コンテナー向け SAS トークン有効期限、許可IP、権限、プロトコル、署名元キーを確認できる
malwareEvidence検出アラートに含まれるマルウェアマルウェア名、カテゴリ、関連ファイル、関連プロセスを紐づけられる
hostLogonSessionEvidenceホストへのサインイン セッションアカウント、ホスト、セッションID、開始・終了時刻を調査できる

この変更の価値は、アラートの説明文を人間が読むだけでなく、開発者が自動処理しやすい形で証拠を扱える点にあります。たとえば、SAS トークンの期限が長すぎるアラートだけを抽出する、GitHub リポジトリに関係する検知を開発部門のチケットへ自動転送する、サービス プリンシパルの appId を Microsoft Entra ID のアプリ登録と照合するといった展開がしやすくなります。

unknownFutureValueを前提に実装する

Microsoft Graph security API の証拠リソースには、unknownFutureValue を含む列挙型が複数あります。さらに一部の列挙値は、Prefer: include-unknown-enum-members ヘッダーを使うことで取得できるとされています。(Microsoft Learn)

実装時は、未知の列挙値が来たときに処理を落とさないようにしてください。悪い実装例は、switch 文で既知の値だけを処理し、それ以外を例外にするパターンです。SOC 連携やチケット起票のような継続運用では、未知値は「その他」や「未分類」として保持し、ログに残すほうが安全です。

管理者が確認すべき設定

アプリ登録の権限を最小権限で見直す

alerts_v2 の読み取りでは、委任権限・アプリケーション権限ともに最小権限として SecurityAlert.Read.All が示されています。読み書きには SecurityAlert.ReadWrite.All が必要です。委任アクセスの場合、サインイン ユーザーには Security Reader、Global Reader、Security Operator、Security Administrator などの対応する Microsoft Entra ロールも必要です。(Microsoft Learn)

インシデントの読み取りでは SecurityIncident.Read.All、読み書きでは SecurityIncident.ReadWrite.All が使われます。こちらも委任アクセスでは対応する Microsoft Entra ロールが必要です。(Microsoft Learn)

目的最小権限の例注意点
アラートを読むSecurityAlert.Read.AllレポートやSIEM取り込み向け
アラートを更新するSecurityAlert.ReadWrite.Allstatus、classification、determination、assignedTo などを更新する運用向け
インシデントを読むSecurityIncident.Read.Allインシデント一覧、詳細、ダッシュボード向け
インシデントを更新するSecurityIncident.ReadWrite.AllSOC の割り当て、ステータス更新、ワークフロー連携向け

管理者が見落としやすいのは、API 権限を付けただけで終わってしまうことです。アプリケーション権限を追加した場合は管理者同意が必要です。委任アクセスでは、ユーザー側のロール不足で API 呼び出しが失敗することがあります。

Microsoft Sentinelを使っている場合はDefenderポータル接続を確認する

Microsoft Sentinel のアラートとインシデントを v2 API で扱いたい場合、Sentinel ワークスペースを Microsoft Defender ポータルに接続する必要があります。接続されていない Sentinel 由来のアラートや、Microsoft 365 Defender のインシデント モデルに入っていないスタンドアロン アラートは、新しい v2 API で返らない可能性があります。(Microsoft Learn)

確認すべきポイントは次の通りです。

確認項目判断基準
Sentinel ワークスペースDefender ポータルにオンボード済みか
既存の Sentinel 連携Graph v2 API で取得するのか、Sentinel REST API も併用するのか
スタンドアロン検知Defender のインシデントに昇格しない検知を別経路で取得する必要があるか
チケット連携Sentinel と Defender の二重起票になっていないか

特に、移行直後は「旧 API では取れていたアラートが v2 で見えない」という問い合わせが起きやすくなります。これは不具合ではなく、v2 API の対象範囲や Sentinel の接続状態による場合があります。

国内外リージョンや政府クラウドの対応状況を確認する

alerts_v2 と incidents の API は、Global、US Government L4、US Government L5 では利用可能とされていますが、China operated by 21Vianet は非対応とされています。多国籍企業や政府機関向けテナントを扱う場合は、利用可能なクラウド環境を移行計画に入れてください。(Microsoft Learn)

開発者が確認すべき移行ポイント

alerts_v2の一覧取得はフィルターとページングを前提にする

GET /security/alerts_v2 は、$count、$filter、$skip、$top をサポートします。フィルター対象として、assignedTo、classification、determination、createdDateTime、lastUpdateDateTime、severity、serviceSource、status が示されています。ページングには @odata.nextLink を使います。(Microsoft Learn)

GET /v1.0/security/alerts_v2?$filter=severity eq 'high' and status eq 'new'

大量のアラートを定期取得する場合は、毎回全件取得しないでください。lastUpdateDateTime を使った差分取得、@odata.nextLink によるページング、取得失敗時の再実行設計を入れる必要があります。

インシデントは$expand=alertsで関連アラートを取得できる

インシデント一覧は GET /security/incidents で取得できます。OData クエリとして $count、$filter、$skip、$top、$expand がサポートされています。関連アラートを含めたい場合は $expand=alerts を使えます。(Microsoft Learn)

GET /v1.0/security/incidents?$filter=status eq 'active' and severity eq 'high'
GET /v1.0/security/incidents?$expand=alerts

運用上は、アラート単位でチケットを切るより、インシデント単位でチケット化するほうが重複を減らせます。同じ攻撃に関係する複数アラートを別々に処理すると、SOC の対応履歴が分断され、原因分析やクローズ判断が難しくなります。

アラート更新は更新可能なプロパティだけを送る

PATCH /security/alerts_v2/{alertId} では、リクエスト本文に更新したい値だけを指定します。更新可能なプロパティとして、status、classification、customDetails、determination、assignedTo が示されています。(Microsoft Learn)

PATCH /v1.0/security/alerts_v2/{alertId}
Content-Type: application/json

{
  "assignedTo": "[email protected]",
  "classification": "truePositive",
  "determination": "malware",
  "status": "inProgress"
}

注意点は、アプリ側で「更新してよい項目」と「読み取り専用の調査情報」を明確に分けることです。たとえば、外部チケットシステムから戻ってきたステータスを Graph 側へ同期する場合、誤って分類や判定を上書きしないように、更新対象フィールドを固定してください。

Advanced Hunting API利用者の注意点

Advanced Hunting を使っている場合は、別の移行期限にも注意が必要です。Microsoft Graph の Advanced Hunting API は、旧エンドポイントである https://api.security.microsoft.com/api/advancedhunting/run と https://api.security.microsoft.com/api/advancedqueries/run を置き換える位置付けで、旧 API は 2027年2月1日にデータを返さなくなる予定です。(Microsoft Learn)

変更点はエンドポイントだけではありません。リソース URI、API 権限、リクエスト本文、レスポンス形式も変わります。Microsoft Learn の表では、新しい権限として ThreatHunting.Read.All、リクエスト本文として Query と Timespan、レスポンスとして huntingQueryResults が示されています。(Microsoft Learn)

項目旧APIで見直す点Microsoft Graph側で確認する点
エンドポイントDefender系の旧URLを直接呼んでいないかGraph の security/runHuntingQuery に変更する
権限AdvancedQuery.Read.All や AdvancedHunting.Read.All 前提かThreatHunting.Read.All を使う
リクエスト本文Query だけで実行していないかQuery と Timespan の指定を確認する
レスポンスStats、Schema、Results を直接参照していないかschema、results に合わせてパーサーを修正する

Power Platform フローにも注意が必要です。Microsoft Graph には、以前 Microsoft Defender ATP 用 Power Platform コネクタで使えた Advanced Hunting アクションが組み込まれていないため、継続利用にはカスタム コネクタの作成が必要とされています。Power BI レポートでも、旧 API を使ったクエリは Microsoft Graph のパラメーターに合わせて更新する必要があります。(Microsoft Learn)

展開時に失敗しやすいポイント

エンドポイント変更だけで移行完了と判断する

/security/alerts から /security/alerts_v2 へURLを変えるだけでは不十分です。Microsoft の移行ドキュメントでは、新 API はレガシ API の一対一の置き換えではないとされています。特に、フィールド名、証拠データ、フィルター、インシデント中心の設計が変わります。(Microsoft Learn)

取得件数の差をすぐ不具合扱いする

v2 API では、Microsoft 365 Defender エコシステムに含まれないアラート、Defender ポータルに接続されていない Sentinel ワークスペースのアラート、スタンドアロン アラート、チューニングで抑制されたアラートなどが返らない場合があります。移行前後で件数比較をする場合は、API の対象範囲をそろえてください。(Microsoft Learn)

UTC時刻をJSTとして扱ってしまう

Microsoft Graph の日時フィールドは ISO 8601 形式の UTC として扱われることが多く、証拠リソースの createdDateTime や SAS トークンの expiryDateTime なども UTC で説明されています。日本向けのレポートやチケットに表示する場合は、JST 変換を表示層で行い、保存データは UTC のまま扱う設計が安全です。(Microsoft Learn)

読み取り権限と更新権限を分けていない

ダッシュボードや月次レポートだけなら、原則として読み取り権限で足ります。アラートやインシデントを更新する自動化だけに読み書き権限を与えることで、誤更新や過剰権限のリスクを抑えられます。

テスト環境でGraph Explorerだけ確認して本番差分を見ない

Graph Explorer でクエリが動いても、本番アプリのアプリケーション権限、管理者同意、条件付きアクセス、対象テナント、クラウド環境、レート制限、ページング処理が同じとは限りません。検証では、Graph Explorer、開発環境、本番相当のアプリ登録の3段階で確認するのが現実的です。

管理者・開発者向けの移行チェックリスト

ステップ担当確認内容完了条件
既存API利用の棚卸し管理者・開発者/security/alerts、旧 Advanced Hunting API、Power BI、Power Automate、SIEM連携を洗い出す呼び出し元一覧が作成済み
権限の見直し管理者SecurityAlert.*、SecurityIncident.*、ThreatHunting.Read.All の必要性を確認最小権限で管理者同意済み
Sentinel接続確認セキュリティ管理者Defender ポータルへの接続状態を確認v2 APIで必要なアラートが取得できる
データモデル修正開発者旧フィールドを typed evidence に置き換えるJSON パーサーとDBスキーマが更新済み
フィルター修正開発者serviceSource、evidence/any()、status、severity などに変更主要検索条件が再現できる
レポート再検証SOC・情シス件数、重大度、分類、対応状況の差分を確認旧レポートとの差分理由を説明できる
段階展開管理者・開発者一部テナントまたは一部ワークフローで先行適用問題なければ全体展開できる
廃止前の停止計画管理者旧API呼び出しを止める日を決める旧エンドポイント依存が残っていない

今すぐ取るべき行動

Microsoft Graph security API の今回のポイントは、セキュリティ運用をより統合的に扱える一方で、旧 API との互換性に頼った実装が危険になっていることです。

まず、既存環境で /security/alerts と旧 Advanced Hunting API を使っている箇所を洗い出してください。次に、alerts_v2 と incidents を使った取得・更新の検証を行い、権限、ロール、Sentinel 接続、typed evidence のパース処理を確認します。最後に、Power BI、SIEM、SOAR、チケットシステムなど下流のワークフローで、件数やフィールドの差分が業務上問題ないかを確認してください。

移行の判断基準は「APIが呼べるか」ではなく、「SOCが同じ、またはそれ以上の精度で調査・対応できるか」です。インシデント中心の設計に切り替え、証拠データを活用できる形に整えることで、Microsoft Graph security API は単なるデータ取得APIではなく、セキュリティ運用の自動化基盤として使いやすくなります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次