レガシ アップロード インジケーター API を参照する

Microsoft Sentinelのアップロード インジケーター API では、脅威インテリジェンス プラットフォームまたはカスタム アプリケーションが STIX 形式の侵害のインジケーターをMicrosoft Sentinel ワークスペースにインポートすることができました。 このドキュメントは、レガシ API への参照として機能します。

重要

この API はプレビュー段階ですが、推奨されなくなりました。 新しい STIX オブジェクト API をプレビューで使用して、脅威インテリジェンスをアップロードします。 詳細については、「 STIX オブジェクト API」を参照してください。 Azureプレビュー補足条項には、ベータ版、プレビュー版、または一般公開されていないAzure機能に適用される追加の法的条件が含まれています。

アップロード インジケーター API 呼び出しには、次の 5 つのコンポーネントがあります。

  1. 要求 URI
  2. HTTP 要求メッセージ ヘッダー
  3. HTTP 要求メッセージ本文
  4. 必要に応じて HTTP 応答メッセージ ヘッダーを処理する
  5. 必要に応じて HTTP 応答メッセージ本文を処理する

クライアント アプリケーションをMicrosoft Entra IDに登録する

Microsoft Sentinelに対する認証を行うには、アップロード インジケーター API への要求に有効なMicrosoft Entraアクセス トークンが必要です。 アプリケーションの登録の詳細については、「Microsoft ID プラットフォームにアプリケーションを登録する」を参照するか、API データ コネクタのセットアップのアップロード インジケーターの一部としての基本的な手順を参照してください。

アクセス許可

この API では、呼び出し元Microsoft Entraアプリケーションにワークスペース レベルでMicrosoft Sentinel共同作成者ロールを付与する必要があります。

要求を作成する

このセクションでは、前に説明した 5 つのコンポーネントのうちの最初の 3 つについて説明します。 最初に、要求メッセージ ヘッダーのアセンブルに使用するMicrosoft Entra IDからアクセス トークンを取得する必要があります。

アクセス トークンを取得する

OAuth 2.0 認証を使用してMicrosoft Entraアクセス トークンを取得します。 V1.0 と V2.0 は、API によって受け入れられる有効なトークンです。

アプリケーションが受け取るトークン (v1.0 または v2.0) のバージョンは、アプリケーションが呼び出している API のアプリ マニフェストaccessTokenAcceptedVersion プロパティによって決まります。 accessTokenAcceptedVersionが 1 に設定されている場合、アプリケーションは v1.0 トークンを受け取ります。

Microsoft 認証ライブラリ MSAL を使用して、v1.0 または v2.0 のアクセス トークンを取得します。 または、次の形式で REST API に要求を送信します。

  • POST https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token
  • Microsoft Entra アプリを使用するためのヘッダー:
  • grant_type: "client_credentials"
  • client_id: {Microsoft Entra App のクライアント ID}
  • client_secret: {secret of Microsoft Entra App}
  • スコープ: "https://management.azure.com/.default"

アプリ マニフェストの accessTokenAcceptedVersion が 1 に設定されている場合、アプリケーションは v2 トークン エンドポイントを呼び出している場合でも、v1.0 アクセス トークンを受け取ります。

リソース/スコープの値は、トークンの対象ユーザーです。 この API は、次の対象ユーザーのみを受け入れます。

  • https://management.core.windows.net/
  • https://management.core.windows.net
  • https://management.azure.com/
  • https://management.azure.com

要求メッセージをアセンブルする

レガシ API には 2 つのバージョンがありました。 エンドポイントに応じて、要求本文に異なる配列名が必要でした。 これは、ロジック アプリ コネクタ アクションの 2 つのバージョンでも表されていました。

Microsoft Sentinel アップロード インジケーター API のロジック アプリ コネクタ アクション名のスクリーンショット。

  1. コネクタ アクション名: 脅威インテリジェンス - 侵害のインジケーターのアップロード (非推奨)
    • エンドポイント: https://sentinelus.azure-api.net/{workspaceId}/threatintelligence:upload-indicators
    • インジケーター名の配列: value
    { "sourcesystem":"TIsource-example", "value":[] }
    
    
  • コネクタ アクション名: 脅威インテリジェンス - 侵害のインジケーターのアップロード (V2) (プレビュー)
    • エンドポイント: https://sentinelus.azure-api.net/workspaces/{workspaceId}/threatintelligenceindicators:upload
    • インジケーター名の配列: indicators
      {
         "sourcesystem":"TIsource-example",
         "indicators":[]
      }
      

