更新时间:2024-11-19 GMT+08:00
分享

查询威胁情报列表

功能介绍

查询威胁情报列表

调用方法

请参见如何调用API

URI

POST /v1/{project_id}/workspaces/{workspace_id}/soc/indicators/search

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID

最小长度:32

最大长度:64

workspace_id

String

工作空间ID

最小长度:1

最大长度:1024

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

租户的Token

最小长度:32

最大长度:65535

content-type

String

application/json;charset=UTF-8

缺省值:application/json;charset=UTF-8

最小长度:1

最大长度:64

表3 请求Body参数

参数

是否必选

参数类型

描述

ids

Array of strings

威胁情报ID列表

最小长度:32

最大长度:64

数组长度:0 - 999

dataclass_id

String

数据类ID

最小长度:32

最大长度:64

condition

condition object

搜索条件表达式

offset

Integer

request offset, from 0

最小值:0

最大值:9994

缺省值:0

limit

Integer

request limit size

最小值:1

最大值:9999

sort_by

String

sort by property, create_time.

最小长度:1

最大长度:64

from_date

String

查询起始时间,例如:2024-01-20T00:00:00.000Z+0800

最小长度:0

最大长度:64

to_date

String

查询截止时间,例如:2024-01-26T23:59:59.999Z+0800

最小长度:0

最大长度:64

表4 condition

参数

是否必选

参数类型

描述

conditions

Array of conditions objects

表达式列表

数组长度:0 - 999

logics

Array of strings

表达式名称列表

最小长度:0

最大长度:100

数组长度:0 - 999

表5 conditions

参数

是否必选

参数类型

描述

name

String

表达式名称

最小长度:0

最大长度:64

data

Array of strings

表达式内容列表

最小长度:0

最大长度:100

数组长度:0 - 999

响应参数

状态码: 200

表6 响应Header参数

参数

参数类型

描述

X-request-id

String

请求ID,格式为:request_uuid-timestamp-hostname.

表7 响应Body参数

参数

参数类型

描述

code

String

错误码

最小长度:32

最大长度:64

message

String

错误信息

最小长度:1

最大长度:32

total

Integer

总数

最小值:0

最大值:99999

data

Array of IndicatorDetail objects

指标列表数据

数组长度:0 - 100

表8 IndicatorDetail

参数

参数类型

描述

id

String

威胁情报ID

最小长度:32

最大长度:64

name

String

威胁情报名称

最小长度:0

最大长度:64

data_object

IndicatorDataObjectDetail object

情报详情

workspace_id

String

工作空间ID

最小长度:32

最大长度:64

project_id

String

项目ID

最小长度:32

最大长度:64

dataclass_ref

DataClassRefPojo object

数据类对象信息

create_time

String

创建时间

最小长度:0

最大长度:64

update_time

String

更新时间

最小长度:0

最大长度:64

表9 IndicatorDataObjectDetail

参数

参数类型

描述

indicator_type

indicator_type object

情报类型对象

value

String

值,如:ip url domain等

最小长度:0

最大长度:256

update_time

String

更新时间

最小长度:0

最大长度:64

create_time

String

创建时间

最小长度:0

最大长度:64

environment

environment object

环境信息

data_source

data_source object

数据源信息

first_report_time

String

首次发生时间

最小长度:0

最大长度:64

is_deleted

Boolean

是否删除

last_report_time

String

最近发生时间

最小长度:0

最大长度:64

granular_marking

Integer

粒度(保密等级),由高到低:1(首次发现)、2(自产数据)、3(需购买)、4(外网直接查询)

最小值:1

最大值:4

name

String

名称

最小长度:1

最大长度:64

id

String

威胁情报ID

最小长度:1

最大长度:64

project_id

String

项目ID

最小长度:1

最大长度:64

revoked

Boolean

是否作废

status

String

状态, Open--打开,Closed--关闭, Revoked--作废

最小长度:1

最大长度:64

verdict

String

威胁度, Black--黑,White--白,Gray--灰

最小长度:1

最大长度:64

workspace_id

String

工作空间ID

最小长度:1

最大长度:64

confidence

Integer

置信度,取值范围是80-100

最小值:80

最大值:100

表10 indicator_type

参数

参数类型

描述

indicator_type

String

情报类型

最小长度:1

最大长度:32

id

String

情报类型ID

最小长度:1

最大长度:64

表11 environment

参数

参数类型

描述

vendor_type

String

环境供应商(如HWC、AWS、Azure等)

最小长度:0

最大长度:1024

domain_id

String

租户ID

最小长度:32

最大长度:64

region_id

String

区域ID

最小长度:1

最大长度:64

project_id

String

项目ID

