Referencia a la API de indicadores de carga heredados

La API de indicadores de carga de Microsoft Sentinel permite que las plataformas de inteligencia sobre amenazas o las aplicaciones personalizadas importen indicadores de peligro en el formato STIX en un área de trabajo de Microsoft Sentinel. Este documento sirve como referencia a la API heredada.

Importante

Esta API está en versión preliminar, pero ya no se recomienda. Use la nueva API de objetos STIX en versión preliminar para cargar la inteligencia sobre amenazas. Para obtener más información, consulte API de objetos STIX. Los términos complementarios de Azure Preview incluyen términos legales adicionales que se aplican a Azure características que están en versión beta, versión preliminar o que aún no se han publicado en disponibilidad general.

Una llamada API de indicadores de carga tiene cinco componentes:

  1. Uri de solicitud
  2. Encabezado del mensaje de solicitud HTTP
  3. Cuerpo del mensaje de solicitud HTTP
  4. Opcionalmente, procese el encabezado del mensaje de respuesta HTTP.
  5. Opcionalmente, procese el cuerpo del mensaje de respuesta HTTP.

Registre la aplicación cliente con Microsoft Entra ID

Para autenticarse en Microsoft Sentinel, la solicitud a la API de indicadores de carga requiere un token de acceso Microsoft Entra válido. Para obtener más información sobre el registro de aplicaciones, consulte Registro de una aplicación con el Plataforma de identidad de Microsoft o vea los pasos básicos como parte de la configuración del conector de datos de API de indicadores de carga.

Permissions

Esta API requiere que se conceda a la aplicación de Microsoft Entra llamada el rol de colaborador Microsoft Sentinel en el nivel de área de trabajo.

Creación de la solicitud

En esta sección se tratan los tres primeros componentes descritos anteriormente. Primero debe adquirir el token de acceso de Microsoft Entra ID, que se usa para ensamblar el encabezado del mensaje de solicitud.

Adquirir un token de acceso

Adquiera un token de acceso de Microsoft Entra con la autenticación de OAuth 2.0. V1.0 y V2.0 son tokens válidos aceptados por la API.

La versión del token (v1.0 o v2.0) que recibe la aplicación viene determinada por la accessTokenAcceptedVersion propiedad del manifiesto de la aplicación de la API a la que llama la aplicación. Si accessTokenAcceptedVersion se establece en 1, la aplicación recibirá un token v1.0.

Use MSAL de la biblioteca de autenticación de Microsoft para adquirir un token de acceso v1.0 o v2.0. O bien, envíe solicitudes a la API REST en el formato siguiente:

  • POST https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token
  • Encabezados para usar Microsoft Entra App:
  • grant_type: "client_credentials"
  • client_id: {Id. de cliente de Microsoft Entra App}
  • client_secret: {secreto de Microsoft Entra App}
  • ámbito: "https://management.azure.com/.default"

Si accessTokenAcceptedVersion en el manifiesto de la aplicación se establece en 1, la aplicación recibirá un token de acceso v1.0 aunque llame al punto de conexión del token v2.

El valor de recurso o ámbito es la audiencia del token. Esta API solo acepta las siguientes audiencias:

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

Ensamblar el mensaje de solicitud

Había dos versiones de la API heredada. En función del punto de conexión, se requiere un nombre de matriz diferente en el cuerpo de la solicitud. Esto también se representó mediante dos versiones de la acción del conector de aplicación lógica.

Captura de pantalla de los nombres de acción del conector de aplicación lógica para Microsoft Sentinel API de indicadores de carga.

  1. Nombre de la acción del conector: Inteligencia sobre amenazas: indicadores de carga de peligro (en desuso)
    • Punto de conexión: https://sentinelus.azure-api.net/{workspaceId}/threatintelligence:upload-indicators
    • Matriz de nombre de indicadores: value
    { "sourcesystem":"TIsource-example", "value":[] }
    
    
  • Nombre de la acción del conector: Inteligencia sobre amenazas: Indicadores de carga de peligro (V2) (versión preliminar)
    • Punto de conexión: https://sentinelus.azure-api.net/workspaces/{workspaceId}/threatintelligenceindicators:upload
    • Matriz de nombre de indicadores: indicators
      {
         "sourcesystem":"TIsource-example",
         "indicators":[]
      }
      

URI de solicitud

Control de versiones de API: api-version=2022-07-01
Punto de conexión: https://sentinelus.azure-api.net/workspaces/{workspaceId}/threatintelligenceindicators:upload?api-version=2022-07-01
Método: POST

Encabezado de solicitud

Authorization: contiene el token de portador de OAuth2.
Content-Type: application/json