要求 URI

API のバージョン管理: api-version=2022-07-01
エンドポイント: https://sentinelus.azure-api.net/workspaces/{workspaceId}/threatintelligenceindicators:upload?api-version=2022-07-01
メソッド: POST

要求ヘッダー

Authorization: OAuth2 ベアラー トークンが含まれています
Content-Type: application/json

要求本文

本文の JSON オブジェクトには、次のフィールドが含まれています。

フィールド名 データ型 説明
SourceSystem (必須) string ソース システム名を特定します。 Microsoft Sentinel値は制限されています。
インジケーター (必須) 配列 STIX 2.0 または 2.1 形式のインジケーターの配列

STIX 2.1 インジケーター形式仕様を使用してインジケーターの配列を作成します。これは、重要なセクションへのリンクを使用して便宜上ここで圧縮されています。 また、一部のプロパティは STIX 2.1 で有効ですが、Microsoft Sentinelに対応するインジケーター プロパティはありません。

プロパティ名 説明
id (必須) string インジケーターを識別するために使用される ID。 idの作成方法の仕様については、セクション 2.9 を参照してください。 形式は次のようになります indicator--<UUID>
spec_version (省略可能) string STIX インジケーター バージョン。 この値は STIX 仕様で必要ですが、この API は STIX 2.0 と 2.1 のみをサポートするため、このフィールドが設定されていない場合、API は既定で に設定されます。 2.1
type (必須) string このプロパティの値は、indicatorする必要があります
created (必須) timestamp この共通プロパティの仕様については、セクション 3.2 を参照してください。
modified (必須) timestamp この共通プロパティの仕様については、セクション 3.2 を参照してください。
name (省略可能) string インジケーターを識別するために使用される名前。

プロデューサーは、製品とアナリストがこのインジケーターが実際に何を行うかを理解するのに役立つこのプロパティを提供する 必要があります
description (省略可能) string インジケーターに関する詳細とコンテキストを提供する説明。その目的と重要な特性を含む可能性があります。

プロデューサーは、製品とアナリストがこのインジケーターが実際に何を行うかを理解するのに役立つこのプロパティを提供する 必要があります
indicator_types (省略可能) 文字列のリスト このインジケーターの分類のセット。

このプロパティの値は、indicator-type-ov から取得する必要があります
pattern (必須) string このインジケーターの検出パターンは、STIX パターンまたは SNORT、YARA などの別の適切な言語として表される場合があります
pattern_type (必須) string このインジケーターで使用されるパターン言語。

このプロパティの値は、パターン型から取得する必要があります

このプロパティの値は、pattern プロパティに含まれるパターン データの種類と一致する 必要があります
pattern_version (省略可能) string pattern プロパティ内のデータに使用されるパターン言語のバージョン。パターン プロパティに含まれるパターン データの種類と一致する 必要があります

正式な仕様を持たないパターンの場合は、パターンが動作することがわかっているビルドまたはコード バージョンを使用 する必要があります

STIX パターン言語の場合、オブジェクトの仕様バージョンによって既定値が決まります。

他の言語の場合、既定値は、このオブジェクトの作成時のパターン言語の最新バージョンである 必要があります
valid_from (必須) timestamp このインジケーターが、関連または表す動作の有効なインジケーターと見なされる時間。
valid_until (省略可能) timestamp このインジケーターが、関連または表す動作の有効なインジケーターと見なされなくなった時刻。

valid_until プロパティを省略した場合、インジケーターが有効な最新時刻に制約はありません。

このタイムスタンプは、valid_fromタイムスタンプより大きく する必要があります
kill_chain_phases (省略可能) 文字列の一覧 このインジケーターが対応するキル チェーン フェーズ。