最小长度:32

最大长度:64

表12 data_source

参数

参数类型

描述

source_type

Integer

数据源类型,取值范围如下:

  • 1:华为云产品
  • 2:第三方产品
  • 3:租户私有产品

最小值:0

最大值:9999

domain_id

String

租户ID

最小长度:32

最大长度:64

project_id

String

项目ID

最小长度:32

最大长度:64

region_id

String

区域ID

最小长度:1

最大长度:64

表13 DataClassRefPojo

参数

参数类型

描述

id

String

数据类ID

最小长度:32

最大长度:64

name

String

数据类名称

最小长度:0

最大长度:64

状态码: 400

表14 响应Header参数

参数

参数类型

描述

X-request-id

String

请求ID,格式为:request_uuid-timestamp-hostname

表15 响应Body参数

参数

参数类型

描述

code

String

错误码

最小长度:0

最大长度:64

message

String

错误描述

最小长度:0

最大长度:1024

请求示例

查询id为id1、id2,名称为威胁情报名称,类型为DATA_SOURCE,数据类id为28f61af50fc9452aa0ed5ea25c3cc3d3的威胁情报列表,偏移量为0,查询上限10条,根据create_time排序

{
  "ids" : [ "id1", "id2" ],
  "dataclass_id" : "28f61af50fc9452aa0ed5ea25c3cc3d3",
  "condition" : {
    "conditions" : [ {
      "name" : "name",
      "data" : [ "name", "=", "威胁情报名称" ]
    } ],
    "logics" : [ "title" ]
  },
  "offset" : 0,
  "limit" : 10,
  "sort_by" : "create_time",
  "from_date" : "2024-01-20T00:00:00.000Z+0800",
  "to_date" : "2024-01-26T23:59:59.999Z+0800"
}

响应示例

状态码: 200

请求成功响应信息

{
  "code" : "00000000",
  "data" : [ {
    "create_time" : "2023-07-24T20:54:19Z+0800",
    "data_object" : {
      "indicator_type" : {
        "indicator_type" : "ipv6",
        "id" : "ac794b2dfab9fe8c0676587301a636d3"
      },
      "revoked" : false,
      "workspace_id" : "d5baeef8-3e75-4e91-9826-fb208ac58987",
      "update_time" : "2023-07-24T20:54:19.038Z+0800",
      "project_id" : "15645222e8744afa985c93dab6341da6",
      "first_report_time" : "2023-07-31T20:54:12.000Z+0800",
      "id" : "ff61d1f8-0de4-4077-9e9b-e312f6829c6d",
      "granular_marking" : 1,
      "value" : "{}",
      "create_time" : "2023-07-24T20:54:19.038Z+0800",
      "confidence" : 80,
      "last_report_time" : "2023-07-25T20:54:15.000Z+0800",
      "data_source" : {
        "domain_id" : "ac7438b990ef4a37b741004eb45e8bf4",
        "project_id" : "15645222e8744afa985c93dab6341da6",
        "region_id" : "cn-XXX-7",
        "source_type" : 1
      },
      "environment" : {
        "domain_id" : "ac7438b990ef4a37b741004eb45e8bf4",
        "project_id" : "15645222e8744afa985c93dab6341da6",
        "region_id" : "cn-xxx-7",
        "vendor_type" : "xxx"
      },
      "verdict" : "Black",
      "name" : "test",
      "status" : "Open"
    },
    "dataclass_ref" : {
      "id" : "97ccf890-7480-31f6-a961-cf8da1f2f040",
      "name" : "name"
    },
    "id" : "ff61d1f8-0de4-4077-9e9b-e312f6829c6d",
    "update_time" : "2023-07-24T20:54:19Z+0800"
  } ],
  "message" : "",
  "total" : 2
}

SDK代码示例

SDK代码示例如下。

查询id为id1、id2,名称为威胁情报名称,类型为DATA_SOURCE,数据类id为28f61af50fc9452aa0ed5ea25c3cc3d3的威胁情报列表,偏移量为0,查询上限10条,根据create_time排序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.secmaster.v2.region.SecMasterRegion;
import com.huaweicloud.sdk.secmaster.v2.*;
import com.huaweicloud.sdk.secmaster.v2.model.*;

import java.util.List;
import java.util.ArrayList;