Cuerpo de la solicitud

El objeto JSON del cuerpo contiene los campos siguientes:

Nombre del campo Tipo de datos Description
SourceSystem (obligatorio) string Identifique el nombre del sistema de origen. El valor Microsoft Sentinel está restringido.
indicadores (obligatorios) matriz Matriz de indicadores en formato STIX 2.0 o 2.1

Cree la matriz de indicadores con la especificación de formato de indicador STIX 2.1, que se ha condensado aquí para su comodidad con vínculos a secciones importantes. Tenga en cuenta también que algunas propiedades, aunque son válidas para STIX 2.1, no tienen propiedades de indicador correspondientes en Microsoft Sentinel.

Nombre de la propiedad Tipo Description
id (obligatorio) string Identificador que se usa para identificar el indicador. Consulte la sección 2.9 para obtener especificaciones sobre cómo crear un id. El formato tiene un aspecto similar al de indicator--<UUID>
spec_version (opcional) string Versión del indicador STIX. Este valor es necesario en la especificación STIX, pero dado que esta API solo admite STIX 2.0 y 2.1, cuando este campo no está establecido, la API tendrá como valor predeterminado 2.1
type (obligatorio) string El valor de esta propiedad debe ser indicator.
created (obligatorio) timestamp Consulte la sección 3.2 para conocer las especificaciones de esta propiedad común.
modified (obligatorio) timestamp Consulte la sección 3.2 para conocer las especificaciones de esta propiedad común.
name (opcional) string Nombre que se usa para identificar el indicador.

Los productores deben proporcionar esta propiedad para ayudar a los productos y analistas a comprender lo que realmente hace este indicador.
description (opcional) string Descripción que proporciona más detalles y contexto sobre el indicador, incluyendo potencialmente su propósito y sus características clave.

Los productores deben proporcionar esta propiedad para ayudar a los productos y analistas a comprender lo que realmente hace este indicador.
indicator_types (opcional) lista de cadenas Conjunto de categorizaciones para este indicador.

Los valores de esta propiedad deben proceder del indicator-type-ov.
pattern (obligatorio) string El patrón de detección de este indicador podría expresarse como un patrón STIX u otro lenguaje adecuado, como SNORT, YARA, etc.
pattern_type (obligatorio) string Lenguaje de patrón usado en este indicador.

El valor de esta propiedad debe proceder de tipos de patrón.

El valor de esta propiedad debe coincidir con el tipo de datos de patrón incluidos en la propiedad pattern.
pattern_version (opcional) string Versión del lenguaje de patrón que se usa para los datos de la propiedad pattern, que debe coincidir con el tipo de datos de patrón incluidos en la propiedad pattern.

Para los patrones que no tienen una especificación formal, se debe usar la versión de compilación o código con la que se sabe que funciona el patrón.

Para el lenguaje de patrón STIX, la versión de especificación del objeto determina el valor predeterminado.

Para otros lenguajes, el valor predeterminado debe ser la versión más reciente del lenguaje de creación de patrones en el momento de la creación de este objeto.
valid_from (obligatorio) timestamp Hora a partir de la cual este indicador se considera un indicador válido de los comportamientos que está relacionado con o representa.
valid_until (opcional) timestamp El momento en que este indicador ya no debe considerarse un indicador válido de los comportamientos que está relacionado con o representa.

Si se omite la propiedad valid_until, no hay ninguna restricción en la hora más reciente para la que el indicador es válido.

Esta marca de tiempo debe ser mayor que la marca de tiempo de valid_from.
kill_chain_phases (opcional) lista de cadenas Fases de la cadena de eliminación a las que corresponde este indicador.

El valor de esta propiedad debe proceder de la fase de la cadena de eliminación.
created_by_ref (opcional) string La propiedad created_by_ref especifica la propiedad ID de la entidad que creó este objeto.

Si se omite este atributo, el origen de esta información no está definido. Para los creadores de objetos que desean permanecer anónimos, mantenga este valor sin definir.
revoked (opcional) booleano El creador de objetos ya no considera válidos los objetos revocados. Revocar un objeto es permanente; no se deben crear versiones futuras del objeto con estoid.

El valor predeterminado de esta propiedad es false.
labels (opcional) lista de cadenas La labels propiedad especifica un conjunto de términos utilizados para describir este objeto. Los términos se definen por el usuario o por grupo de confianza. Estas etiquetas se mostrarán como Etiquetas en Microsoft Sentinel.
confidence (opcional) integer La confidence propiedad identifica la confianza que el creador tiene en la exactitud de sus datos. El valor de confianza debe ser un número en el intervalo de 0 a 100.