このプロパティの値は、Kill Chain Phase から取得する必要があります
created_by_ref (省略可能) string created_by_ref プロパティは、このオブジェクトを作成したエンティティの ID プロパティを指定します。

この属性を省略すると、この情報のソースは未定義になります。 匿名を維持するオブジェクト作成者の場合は、この値を未定義のままにします。
revoked (省略可能) ブール値 取り消されたオブジェクトは、オブジェクト作成者によって有効と見なされなくなりました。 オブジェクトの取り消しは永続的です。この idmust を持つオブジェクトの将来のバージョンは作成されません。

このプロパティの既定値は false です。
labels (省略可能) 文字列のリスト labels プロパティは、このオブジェクトを記述するために使用される用語のセットを指定します。 用語は、ユーザー定義または信頼グループ定義です。 これらのラベルは、Microsoft Sentinelでタグとして表示されます。
confidence (省略可能) integer confidence プロパティは、作成者がデータの正確性に対して持っている信頼度を識別します。 信頼値は、0 から 100 の範囲の数値である 必要があります

付録 A には、いずれかのスケールで信頼値を提示するときに使用 する必要 がある他の信頼度スケールへの規範的なマッピングの表が含まれています。

信頼度プロパティが存在しない場合、コンテンツの信頼度は指定されていません。
lang (省略可能) string lang プロパティは、このオブジェクト内のテキスト コンテンツの言語を識別します。 存在する場合は、RFC5646に準拠した言語コードである必要があります。 プロパティが存在しない場合、コンテンツの言語は en (英語) になります。

オブジェクト型に翻訳可能なテキスト プロパティ (名前、説明など) が含まれている場合は、このプロパティが存在する 必要があります

このオブジェクトの個々のフィールドの言語は、詳細なマーキングで lang プロパティをオーバーライドする可能性があります (セクション 7.2.3 を参照)。
object_marking_refs (TLP を含む省略可能) 文字列のリスト object_marking_refs プロパティは、このオブジェクトに適用されるマーキング定義オブジェクトの ID プロパティの一覧を指定します。 たとえば、トラフィック ライト プロトコル (TLP) マーキング定義 ID を使用して、インジケーター ソースの感度を指定します。 TLP コンテンツに使用するマーキング定義 ID の詳細については、セクション 7.2.1.4 を参照してください。

場合によっては、一般的ではありませんが、定義自体のマーキングは、共有または処理のガイダンスでマークされる場合があります。 この場合、このプロパティには、同じマーキング定義オブジェクトへの参照を含 めることはできません (つまり、循環参照を含めることはできません)。

データ マーキングの詳細な定義については、セクション 7.2.2 を参照してください。
external_references (省略可能) オブジェクトの一覧 external_references プロパティは、STIX 以外の情報を参照する外部参照の一覧を指定します。 このプロパティは、1 つ以上の URL、説明、または ID を他のシステムのレコードに提供するために使用されます。
granular_markings (省略可能) きめ細かいマーキングの一覧 granular_markings プロパティは、インジケーターの一部を異なる方法で定義するのに役立ちます。 たとえば、インジケーター言語は英語 en ですが、説明はドイツ語、 deです。

場合によっては、一般的ではありませんが、定義自体のマーキングは、共有または処理のガイダンスでマークされる場合があります。 この場合、このプロパティには、同じマーキング定義オブジェクトへの参照を含 めることはできません (つまり、循環参照を含めることはできません)。

データ マーキングの詳細な定義については、セクション 7.2.3 を参照してください。

応答メッセージを処理する

応答ヘッダーには HTTP 状態コードが含まれています。 API 呼び出し結果を解釈する方法の詳細については、この表を参照してください。

状態コード 説明
200 成功 1 つ以上のインジケーターが正常に検証および発行されると、API は 200 を返します。
400 形式が正しくありません。 要求内の何かが正しく書式設定されていません。
401 権限がありません。
404 ファイルが見つかりません。 通常、このエラーは、ワークスペース ID が見つからない場合に発生します。
429 1 分で要求の数を超えました。
500 サーバー エラー。 通常、API または Microsoft Sentinel サービスでエラーが発生します。

応答本文は、JSON 形式のエラー メッセージの配列です。