public class ListIndicatorsSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");

        ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);

        SecMasterClient client = SecMasterClient.newBuilder()
                .withCredential(auth)
                .withRegion(SecMasterRegion.valueOf("<YOUR REGION>"))
                .build();
        ListIndicatorsRequest request = new ListIndicatorsRequest();
        IndicatorListSearchRequest body = new IndicatorListSearchRequest();
        List<String> listConditionLogics = new ArrayList<>();
        listConditionLogics.add("title");
        List<String> listConditionsData = new ArrayList<>();
        listConditionsData.add("name");
        listConditionsData.add("=");
        listConditionsData.add("威胁情报名称");
        List<IndicatorListSearchRequestConditionConditions> listConditionConditions = new ArrayList<>();
        listConditionConditions.add(
            new IndicatorListSearchRequestConditionConditions()
                .withName("name")
                .withData(listConditionsData)
        );
        IndicatorListSearchRequestCondition conditionbody = new IndicatorListSearchRequestCondition();
        conditionbody.withConditions(listConditionConditions)
            .withLogics(listConditionLogics);
        List<String> listbodyIds = new ArrayList<>();
        listbodyIds.add("id1");
        listbodyIds.add("id2");
        body.withToDate("2024-01-26T23:59:59.999Z+0800");
        body.withFromDate("2024-01-20T00:00:00.000Z+0800");
        body.withSortBy("create_time");
        body.withLimit(10);
        body.withOffset(0);
        body.withCondition(conditionbody);
        body.withDataclassId("28f61af50fc9452aa0ed5ea25c3cc3d3");
        body.withIds(listbodyIds);
        request.withBody(body);
        try {
            ListIndicatorsResponse response = client.listIndicators(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

查询id为id1、id2,名称为威胁情报名称,类型为DATA_SOURCE,数据类id为28f61af50fc9452aa0ed5ea25c3cc3d3的威胁情报列表,偏移量为0,查询上限10条,根据create_time排序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdksecmaster.v2.region.secmaster_region import SecMasterRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdksecmaster.v2 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]

    credentials = BasicCredentials(ak, sk)

    client = SecMasterClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(SecMasterRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = ListIndicatorsRequest()
        listLogicsCondition = [
            "title"
        ]
        listDataConditions = [
            "name",
            "=",
            "威胁情报名称"
        ]
        listConditionsCondition = [
            IndicatorListSearchRequestConditionConditions(
                name="name",
                data=listDataConditions
            )
        ]
        conditionbody = IndicatorListSearchRequestCondition(
            conditions=listConditionsCondition,
            logics=listLogicsCondition
        )
        listIdsbody = [
            "id1",
            "id2"
        ]
        request.body = IndicatorListSearchRequest(
            to_date="2024-01-26T23:59:59.999Z+0800",
            from_date="2024-01-20T00:00:00.000Z+0800",
            sort_by="create_time",
            limit=10,
            offset=0,
            condition=conditionbody,
            dataclass_id="28f61af50fc9452aa0ed5ea25c3cc3d3",
            ids=listIdsbody
        )
        response = client.list_indicators(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

查询id为id1、id2,名称为威胁情报名称,类型为DATA_SOURCE,数据类id为28f61af50fc9452aa0ed5ea25c3cc3d3的威胁情报列表,偏移量为0,查询上限10条,根据create_time排序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    secmaster "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v2"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v2/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v2/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        Build()

    client := secmaster.NewSecMasterClient(
        secmaster.SecMasterClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.ListIndicatorsRequest{}
	var listLogicsCondition = []string{
        "title",
    }
	var listDataConditions = []string{
        "name",
	    "=",
	    "威胁情报名称",
    }
	nameConditions:= "name"
	var listConditionsCondition = []model.IndicatorListSearchRequestConditionConditions{
        {
            Name: &nameConditions,
            Data: &listDataConditions,
        },
    }
	conditionbody := &model.IndicatorListSearchRequestCondition{
		Conditions: &listConditionsCondition,
		Logics: &listLogicsCondition,
	}
	var listIdsbody = []string{
        "id1",
	    "id2",
    }
	toDateIndicatorListSearchRequest:= "2024-01-26T23:59:59.999Z+0800"
	fromDateIndicatorListSearchRequest:= "2024-01-20T00:00:00.000Z+0800"
	sortByIndicatorListSearchRequest:= "create_time"
	dataclassIdIndicatorListSearchRequest:= "28f61af50fc9452aa0ed5ea25c3cc3d3"
	request.Body = &model.IndicatorListSearchRequest{
		ToDate: &toDateIndicatorListSearchRequest,
		FromDate: &fromDateIndicatorListSearchRequest,
		SortBy: &sortByIndicatorListSearchRequest,
		Limit: int32(10),
		Offset: int32(0),
		Condition: conditionbody,
		DataclassId: &dataclassIdIndicatorListSearchRequest,
		Ids: &listIdsbody,
	}
	response, err := client.ListIndicators(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

请求成功响应信息

400

请求失败响应信息

错误码

请参见错误码

相关文档