Fare riferimento all'API degli indicatori di caricamento (anteprima) per importare informazioni sulle minacce in Microsoft Sentinel

L'API degli indicatori di caricamento di Microsoft Sentinel consente alle piattaforme di intelligence sulle minacce o alle applicazioni personalizzate di importare indicatori di compromissione nel formato STIX in un'area di lavoro di Microsoft Sentinel. Sia che si usi l'API con il connettore dati api degli indicatori di caricamento di Microsoft Sentinel o come parte di una soluzione personalizzata, questo documento funge da riferimento.

Importante

Questa API è attualmente disponibile in ANTEPRIMA. Le condizioni aggiuntive per l'anteprima di Azure includono termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, anteprima o diversamente non ancora disponibili a livello generale.

Una chiamata API per gli indicatori di caricamento include cinque componenti:

  1. L'URI della richiesta
  2. Intestazione del messaggio di richiesta HTTP
  3. Corpo del messaggio della richiesta HTTP
  4. Facoltativamente, elaborare l'intestazione del messaggio di risposta HTTP
  5. Facoltativamente, elaborare il corpo del messaggio di risposta HTTP

Registrare l'applicazione client con Microsoft Entra ID

Per eseguire l'autenticazione a Microsoft Sentinel, la richiesta all'API degli indicatori di caricamento richiede un token di accesso Microsoft Entra valido. Per altre informazioni sulla registrazione dell'applicazione, vedere Registrare un'applicazione con Microsoft Identity Platform o vedere i passaggi di base come parte della configurazione del connettore dati dell'API degli indicatori di caricamento.

Autorizzazioni

Questa API richiede che all'applicazione Microsoft Entra chiamante venga concesso il ruolo di collaboratore di Microsoft Sentinel a livello di area di lavoro.

Creare la richiesta

Questa sezione illustra i primi tre dei cinque componenti illustrati in precedenza. È prima necessario acquisire il token di accesso da Microsoft Entra ID, che si usa per assemblare l'intestazione del messaggio di richiesta.

Acquisire un token di accesso

Acquisire un token di accesso Di Microsoft Entra con l'autenticazione OAuth 2.0. V1.0 e V2.0 sono token validi accettati dall'API.

La versione del token (v1.0 o v2.0) ricevuta dall'applicazione è determinata dalla accessTokenAcceptedVersion proprietà nel manifesto dell'app dell'API che l'applicazione sta chiamando. Se accessTokenAcceptedVersion è impostato su 1, l'applicazione riceverà un token v1.0.

Usare MICROSOFT Authentication Library MSAL per acquisire un token di accesso v1.0 o v2.0. In alternativa, inviare richieste all'API REST nel formato seguente:

  • POST https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token
  • Intestazioni per l'uso di Microsoft Entra App:
  • grant_type: "client_credentials"
  • client_id: {ID client di Microsoft Entra App}
  • client_secret: {secret of Microsoft Entra App}
  • portata: "https://management.azure.com/.default"

Se accessTokenAcceptedVersion nel manifesto dell'app è impostato su 1, l'applicazione riceverà un token di accesso v1.0 anche se chiama l'endpoint del token v2.

Il valore della risorsa/ambito è il gruppo di destinatari del token. Questa API accetta solo i gruppi di destinatari seguenti:

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

Assemblare il messaggio di richiesta

Esistono due versioni dell'API degli indicatori di caricamento. A seconda dell'endpoint, nel corpo della richiesta è necessario un nome di matrice diverso. Questa operazione è rappresentata anche da due versioni dell'azione del connettore dell'app per la logica.

Screenshot dei nomi delle azioni del connettore di app per la logica per l'API degli indicatori di caricamento di Microsoft Sentinel.

  • Nome azione connettore: Intelligence per le minacce - Caricare indicatori di compromissione (deprecato)

    • Endpoint: https://sentinelus.azure-api.net/{workspaceId}/threatintelligence:upload-indicators
    • Matrice del nome degli indicatori: value
      {
         "sourcesystem":"TIsource-example",
         "value":[]
      }
      
  • Nome azione connettore: Intelligence per le minacce - Indicatori di caricamento della compromissione (V2) (anteprima)

    • Endpoint: https://sentinelus.azure-api.net/workspaces/{workspaceId}/threatintelligenceindicators:upload
    • Matrice del nome degli indicatori: indicators
      {
         "sourcesystem":"TIsource-example",
         "indicators":[]
      }
      

URI delle richiesta

Controllo delle versioni dell'API: api-version=2022-07-01
Endpoint: https://sentinelus.azure-api.net/workspaces/{workspaceId}/threatintelligenceindicators:upload?api-version=2022-07-01
Metodo: POST

Intestazione della richiesta

Authorization: contiene il token di connessione OAuth2
Content-Type: application/json

Testo della richiesta

L'oggetto JSON per il corpo contiene i campi seguenti:

Nome campo Tipo di dati Descrizione
SourceSystem (obbligatorio) string Identificare il nome del sistema di origine. Il valore Microsoft Sentinel è limitato.
indicatori (obbligatorio) array Matrice di indicatori in formato STIX 2.0 o 2.1

Creare la matrice di indicatori usando la specifica di formato indicatore STIX 2.1, che è stata condensata qui per praticità con collegamenti a sezioni importanti. Si notino anche alcune proprietà, mentre valide per STIX 2.1, non dispongono di proprietà dell'indicatore corrispondenti in Microsoft Sentinel.

Nome proprietà Type Descrizione
id (obbligatorio) string ID utilizzato per identificare l'indicatore. Vedere la sezione 2.9 per informazioni su come creare un oggetto id. Il formato è simile al seguente indicator--<UUID>
spec_version (facoltativo) string Versione dell'indicatore STIX. Questo valore è obbligatorio nella specifica STIX, ma poiché questa API supporta solo STIX 2.0 e 2.1, quando questo campo non è impostato, per impostazione predefinita l'API verrà impostata su 2.1
type (obbligatorio) string Il valore di questa proprietà deve essere indicator.
created (obbligatorio) timestamp Vedere la sezione 3.2 per le specifiche di questa proprietà comune.
modified (obbligatorio) timestamp Vedere la sezione 3.2 per le specifiche di questa proprietà comune.
name (facoltativo) string Nome utilizzato per identificare l'indicatore.

I produttori devono fornire questa proprietà per aiutare i prodotti e gli analisti a capire cosa fa effettivamente questo indicatore.
description (facoltativo) string Descrizione che fornisce maggiori dettagli e contesto sull'indicatore, potenzialmente includendone lo scopo e le caratteristiche principali.

I produttori devono fornire questa proprietà per aiutare i prodotti e gli analisti a capire cosa fa effettivamente questo indicatore.
indicator_types (facoltativo) Elenco di stringhe Set di categorizzazioni per questo indicatore.

I valori per questa proprietà devono provenire dall'indicatore-type-ov
pattern (obbligatorio) string Il modello di rilevamento per questo indicatore può essere espresso come modello STIX o un altro linguaggio appropriato, ad esempio SNORT, YARA e così via.
pattern_type (obbligatorio) string Linguaggio del modello usato in questo indicatore.

Il valore di questa proprietà deve provenire dai tipi di pattern.

Il valore di questa proprietà deve corrispondere al tipo di dati del criterio inclusi nella proprietà pattern.
pattern_version (facoltativo) string Versione del linguaggio del modello usato per i dati nella proprietà pattern, che deve corrispondere al tipo di dati del criterio inclusi nella proprietà pattern.

Per i modelli che non hanno una specifica formale, deve essere usata la versione di compilazione o di codice con cui il modello è noto.

Per il linguaggio modello STIX, la versione specifica dell'oggetto determina il valore predefinito.

Per altre lingue, il valore predefinito deve essere la versione più recente del linguaggio di patterning al momento della creazione dell'oggetto.
valid_from (obbligatorio) timestamp Ora da cui questo indicatore viene considerato un indicatore valido dei comportamenti correlati a o rappresenta.
valid_until (facoltativo) timestamp Il momento in cui questo indicatore non deve più essere considerato un indicatore valido dei comportamenti a cui è correlato o rappresenta.

Se la proprietà valid_until viene omessa, non esiste alcun vincolo per l'ora più recente per cui l'indicatore è valido.

Questo timestamp deve essere maggiore del timestamp valid_from.
kill_chain_phases (facoltativo) Elenco di stringhe Fasi della catena di interruzione a cui corrisponde questo indicatore.

Il valore di questa proprietà deve provenire dalla fase Kill Chain.
created_by_ref (facoltativo) string La proprietà created_by_ref specifica la proprietà ID dell'entità che ha creato questo oggetto.

Se questo attributo viene omesso, l'origine di queste informazioni non è definita. Per gli autori di oggetti che desiderano rimanere anonimi, mantenere questo valore indefinito.
revoked (facoltativo) boolean Gli oggetti revocati non sono più considerati validi dall'autore dell'oggetto. La revoca di un oggetto è permanente; non è necessario creare versioni future dell'oggetto con questa id impostazione.

Il valore predefinito di questa proprietà è false.
labels (facoltativo) Elenco di stringhe La labels proprietà specifica un set di termini utilizzati per descrivere questo oggetto. I termini sono definiti dall'utente o dal gruppo di attendibilità. Queste etichette verranno visualizzate come tag in Microsoft Sentinel.
confidence (facoltativo) integer La confidence proprietà identifica l'attendibilità che l'autore ha nella correttezza dei dati. Il valore di attendibilità deve essere un numero compreso nell'intervallo compreso tra 0 e 100.