フィールド名 データ型 説明
エラー エラー オブジェクトの配列 検証エラーの一覧

Error オブジェクト

フィールド名 データ型 説明
recordIndex int 要求内のインジケーターのインデックス
errorMessages 文字列の配列 エラー メッセージ

API の調整制限

すべての制限は、ユーザーごとに適用されます。

  • 要求ごとに 100 個のインジケーター。
  • 1 分あたり 100 件の要求。

制限を超える要求がある場合は、応答ヘッダーに 429 http 状態コードが返され、次の応答本文が返されます。

{
    "statusCode": 429,
    "message": "Rate limit is exceeded. Try again in <number of seconds> seconds."
}

調整エラーが発生する前の最大スループットは、1 分あたり約 10,000 のインジケーターです。

サンプル要求本文

{
    "sourcesystem": "test", 
    "indicators":[
        {
            "type": "indicator",
            "spec_version": "2.1",
            "id": "indicator--10000003-71a2-445c-ab86-927291df48f8", 
            "name": "Test Indicator 1",
            "created": "2010-02-26T18:29:07.778Z", 
            "modified": "2011-02-26T18:29:07.778Z",
            "pattern": "[ipv4-addr:value = '172.29.6.7']", 
            "pattern_type": "stix",
            "valid_from": "2015-02-26T18:29:07.778Z"
        },
        {
            "type": "indicator",
            "spec_version": "2.1",
            "id": "indicator--67e62408-e3de-4783-9480-f595d4fdae52", 
            "created": "2023-01-01T18:29:07.778Z",
            "modified": "2025-02-26T18:29:07.778Z",
            "created_by_ref": "identity--19f33886-d196-468e-a14d-f37ff0658ba7", 
            "revoked": false,
            "labels": [
                "label 1",
                "label 2"
            ],
            "confidence": 55, 
            "lang": "en", 
            "external_references": [
                {
                    "source_name": "External Test Source", 
                    "description": "Test Report",
                    "external_id": "e8085f3f-f2b8-4156-a86d-0918c98c498f", 
                    "url": "https://fabrikam.com//testreport.json",
                    "hashes": {
                        "SHA-256": "6db12788c37247f2316052e142f42f4b259d6561751e5f401a1ae2a6df9c674b"
                    }
                }
            ],
            "object_marking_refs": [
                "marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9"
            ],
            "granular_markings": [
                {
                    "marking_ref": "marking-definition--beb3ec79-03aa-4594-ad24-09982d399b80", 
                    "selectors": [ "description", "labels" ],
                    "lang": "en"
                }
            ],
            "name": "Test Indicator 2",
            "description": "This is a test indicator to demo valid fields", 
            "indicator_types": [
                "threatstream-severity-low", "threatstream-confidence-80"
            ],
            "pattern": "[ipv4-addr:value = '192.168.1.1']", 
            "pattern_type": "stix",
            "pattern_version": "2.1",
            "valid_from": "2023-01-01T18:29:07.778Z", 
            "valid_until": "2025-02-26T18:29:07.778Z",
            "kill_chain_phases": [
                {
                    "kill_chain_name": "lockheed-martin-cyber-kill-chain", 
                    "phase_name": "reconnaissance"
                }
            ]
        }
    ]
}

検証エラーを含む応答本文のサンプル

すべてのインジケーターが正常に検証されると、HTTP 200 状態が空の応答本文で返されます。

1 つ以上のインジケーターに対して検証が失敗した場合は、応答本文に詳細情報が返されます。 たとえば、4 つのインジケーターを持つ配列を送信し、最初の 3 つが適切ですが、4 番目のインジケーターに id (必須フィールド) がない場合、HTTP 状態コード 200 応答が次の本文と共に生成されます。

{
    "errors": [
        {
            "recordIndex":3, 
            "errorMessages": [
                "Error for Property=id: Required property is missing. Actual value: NULL."
            ]
        }
    ]
}

インジケーターは配列として送信されるため、 recordIndex0から始まります。

次の手順

この API はレガシです。 STIX オブジェクト API を使用して脅威インテリジェンスをアップロードするように移行してください。 詳細については、「 STIX オブジェクト API」を参照してください。