El apéndice A contiene una tabla de asignaciones normativas a otras escalas de confianza que se deben usar al presentar el valor de confianza en una de esas escalas.

Si la propiedad de confianza no está presente, la confianza del contenido no se especifica.
lang (opcional) string La lang propiedad identifica el idioma del contenido de texto de este objeto. Cuando está presente, debe ser un código de lenguaje conforme a RFC5646. Si la propiedad no está presente, el idioma del contenido es en (inglés).

Esta propiedad debe estar presente si el tipo de objeto contiene propiedades de texto traducibles (por ejemplo, nombre, descripción).

El idioma de los campos individuales de este objeto podría invalidar la lang propiedad en marcas granulares (consulte la sección 7.2.3).
object_marking_refs (opcional, incluido TLP) lista de cadenas La object_marking_refs propiedad especifica una lista de propiedades id. de objetos de definición de marcado que se aplican a este objeto. Por ejemplo, use el identificador de definición de marcado del Protocolo de semáforo (TLP) para designar la confidencialidad del origen del indicador. Para más información sobre los identificadores de definición de marcado que se usarán para el contenido de TLP, consulte la sección 7.2.1.4.

En algunos casos, aunque no son comunes, las propias definiciones de marcado se pueden marcar con instrucciones de uso compartido o de control. En este caso, esta propiedad no debe contener ninguna referencia al mismo objeto Definición de marcado (es decir, no puede contener ninguna referencia circular).

Consulte la sección 7.2.2 para obtener más definición de las marcas de datos.
external_references (opcional) lista de objetos La external_references propiedad especifica una lista de referencias externas que hace referencia a información que no es STIX. Esta propiedad se usa para proporcionar una o varias direcciones URL, descripciones o identificadores a los registros de otros sistemas.
granular_markings (opcional) lista de marcado granular La granular_markings propiedad ayuda a definir partes del indicador de forma diferente. Por ejemplo, el idioma del indicador es inglés, en pero la descripción es alemán, de.

En algunos casos, aunque no son comunes, las propias definiciones de marcado se pueden marcar con instrucciones de uso compartido o de control. En este caso, esta propiedad no debe contener ninguna referencia al mismo objeto Definición de marcado (es decir, no puede contener ninguna referencia circular).

Consulte la sección 7.2.3 para obtener más definición de las marcas de datos.

Procesar el mensaje de respuesta

El encabezado de respuesta contiene un código de estado HTTP. Haga referencia a esta tabla para obtener más información sobre cómo interpretar el resultado de la llamada API.

Código de estado Description
200 Correcto. La API devuelve 200 cuando uno o varios indicadores se validan y publican correctamente.
400 Formato incorrecto. Algo en la solicitud no tiene el formato correcto.
401 No autorizado.
404 No se encontró el archivo. Normalmente, este error se produce cuando no se encuentra el identificador del área de trabajo.
429 Se ha superado el número de solicitudes en un minuto.
500 Error del servidor. Normalmente, se produce un error en la API o Microsoft Sentinel servicios.

El cuerpo de la respuesta es una matriz de mensajes de error en formato JSON:

Nombre del campo Tipo de datos Description
errores Matriz de objetos de error Lista de errores de validación

Error (objeto)

Nombre del campo Tipo de datos Description
recordIndex Entero Índice de los indicadores de la solicitud
errorMessages Matriz de cadenas Mensajes de error

Límites de limitación para la API

Todos los límites se aplican por usuario:

  • 100 indicadores por solicitud.
  • 100 solicitudes por minuto.

Si hay más solicitudes que el límite, se devuelve un 429 código de estado HTTP en el encabezado de respuesta con el siguiente cuerpo de la respuesta:

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

Aproximadamente 10 000 indicadores por minuto es el rendimiento máximo antes de recibir un error de limitación.

Cuerpo de la solicitud de ejemplo

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

Cuerpo de la respuesta de ejemplo con error de validación

Si todos los indicadores se validan correctamente, se devuelve un estado HTTP 200 con un cuerpo de respuesta vacío.

Si se produce un error en la validación de uno o varios indicadores, el cuerpo de la respuesta se devuelve con más información. Por ejemplo, si envía una matriz con cuatro indicadores y los tres primeros son buenos, pero el cuarto no tiene ( id un campo obligatorio), se genera una respuesta de código de estado HTTP 200 junto con el siguiente cuerpo:

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

Los indicadores se envían como una matriz, por lo que comienza recordIndex en 0.

Paso siguiente

Esta API es heredada. Migre para usar la API de objetos STIX para cargar la inteligencia sobre amenazas. Para obtener más información, consulte API de objetos STIX.