Appendice A contiene una tabella di mapping normativi ad altre scale di attendibilità che devono essere usate quando si presenta il valore di attendibilità in una di queste scale.

Se la proprietà di attendibilità non è presente, l'attendibilità del contenuto non è specificata.
lang (facoltativo) string La lang proprietà identifica la lingua del contenuto di testo in questo oggetto. Quando presente, deve essere un codice del linguaggio conforme alle RFC5646. Se la proprietà non è presente, la lingua del contenuto è en (inglese).

Questa proprietà deve essere presente se il tipo di oggetto contiene proprietà di testo traducibili, ad esempio nome, descrizione.

La lingua dei singoli campi in questo oggetto potrebbe eseguire l'override della lang proprietà nei contrassegni granulari (vedere la sezione 7.2.3).
object_marking_refs (facoltativo, incluso TLP) Elenco di stringhe La object_marking_refs proprietà specifica un elenco di proprietà ID di oggetti definizione di contrassegno che si applicano a questo oggetto. Ad esempio, usare l'ID definizione del contrassegno TLP (Traffic Light Protocol) per designare la riservatezza dell'origine dell'indicatore. Per informazioni dettagliate sugli ID di definizione di contrassegno da usare per il contenuto TLP, vedere la sezione 7.2.1.4

In alcuni casi, anche se non comune, i contrassegni delle definizioni stessi potrebbero essere contrassegnati con indicazioni sulla condivisione o sulla gestione. In questo caso, questa proprietà non deve contenere riferimenti allo stesso oggetto Definizione di contrassegno, ovvero non può contenere riferimenti circolari.

Per altre definizioni dei contrassegni dati, vedere la sezione 7.2.2 .
external_references (facoltativo) elenco di oggetti La external_references proprietà specifica un elenco di riferimenti esterni che fanno riferimento a informazioni non STIX. Questa proprietà viene usata per fornire uno o più URL, descrizioni o ID ai record in altri sistemi.
granular_markings (facoltativo) elenco di contrassegni granulari La granular_markings proprietà consente di definire parti dell'indicatore in modo diverso. Ad esempio, la lingua dell'indicatore è inglese, en ma la descrizione è tedesco, de.

In alcuni casi, anche se non comune, i contrassegni delle definizioni stessi potrebbero essere contrassegnati con indicazioni sulla condivisione o sulla gestione. In questo caso, questa proprietà non deve contenere riferimenti allo stesso oggetto Definizione di contrassegno( ad esempio, non può contenere riferimenti circolari).

Per altre definizioni dei contrassegni dati, vedere la sezione 7.2.3 .

Elaborare il messaggio di risposta

L'intestazione della risposta contiene un codice di stato HTTP. Fare riferimento a questa tabella per altre informazioni su come interpretare il risultato della chiamata API.

Codice di stato Descrizione
200 Esito positivo. L'API restituisce 200 quando uno o più indicatori vengono convalidati e pubblicati correttamente.
400 Formato non valido. Un elemento nella richiesta non è formattato correttamente.
401 Non autorizzato.
404 File non trovato. In genere questo errore si verifica quando l'ID dell'area di lavoro non viene trovato.
429 È stato superato il numero di richieste in un minuto.
500 Errore del server. In genere si verifica un errore nei servizi API o Microsoft Sentinel.

Il corpo della risposta è una matrice di messaggi di errore in formato JSON:

Nome campo Tipo di dati Descrizione
errori Matrice di oggetti errore Elenco degli errori di convalida

Oggetto Error

Nome campo Tipo di dati Descrizione
recordIndex int Indice degli indicatori nella richiesta
errorMessages Matrice di stringhe Messaggi di errore

Limiti di limitazione per l'API

Tutti i limiti vengono applicati per utente:

  • 100 indicatori per richiesta.
  • 100 richieste al minuto.

Se sono presenti più richieste rispetto al limite, viene restituito un 429 codice di stato HTTP nell'intestazione della risposta con il corpo della risposta seguente:

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

Circa 10.000 indicatori al minuto è la velocità effettiva massima prima che venga ricevuto un errore di limitazione.

Corpo della richiesta di esempio

{
    "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"
                }
            ]
        }
    ]
}

Corpo della risposta di esempio con errore di convalida

Se tutti gli indicatori vengono convalidati correttamente, viene restituito uno stato HTTP 200 con un corpo della risposta vuoto.

Se la convalida non riesce per uno o più indicatori, il corpo della risposta viene restituito con altre informazioni. Ad esempio, se si invia una matrice con quattro indicatori e i primi tre sono validi, ma il quarto non ha un id (campo obbligatorio), viene generata una risposta di codice di stato HTTP 200 insieme al corpo seguente:

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

Gli indicatori vengono inviati come matrice, quindi inizia recordIndex da 0.

Passaggi successivi

Per altre informazioni su come usare l'intelligence sulle minacce in Microsoft Sentinel, vedere gli articoli seguenti: