QRadar Pulse 小部件
创建小组件(以前称为仪表板项)以包含在一个或多个仪表板中。您只能看到在工作区中创建的小组件和仪表板。但是,您可以通过导出它们或通过在共享监视器(如 SOC 墙)上打开仪表板或小部件来与他人共享它们。
从攻击数据源创建小组件
使用违规 API 端点作为小组件的数据源。
管理员无法为其他用户创建小组件或仪表板,但可以与其他用户共享自己的仪表板。
若要查询 Offenses 数据源(/siem/offenses 终结点),必须具有 Offenses 权限。返回的数据会根据您的安全配置文件进行限制。
单击 配置仪表板。
“配置仪表板”屏幕显示可用小组件库,其中包含有关每个小组件的详细信息。
单击 创建新小组件。
在 “新建仪表板项 ”页面上,输入小组件的名称和描述。
在“查询”部分中从数据源中选择“冒犯”,然后从“字段”列表中选择要在结果中查看的 API 字段。使用“筛选”(Filter) 和“排序”(Sort as) 选项对结果进行微调。
下图显示了已完成的 API 参数示例:
注意:在此示例中,必须将assigned_to筛选器设置为当前用户才能检索结果。
提示:您可以在违规查询中按一个或多个日志源进行筛选。例如,在 “筛选器 ”框中,输入
log_sources CONTAINS (type_name="IBM Trusteer" OR type_name="CREEvents")以仅查看 Trusteer 或 CREvents 日志源。根据轮询数据源的频率选择刷新时间。
选择大于所选查询时间的刷新率。默认刷新率为每分钟一次。刷新时间越短,对 QRadar 的性能影响就越大。
单击 “运行查询”。
首次创建小组件时,如果未返回任何数据结果,则无法配置图表。尝试使字段中的条件不那么严格,然后再次运行查询。
在 “视图 ”部分中创建视图。
由于可以从同一查询创建多个视图,因此请为视图指定唯一名称。默认情况下,在标题栏上显示图表的标题和状态;要隐藏它们,请单击 “更多选项 ”图标,然后将设置切换为 关闭。
选择图表类型并填写图表的相应字段。有关帮助您决定使用哪种图表类型的用例,请参阅 小组件图表类型。
图表类型
酒吧
大数字
馅饼
散射
表格式的
预览图表的外观,然后单击 “保存”。
您可以编辑小组件并保存它,而无需重新运行查询。例如,如果查询未返回结果,例如,当时间段不够长而无法选取新事件时,或者运行查询时,量级或严重性值不适用,则可以保存小组件。如果编辑查询,则必须先再次运行查询,然后才能保存小组件。
删除小组件会将其从它所属的所有仪表板中删除。如果已删除的仪表板包含参数,则不会从 QRadar Pulse 中删除这些参数。
从 AQL 数据源创建小组件
您可以使用 Ariel 查询语言 (AQL) 语句创建小部件。AQL 是一种结构化查询语言,可用于提取、过滤和作从 QRadar 中的 Ariel 数据库中提取的事件和流数据。
阅读《 瞻博网络安全分析 Ariel 查询语言指南 》中的以下主题,了解您在 QRadar Pulse 中使用的基于 AQL 数据源创建仪表板项的 Ariel 查询语言:
在概述部分中,有几个主题解释了您使用的语句和子句。当您在查询字段中输入语句和子句时,它们会在 QRadar 和 QRadar Pulse 中显示为关键字。
使用 AQL 从 Ariel 数据库中的事件、流和 simarc 表中检索特定字段。
管理员无法为其他用户创建小组件或仪表板,但可以与其他用户共享自己的仪表板。
单击 配置仪表板。
“配置仪表板”屏幕显示可用小组件库,其中包含有关每个小组件的详细信息。
在 “新建仪表板项 ”页面上,输入小组件的名称和描述。
从“查询”部分的数据源列表中选择“AQL”,然后输入 AQL 语句。有关详细信息,请参阅为仪表板图表创建 AQL 查询的提示。
在语句中插入现有参数。单击“ 插入参数 ”图标,然后单击每个相关参数的 “插入 ”。
要更改参数的默认值,请单击 “查看参数 ”图标,设置默认值后单击 “保存 ”。
更改参数的默认值时,将在工作区中使用该参数的任何位置更改该值,展开或固定的仪表板和小组件除外。如果未将该值设置为默认值,则更新后的更改仅适用于当前会话。但是,如果将该值设置为默认值,则当前会话值也会使用该值。
若要向工作区添加参数,请单击“ 添加”,根据需要为参数指定名称和默认值,然后单击 “保存”。
注意:首次将参数添加到仪表板上的小组件后,“ 参数 ”卡将显示在仪表板上。如果从小组件中删除参数,并且该仪表板中没有其他小组件使用该参数,则 “参数 ”卡将消失。
根据轮询数据源的频率选择刷新时间。选择大于所选查询时间的刷新率。默认刷新率为每分钟一次。刷新时间越短,对 QRadar 的性能影响就越大。刷新率的计时器在查询完成后开始。
例如,如果刷新率为每分钟,而查询需要 3 分钟才能完成,则刷新率仅在 3 分钟运行结束后才开始。
单击 “运行查询”。
首次创建小组件时,如果未返回任何数据结果,则无法配置图表。尝试使字段中的条件不那么严格,然后再次运行查询。
如果 AQL 查询包含不带任何值的参数,请在 “参数 ”页上输入这些参数。您必须为每个参数输入一个值,以便查询成功运行。如果查询成功,则结果将显示在语句旁边。
在 “视图 ”部分中创建视图。
由于您可以从同一查询创建多个视图和图表,因此请为视图指定唯一名称。默认情况下,在标题栏上显示图表的标题和状态;要隐藏它们,请单击 “更多选项 ”图标,然后将设置切换为 “关闭”。
选择图表类型并配置相关属性。有关帮助您决定使用哪种图表类型的用例,请参阅 小组件图表类型。
图表类型
酒吧
大数字
地理学的
馅饼
散射
表格式的
时间序列
预览图表的外观,然后单击 “保存”。
提示:图表的标签来自所使用的查询。如果它们在预览中无法理解,请编辑“ 视图 ”部分中的标签。
您可以编辑小组件并保存它,而无需重新运行查询。例如,如果查询未返回结果,例如,当时间段不够长而无法选取新事件时,或者运行查询时,量级或严重性值不适用,则可以保存小组件。如果编辑查询,则必须先再次运行查询,然后才能保存小组件。
删除小组件会将其从它所属的所有仪表板中删除。如果已删除的仪表板包含参数,则不会从 QRadar Pulse 中删除这些参数。
为仪表板图表创建 AQL 查询的提示
帮助您更轻松地创建 AQL 查询和仪表板图表的提示涵盖别名、时间和日期格式以及转换查找功能。
任何不包含时间条件(如 开始、 停止或 上次 )的 AQL 语句仅运行 5 分钟。
不要在 WHERE 子句的 IN 运算符中使用转换查找函数。IN 运算符在 WHERE 子句中指定多个值,但在运行查询时可能会导致性能问题。例如,以下查询可能会导致性能问题:
Where logsourcetypename(deviceType) IN ('a','b')始终使用别名来确保您的字段名称不会因 QRadar 版本而异。例如,在下面的查询中,“ 活动犯罪总和 ” 是SUM_Active“犯罪计数 ”字段的别名。
select ("SUM_Active Offense Count" / 2) as 'Active Offense Sum', ("SUM_Dormant Offense Count" / 2) as 'Dormant Offense Sum', "Time" * 1000 as 'sTime' from GLOBALVIEW('Offenses Over Time','NORMAL') order by "Time" desc last 2 days在 AQL 查询中 的时间 中使用毫秒时间格式;例如,
starttime-starttime%60000.在查询中使用正确的日期和年份格式,尤其是在 GLOBALVIEW 中。日期不会自动附加;例如,使用
StartTime, 'YYYY-MM-dd HH:mm'.转到“日志活动”或“网络活动”选项卡,然后运行 AQL 搜索以获取自动完成和消息传递。如果您对获得的结果感到满意,请将语句复制并粘贴到 QRadar Pulse 的查询部分。GLOBALVIEW 源只能在 REST API 调用中使用。
散点地理图显示地理位置,以指示检测到的恶意活动的 IP 来源和目的地。若要收集此信息,请使用 AQL GEO::LOOKUP 函数的geo_json选项。例如:
GEO::LOOKUP(sourceip, 'geo_json') AS 'geoSource', GEO::LOOKUP(destinationip, 'geo_json') AS 'geoDest',分区统计图根据每个地理区域中检测到的恶意活动量成比例进行阴影处理。若要收集此信息,请使用 AQL GEO::LOOKUP 函数的 country 选项。例如:
GEO::LOOKUP(sourceip, 'country') AS 'geoCountry',请参阅《 瞻博网络安全分析 Ariel 查询语言指南》中的以下主题:
Ariel 查询语言概述
AQL 逻辑和比较运算符
系统性能查询示例
事件和流查询示例
参考数据查询示例
用户和网络监控查询示例
示例事件、日志源和存储使用情况 AQL 语句
使用以下示例监控事件、日志源和存储使用情况,也可以根据要求编辑查询。
日志源摘要
独特事件
未分析事件百分比
特定日志源类型的未分析事件百分比
每个规则的部分匹配数
每个事件处理器的部分匹配数
每个规则和每个事件处理器的部分匹配数
每个日志源类型的存储消耗量
存储使用情况
CPU 使用率
内存使用情况
昂贵的 CEP、日志源和规则
昂贵的搜索
按用户执行的 AQL 搜索
- 日志源摘要
- 独特活动
- 未解析事件百分比
- 特定日志源类型的未分析事件百分比
- 每个规则的部分匹配数
- 每个事件处理器的部分匹配数
- 每个规则和每个事件处理器的部分匹配数
- 每个日志源类型的存储消耗量
- 存储使用情况
- CPU 使用率
- 内存使用情况
- 昂贵的 CEP、日志源和规则
- 昂贵的搜索
- 按用户执行的 AQL 搜索
- 复制查询示例
日志源摘要
提供唯一日志源类型的列表,包括日志源数、EPS 和未分析事件的百分比。
SELECT LOGSOURCETYPENAME(devicetype) AS "LogSourceType",UNIQUECOUNT(logsourceid) as "Number of Log Sources", COUNT(*)/3600 as "EPS",(DOUBLE(COUNT(isunparsed)) / COUNT(*)) * 100 AS "PercentUnparsed" FROM events GROUP BY devicetype ORDER BY "PercentUnparsed" DESC LAST 1 HOURS
独特活动
提供唯一事件和日志源类型、QID、高级类别、低级别类别和事件计数的列表。
SELECT LOGSOURCETYPENAME(devicetype) AS "Log Source Type", QIDNAME(qid) AS "Event Name", qid as "QID", CATEGORYNAME(highlevelcategory) AS "High-level Category", CATEGORYNAME(category) AS "Low-level Category", LONG(COUNT(*)) as "Number of Events" FROM events GROUP BY qid, devicetype ORDER BY COUNT(*) DESC LAST 1 HOURS
未解析事件百分比
提供每种日志源类型的未分析事件的百分比。任何大于 20% 的未解析日志源都必须得到解决。
SELECT LOGSOURCETYPENAME(devicetype) AS "Log Source Type", devicetype AS "Log Source ID", LONG(UNIQUECOUNT(logsourceid)) as "Number of Log Sources", LONG(SUM(eventcount)) as "Total Events", LONG(COUNT(*)) as "Aggregated Events", LONG(COUNT(isunparsed)) AS "Unparsed Events", STR(LONG(SUM(eventcount)/24*3600)) as "EPS", LONG("Unparsed Events"*100) / "Total Events" AS "PercentUnparsed" FROM events GROUP BY devicetype ORDER BY "PercentUnparsed","Unparsed Events" DESC LAST 24 HOURS
特定日志源类型的未分析事件百分比
若要进一步调查某个特定日志源类型(例如,)的分析问题, devicetype=11可以运行以下查询,该查询返回每个日志源的统计信息细分。
SELECT LOGSOURCENAME(logsourceid) AS "Log Source Name", LONG(SUM(eventcount)) as "Total Events", LONG(COUNT(*)) as "Aggregated Events", LONG(COUNT(isunparsed)) AS "Unparsed Events", STR(LONG(SUM(eventcount)/24*3600)) as "EPS", LONG("Unparsed Events"*100) / "Total Events" AS "PercentUnparsed" FROM events WHERE GROUP BY logsourceid ORDER BY "PercentUnparsed","Unparsed Events" DESC LAST 24 HOURS
根据您的环境需要添加更多字段。为 devicetype=11 变量创建 AQL 参数。有关更多信息,请参阅 为工作区仪表板创建 AQL 参数。
每个规则的部分匹配数
提供所有规则和构建基块的列表,其中包含指定时间段内的部分匹配项数。
SELECT RULENAME(partialmatchlist) as "Rule Name", LONG(COUNT(*)) as "Number of Partial Matches" FROM events WHERE partialmatchlist IS NOT NULL GROUP BY "Rule Name" ORDER BY "Number of Partial Matches" DESC LAST 1 HOURS
每个事件处理器的部分匹配数
提供所有规则和构建基块的列表,其中包含指定时间段内的部分匹配项数。
SELECT HOSTNAME(processorid) as "Event Processor Name", LONG(COUNT(*)) as "Number of Partial Matches" FROM events WHERE partialmatchlist IS NOT NULL GROUP BY "Event Processor Name" ORDER BY "Number of Partial Matches" DESC LAST 1 HOURS
每个规则和每个事件处理器的部分匹配数
提供所有规则和构建基块的列表,包括指定时间段内每个规则的部分匹配项数。
SELECT HOSTNAME(processorid) as "Event Processor Name", RULENAME(partialmatchlist) as "Rule Name", LONG(COUNT(*)) as "Number of Partial Matches" FROM events WHERE partialmatchlist IS NOT NULL GROUP BY "Event Processor Name", "Rule Name" ORDER BY "Number of Partial Matches" DESC LAST 1 HOURS
每个日志源类型的存储消耗量
提供每种日志源类型在 1 天内使用的存储明细。
此查询不包括用于 QRadar 索引的存储。但是,无论日志源类型或有效负载的大小如何,大多数索引都会平均分布在所有事件中。
SELECT LOGSOURCETYPENAME(deviceType) AS LogSource, LONG(MIN(STRLEN(UTF8(payload)))) AS "Minimum Payload Size (Bytes)", LONG(MAX(STRLEN(UTF8(payload)))) AS "Maximum Payload Size (Bytes)", LONG(AVG(STRLEN(UTF8(payload)))) AS "Average Payload Size (Bytes)", LONG(STDEV(STRLEN(UTF8(payload)))) AS "Standard Deviation (Bytes)", LONG(COUNT(logsourceid)) AS EventCount, LONG(EventCount * "Average Payload Size (Bytes)") / (1024 * 1024) as "Total Storage (MB)" FROM events GROUP BY deviceType ORDER BY "Total Storage (MB)" DESC LAST 24 HOURS
存储使用情况
提供所有 QRadar 设备上使用的存储量的每日摘要。
SELECT DATEFORMAT(starttime, 'yyyy-MM-dd') as "Date", "Hostname" as "QRadar Appliance Name", LONG(MAX("Value")/(1024*1024*1024)) as "Storage Used (GB)" FROM events WHERE (qid = 94000001) AND ((LONG(starttime/1000)%(24*3600)) < 20) AND ("Metric ID" = 'DiskSpaceUsed') AND (Element = '/store') GROUP BY "Date", "Hostname" ORDER BY "Date", "Hostname"
运行搜索至少 1 天以返回结果。若要改进结果,请为 Metric ID 自定义属性编制索引。
CPU 使用率
提供每个 QRadar 设备上每个组件使用的 CPU 时间明细
SELECT DATEFORMAT(starttime, 'yyyy-MM-dd') as "Date", "Hostname" as "QRadar Appliance Name", "Component Type", LONG(SUM("Value")) as "CPU Time" FROM events WHERE (qid = 94000001) AND ("Metric ID" = 'ProcessCPUTime') GROUP BY "Date", "Hostname", "Component Type" ORDER BY "Date", "Hostname", "Component Type"
内存使用情况
提供每个 QRadar 设备上每个组件使用的堆内存的细分。
SELECT DATEFORMAT(starttime, 'yyyy-MM-dd') as "Date", "Hostname" as "QRadar Appliance Name", "Component Type", LONG(SUM("Value")/(1024*1024*1024)) as "Memory Usage Per Day (GB)" FROM events WHERE (qid = 94000001) AND ("Metric ID" = 'HeapMemoryUsed') GROUP BY "Date", "Hostname", "Component Type" ORDER BY "Date", "Hostname", "Component Type"
昂贵的 CEP、日志源和规则
提供由 QRadar 识别的昂贵的复杂事件处理 (CEP)、日志源和规则的完整列表。
此语句使用 QRadar Development Intelligence 应用程序中的以下自定义属性: expensivecp、 expensivelogsource和 expensiverules。
SELECT DATEFORMAT(starttime,'yyyy-MM-dd HH:mm:ss') as "timestamp",sourceip, "expensivecp","expensivelogsource","expensiverules", UTF8(payload) FROM events WHERE devicetype=147 AND (expensivecp is not NULL OR expensivelogsource is not NULL OR expensiverules is not NULL) ORDER BY timestamp DESC LAST 48 HOURS
昂贵的搜索
提供过去 24 小时内运行的搜索列表。该列表根据执行时间进行排序。
此语句使用 QRadar Development Intelligence 应用程序中的以下自定义属性: expensivecp、 expensivelogsource和 expensiverules。
SELECT "searchid", "searchpriority", "searchlimit", "searchtime" FROM events WHERE qid=28250295 ORDER BY searchtime DESC LAST 24 HOURS
按用户执行的 AQL 搜索
提供每个用户运行的所有搜索的列表。
此语句使用 QRadar Development Intelligence 应用程序中的以下自定义属性: expensivecp、 expensivelogsource和 expensiverules。
SELECT username, "Ariel Source", "Ariel Cursor ID", "searchpriority", "AQL Statement" FROM events WHERE qid=28250254 ORDER BY username LAST 2 HOURS
复制查询示例
如果复制并粘贴包含单引号或双引号的查询示例,则必须重新键入引号以确保查询已解析。
AQL 参数的用例
参数有助于在多个 AQL 查询中轻松重用通用元素,以便更轻松地创建小组件并共享它们。您不再需要为类似实体创建单个查询。任何使用该参数的查询都可以自动使用该值。
使用参数来表示常见实体,例如控制台的 IP。例如,与其在每个相关图表的每个查询中键入唯一的 IP 地址,不如将特定的 IP 地址添加到 Console_IP 参数中。使用该参数的任何工作区小组件都会立即更新。
搜索特定用户的事件
你是 SOC 的高级分析师,想要调查其中一个用户 Bob 的一些可疑行为。构建一个仪表板,在 Bob 进行恶意作时捕获您需要关注的信息。例如,在过去一小时内有多少次登录与 Bob 相关联?为 用户名、 每个用户的事件、 时间段、 时间值、 sourceip 和 destinationip 创建参数。
包括涵盖顶级事件类别、前 10 个日志源、事件位置、每个用户的事件和一天中的时间的小组件。当您导出仪表板并与其他人共享时,他们可以将 Bob 的用户名替换为他们选择的用户名。
调查特定时间段内的事件
在时间序列图表中,您会看到登录失败事件的数量大幅增加。更改时间段并再次运行查询,以查看峰值何时开始。例如,如果将时间段更改为过去 30 天,而不是过去 4 天,那么峰值是否开始出现?
与他人共享仪表板
您的团队共同负责管理世界各地的多个托管主机。您可以创建一个仪表板,用于监视特定服务器的各种运行状况指标,例如顶级磁盘使用率和磁盘使用情况分布。为 servername 创建参数,然后与同事共享仪表板。他们需要做的就是将他们监视的服务器名称添加到参数值中,然后获得特定于其服务器的结果。
为工作区仪表板创建 AQL 参数
创建可在具有 AQL 数据源的所有小部件中使用的参数,例如 时间段 和 时间值。使用通用参数和默认值可以减少为小组件创建或编辑单个 AQL 查询所需的时间。
在 AQL 语句中,参数显示在大括号内,如以下示例所示:
由于大括号也用于带引号的字符串(引号之间的字符串文本)内的 AQL 语句中,因此必须在左大括号之前使用反斜杠 (\) 作为转义字符。此语法有助于确保 QRadar Pulse 不会将带引号的字符串解释为参数并导致不正确的查询结果。如果带引号的字符串中有反斜杠,请添加一个额外的反斜杠作为转义字符。
在包含基于 AQL 的项的仪表板(如 “事件和流指标 ”仪表板)中,单击“ 管理参数”>“更多选项”。
“管理参数值”页显示已在工作区中创建的参数。如果任何参数具有默认值,则该参数将列在“默认值”列中。“出现次数”列表示使用每个参数的小组件数。将鼠标悬停在数字上可查看哪些小部件使用该参数。
若要设置参数的默认值,请单击 “更多选项 ”图标,在字段中输入默认值,然后单击 “保存”。
注意:此作将为使用该参数的每个小组件设置默认值,并且“参数”卡会自动更新。或者,您可以在特定小部件中为参数添加值。
注意:更改参数的默认值时,将在工作区中使用该参数的任何位置更改该值,展开或固定的仪表板和小组件除外。如果未将该值设置为默认值,则更新后的更改仅适用于当前会话。但是,如果将该值设置为默认值,则当前会话值也会使用该值。
若要向工作区添加参数,请单击 “添加”,为参数指定名称和默认值,然后单击 “保存”。
要删除参数,首先通过将鼠标悬停在数字上以查看每个项目的名称来确保它不属于任何小部件。从这些项目中删除参数后,可以单击 “删除”。
单击 “返回仪表板 ”以返回主视图并继续您的工作。
向现有基于 AQL 的小部件添加参数
在此示例方案中,您将创建两个参数,并将它们添加到“事件和流指标”仪表板中的“前 10 个日志源”小组件。
单击 “更多选项”>“管理参数”。
单击 “添加”,然后创建两个参数:一个名为 “时间段 ”的参数,其值为
HOURS,另一个名为 “时间值 ”,其值为2。创建每个参数后,单击 “保存 ”。这些参数可用于工作区中的所有小组件。单击 Back to Dashboard。
在 “前 10 个日志源 ”小组件卡片上,单击 “编辑项目” 图标。
在“AQL 语句”字段中,查询类似于以下示例之一。第一个示例是默认值;为了兼容性,对第二个示例进行了修改。
SELECT logsourcename(logsourceid) AS 'MY Log Sources', LONG(SUM(eventcount) / ((MAX(endTime) - MIN(startTime) + 1) / 1000.0)) as event_rate FROM events GROUP BY logsourceid ORDER BY event_rate DESC LIMIT 10 LAST 2 HOURS
SELECT logsourcename(logsourceid) AS 'MY Log Sources', LONG(if (MAX(endtime) > MIN(startTime) ) then (SUM(eventcount)/((MAX(endtime) - MIN(starttime))/1000.0)) else SUM(eventcount)) as event_rate FROM events GROUP BY logsourceid ORDER BY event_rate DESC LIMIT 10 LAST 2 HOURS
若要修改 “AQL 语句” 字段中的查询,请执行以下步骤:
单击“插入参数”图标进行替换
HOURS,然后单击“时间段”参数的“插入”。将“替换
2为 时间值”,然后单击 “运行查询”。更新后的查询类似于以下示例之一:SELECT logsourcename(logsourceid) AS 'MY Log Sources', LONG(SUM(eventcount) / ((MAX(endTime) - MIN(startTime) + 1) / 1000.0)) as event_rate FROM events GROUP BY logsourceid ORDER BY event_rate DESC LIMIT 10 LAST {Time Value} {Time Period}SELECT logsourcename(logsourceid) AS 'MY Log Sources', LONG(if (MAX(endtime) > MIN(startTime) ) then (SUM(eventcount)/((MAX(endtime) - MIN(starttime))/1000.0)) else SUM(eventcount)) as event_rate FROM events GROUP BY logsourceid ORDER BY event_rate DESC LIMIT 10 LAST {Time Value} {Time Period}
查询成功运行后,单击 “保存”。
新参数将添加到 “参数” 卡中,并以星号 (*) 开头,以指示它们是工作区的默认值。只有此仪表板中的小组件使用的参数才会显示在 “参数 ”部分中。
从通用 API 数据源创建小组件
通用 API 数据源可以使用公开的 API 访问 QRadar API 以及 QRadar 应用程序,例如以下示例:
/api/asset_model/assets
/api/health_data/top_rules
/api/config/deployment/hosts
/api/config/event_sources/log_source_management/log_sources
/console/plugins/<QDI_appId>/app_proxy/appmetrics/get_app_memory_usage
单击配置仪表板。
“配置仪表板”屏幕显示可用小组件库,其中包含有关每个小组件的详细信息。
单击创建新小组件。
在“新建仪表板项”页面上,输入小组件的名称和描述。
从“查询”部分的数据源列表中选择“通用 API”,然后输入 URL 终结点。有关更多信息,请参阅有关更多信息,请参阅为仪表板图表创建通用 API 查询的提示。
根据轮询数据源的频率选择刷新时间。默认刷新时间为每分钟一次。刷新时间越短,对 QRadar 的性能影响就越大。查询完成后,刷新时间开始。例如,如果查询需要 3 分钟才能完成,则刷新时间仅在 3 分钟运行结束后才开始。
如果返回的 JSON 中的根对象不是要绘制的数组,请输入 结果映射 以定义哪个键包含要绘制的相关数据。有关更多信息,请参阅 为仪表板图表创建通用 API 查询的提示。
可选:如果返回的 JSON 包含标题映射,请将 结果集中的“使用标题 ”设置为 “打开”。有关更多信息,请参阅 为仪表板图表创建通用 API 查询的提示。
单击 “运行查询”。
首次创建小组件时,如果未返回任何数据结果,则无法配置图表。尝试使字段中的条件不那么严格,然后再次运行查询。
在 “视图 ”部分中创建仪表板图表。
由于您可以从同一查询创建多个视图和图表,因此请为视图指定唯一名称。默认情况下,在标题栏上显示图表的标题和状态;要隐藏它们,请单击 “更多选项 ”图标,然后将设置切换为 “关闭”。
选择图表类型并配置相关属性。有关帮助您决定使用哪种图表类型的用例,请参阅 小组件图表类型。
预览图表的外观,然后单击 “保存”。
为仪表板图表创建通用 API 查询的提示
帮助您更轻松地创建通用 API 查询和仪表板图表的提示涵盖了特定图表类型的数据要求、返回的 JSON 不是数组时的结果映射以及动态标题。
数据格式
调用的 API 必须以特定的 JSON 格式返回数据,QRadar Pulse 才能读取数据。
大多数 QRadar API 以 QRadar Pulse 可以处理的格式返回数据。其他 API(如应用程序 API)可能要求您使用 QRadar Pulse 结果映射来提取返回的 JSON 对象的特定键。
表格图表的数据要求
对于表格图表,API 必须返回表示表格数据的对象的 JSON 数组。例如:
[{
"rowstring": "Thanksgiving eCard Emails Distributing Malware",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, {
"title": "PyXie - RAT Written In Python",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, ...
饼图和单系列条形图的数据要求
对于饼图和单系列条形图,API 必须返回至少包含一个标签和一个数字指标的 JSON 数组。例如:
[{
"Country": "Europe",
"Count": 97
}, {
"Country": "Middle East",
"Count": 85
}, {
"Country": "North America",
"Count": 83
}, ...
时间序列图的数据要求
对于时间序列图表,API 必须返回一个 JSON 数组,该数组包含至少一个使用有效日期或毫秒格式的基于时间的指标,以及要在 Y 轴上绘制的一个或多个数值指标。数据必须按时间排序。例如:
[{
"date": "2020-02-18",
"Phishing": 7.21,
"C2": 82.67,
"Malware": 272.05,
"EarlyWarning": 448.32
}, {
"date": "2020-02-19",
"Phishing": 7.47,
"C2": 94.14,
"Malware": 121.84,
"EarlyWarning": 665.33
}, {
"date": "2020-02-20",
"Phishing": 8.05,
"C2": 92.35,
"Malware": 120.71,
"EarlyWarning": 736.9
}, ...
散点地理图表的数据要求
散点地理图表需要一个字符串化的 JSON 对象(即,使用 JSON.stringify() JavaScript 函数转换的对象),其中包含一个带坐标的geo_json键和一个数字指标。例如:
[{
"sourceIP": "81.12.213.121",
"geoSource": "{\"geo_json\":{\"coordinates\":[44.4354,26.1033],\"type\":\"Point\"}}",
"geoDest": "{\"geo_json\":{\"coordinates\":[1.0,38.0],\"type\":\"Point\"}}",
"eventCount": 50
}, {
"sourceIP": "59.154.60.0",
"geoSource": "{\"geo_json\":{\"coordinates\":[-33.494,143.2104],\"type\":\"Point\"}}",
"geoDest": "{\"geo_json\":{\"coordinates\":[53.3472,-6.2439],\"type\":\"Point\"}}",
"eventCount": 60
}, { ...
分区统计线地理图表的数据需求
分区统计图需要一个字符串化的 JSON 对象(即,使用 JSON.stringify() JavaScript 函数转换的对象),其中包含一个国家/地区键,其中包含国家/地区名称或国家/地区的 ISO-3 代码,以及一个数字指标。例如:
[{
"sourceIP": "81.12.213.121",
"geoCountry": "{\"country\":{\"confidence\":null,\"name\":\"Romania\",\"iso_code\":\"ROU\",\"geo_id\":798549}}",
"eventCount": 50
}, {
"sourceIP": "59.154.60.0",
"geoCountry": "{\"country\":{\"confidence\":null,\"name\":\"Australia\",\"iso_code\":\"AUS\",\"geo_id\":2077456}}",
"eventCount": 60
}, { ...
结果映射
如果返回的 JSON 中的根对象不是要绘制的数组,请使用 Results mapping 字段定义哪个键包含要绘制的相关数据。
结果映射使用 JSON 点 (.) 运算符从根节点开始遍历文档。例如,在以下 JSON 对象中,相关数据位于 items 键下,该键位于表根节点下。QRadar Pulse 需要 table.items 映射才能读取 items 数组并忽略所有其他键:
{
"table": {
"title": "Top 5 most relevant threats",
"columns": [{
"title": "Threat",
"key": "title",
"subkey": "category",
"width": 75
}, {
"title": "X-Force Threat Score",
"key": "relevance",
"width": 0
}],
"items": [{
"title": "Thanksgiving eCard Emails Distributing Malware",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, {
"title": "PyXie - RAT Written In Python",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, { ...Copy code
如果返回的 JSON 对象本身是一个数组,就像大多数默认 QRadar API 一样,则不需要映射。但是对于 QRadar 应用程序,返回的 JSON 可能具有不同的格式。
动态标题
您可以使用描述数据当前状态的动态标题来覆盖 QRadar Pulse 视图名称。例如,标题为“世界恶意活动:” <threat_name> 的图表,其中的威胁名称会随时间而变化。动态标题需要具有动态标题名称的标题键,如以下示例所示。
{
"title": "Worldwide Malicious Activity: emotet",
"items": [{
"sourceIP": "81.12.213.121",
"geoSource": "{\"geo_json\":{\"coordinates\":[44.4354,26.1033],\"type\":\"Point\"}}",
"geoDest": "{\"geo_json\":{\"coordinates\":[1.0,38.0],\"type\":\"Point\"}}",
"geoCountry": "{\"country\":{\"confidence\":null,\"name\":\"Romania\",\"iso_code\":\"ROU\",\"geo_id\":798549}}",
"eventCount": 50
}, { ...
如果标题键位于根节点下,请使用 标题映射 字段。标题映射使用 JSON 点 (.) 运算符从根节点开始遍历文档。例如,如果标题键位于表根节点下,则应指定 table.title 映射。