通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

引用旧上传指示器 API

Microsoft Sentinel上传指标 API 允许威胁情报平台或自定义应用程序将 STIX 格式的入侵指标导入Microsoft Sentinel工作区。 本文档用作对旧 API 的引用。

重要

此 API 以预览版提供,但不再推荐使用。 使用预览版中的新 STIX 对象 API 上传威胁情报。 有关详细信息,请参阅 STIX 对象 APIAzure预览版补充条款包括适用于处于 beta 版、预览版或其他尚未正式发布的Azure功能的其他法律条款。

上传指示器 API 调用包含五个组件:

  1. 请求 URI
  2. HTTP 请求消息标头
  3. HTTP 请求消息正文
  4. (可选)处理 HTTP 响应消息标头
  5. (可选)处理 HTTP 响应消息正文

使用 Microsoft Entra ID 注册客户端应用程序

若要向Microsoft Sentinel进行身份验证,对上传指示器 API 的请求需要有效的Microsoft Entra访问令牌。 有关应用程序注册的详细信息,请参阅使用 Microsoft 标识平台注册应用程序或查看上传指示器 API 数据连接器设置的基本步骤。

权限

此 API 要求向调用Microsoft Entra应用程序授予工作区级别的Microsoft Sentinel 参与者角色。

创建请求

本部分介绍前面讨论的五个组件中的前三个。 首先需要从 Microsoft Entra ID 获取访问令牌,该令牌用于组合请求消息标头。

获取访问令牌

使用 OAuth 2.0 身份验证获取Microsoft Entra访问令牌。 V1.0 和 V2.0 是 API 接受的有效令牌。

应用程序接收的令牌版本 (v1.0 或 v2.0) 由 accessTokenAcceptedVersion 应用程序正在调用的 API 的应用清单 中的 属性确定。 如果 accessTokenAcceptedVersion 设置为 1,则应用程序将收到 v1.0 令牌。

使用 Microsoft 身份验证库 MSAL 获取 v1.0 或 v2.0 访问令牌。 或者,使用以下格式将请求发送到 REST API:

  • 发布 https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token
  • 用于使用 Microsoft Entra 应用的标头:
  • grant_type:“client_credentials”
  • client_id: {Microsoft Entra App 的客户端 ID}
  • client_secret: {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 有两个版本。 请求正文中需要不同的数组名称,具体取决于终结点。 这还由两个版本的逻辑应用连接器操作表示。

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 需要 () 时间 戳 有关此公共属性的规范,请参阅 第 3.2 节。
modified 需要 () 时间 戳 有关此公共属性的规范,请参阅 第 3.2 节。
name(可选) string 用于标识指示器的名称。

制作者 提供此属性来帮助产品和分析师了解此指标的实际用途。
description(可选) string 提供有关指标的更多详细信息和上下文(可能包括其用途和关键特征)的说明。

制作者 提供此属性来帮助产品和分析师了解此指标的实际用途。
indicator_types(可选) 字符串列表 此指标的一组分类。

此属性的值 来自 indicator-type-ov
pattern 需要 () string 此指示器的检测模式 可以 表示为 STIX 模式 或其他适当的语言,例如 SNORT、YARA 等。
pattern_type 需要 () string 此指示器中使用的模式语言。

此属性的值 来自 模式类型

此属性的值 必须与 模式属性中包含的模式数据类型匹配。
pattern_version(可选) string 用于模式属性中数据的模式语言版本,该版本 必须与 模式属性中包含的模式数据类型匹配。

对于没有正式规范的模式, 使用该模式已知的内部版本或代码版本。

对于 STIX 模式语言,对象的规范版本确定默认值。

对于其他语言,默认值 为创建此对象时模式语言的最新版本。
valid_from 需要 () 时间 戳 此指示器被视为它与或表示相关的行为的有效指示器的时间。
valid_until(可选) 时间 戳 此指标不再被视为它与 或 表示相关的行为的有效指示器的时间。

如果省略 valid_until 属性,则指标的最近有效时间没有约束。

此时间戳 必须 大于valid_from时间戳。
kill_chain_phases(可选) 字符串列表 终止链阶段 (与此指标对应的) 。

此属性的值 来自 终止链阶段
created_by_ref(可选) string created_by_ref 属性指定创建此对象的实体的 ID 属性。

如果省略此属性,则未定义此信息的源。 对于希望保持匿名的对象创建者,请保持此值未定义。
revoked(可选) boolean 撤销的对象不再被对象创建者视为有效。 撤消对象是永久性的;不得创建具有此id对象的未来版本。

此属性的默认值为 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 信息的外部引用列表。 此属性用于向其他系统中的记录提供一个或多个 URL、说明或 ID。
granular_markings(可选) 粒度标记列表 属性 granular_markings 有助于以不同的方式定义指示器的各个部分。 例如,指示器语言为英语, en 但说明为德语 de

在某些情况下,虽然不常见,但标记定义本身可能会使用共享或处理指南进行标记。 在这种情况下,此属性 不得 包含对同一标记定义对象的任何引用 (即它不能包含任何循环引用) 。

有关数据标记的进一步定义,请参阅第 7.2.3 节。

处理响应消息

响应标头包含 HTTP 状态代码。 有关如何解释 API 调用结果的详细信息,请参阅此表。

状态代码 说明
200 成功。 成功验证并发布一个或多个指示器时,API 返回 200。
400 格式不正确。 请求中的某些内容格式不正确。
401 未经授权。
404 找不到文件。 通常,当找不到工作区 ID 时,会发生此错误。
429 超过一分钟内的请求数。
500 服务器错误。 通常是 API 或Microsoft Sentinel服务中的错误。

响应正文是 JSON 格式的错误消息数组:

字段名 数据类型 说明
错误 错误对象数组 验证错误列表

Error 对象

字段名 数据类型 说明
recordIndex int 请求中指示器的索引
errorMessages 字符串数组 错误消息

API 的限制

所有限制均按用户应用:

  • 每个请求 100 个指示器。
  • 每分钟 100 个请求。

如果请求数超过限制, 429 响应标头中的 http 状态代码将使用以下响应正文返回:

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

每分钟大约 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 状态,响应正文为空。

如果一个或多个指标的验证失败,则会返回响应正文以及详细信息。 例如,如果发送包含四个指示器的数组,并且前三个指标良好,但第四个 id 没有 (必填字段) ,则会生成 HTTP 状态代码 200 响应以及以下正文:

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

指示器以数组的形式发送,因此 从 recordIndex 开始 0

后续步骤

此 API 是旧 API。 请迁移以使用 STIX 对象 API 上传威胁情报。 有关详细信息,请参阅 STIX 对象 API