FortiAnalyzer

本文档介绍了如何将 FortiAnalyzer 与 Google Security Operations 集成。

准备工作

为确保 Google SecOps 与 FortiAnalyzer 之间成功通信,您必须配置具有特定 API 和资源权限的专用管理员账号。

类别 权限级别
系统设置 无
管理网域 无
设备管理器 只读
    添加/删除/修改设备/群组 只读
Log View/FortiView 只读
突发事件和事件 读写
    创建和更新突发事件 读写
对事件进行分类 无
执行 Playbook 无
报告 无
    生成报告 无
Fabric 视图 无

如需使集成能够与 FortiAnalyzer API 通信,您必须向管理员账号授予必要的 API 权限:

  1. 在 FortiAnalyzer 中,前往管理员列表,然后选择为此集成创建的用户账号。

  2. 在修改管理员边栏中,找到 JSON API 访问权限字段,并将其设置为 Read-Write。

  3. 点击确定以保存更改。

集成参数

使用以下参数配置集成:

参数显示名称 类型 默认值 为必填项 说明
API 根 字符串 https://{ip address} 是 FortiAnalyzer 实例的 API 根。
用户名 字符串 不适用 是

FortiAnalyzer 账号的用户名。

确保所提供的凭据属于分配给准备工作中定义的配置文件的用户账号。

密码 密码 不适用 是

FortiAnalyzer 账号的密码。

确保所提供的凭据属于分配给准备工作中定义的配置文件的用户账号。

验证 SSL 复选框 勾选 是 如果启用,则会验证与 FortiAnalyzer 的连接所使用的 SSL 证书是否有效。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。

如有需要,您可以在后续阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。

操作

向提醒添加评论

说明

在 FortiAnalyzer 中向提醒添加评论。

参数

参数显示名称 类型 默认值 为必填项 说明
提醒 ID 字符串 不适用 是 指定需要更新的提醒的 ID。
评论 字符串 不适用 是 指定提醒的评论。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success=False
JSON 结果
{
    "jsonrpc": "2.0",
    "id": "string",
    "result": {
        "status": "done"
    }
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果返回了信息 (is_success=true):“已成功在 FortiAnalyzer 中为 ID 为 {id} 的提醒添加评论。”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭证错误、无法连接到服务器或其他错误):“执行‘向提醒添加评论’操作时出错。Reason: {0}''.format(error.Stacktrace)"

如果未找到提醒:“执行‘向提醒添加评论’操作时出错。原因:在 FortiAnalyzer 中找不到 ID 为 {alert id} 的提醒。请检查拼写。”

常规

丰富实体

说明

使用 FortiAnalyzer 中的信息丰富实体。支持的实体:主机名、IP 地址。

参数

不适用

运行时间

此操作将在以下实体上运行:

  • 主机名
  • IP 地址

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success=False
JSON 结果
{
    "adm_pass": [
        "ENC",
        "FLP+Dq8f3t2/S+GQ6DfPL2iRhtmk1CEZzEeH8+nVkRkFd72IUbBZM6uDyw0fQ1j1i28H1wtfqf6HlGEK2ubxs0rXE4L+Uqj433si+AmEF9gEB5gLw/4P5YYRkw/aOYF74k8/8bincoa31jBe0u0HWRNdWYQSyG7IWgvZGsPK4at0gwZI"
    ],
    "adm_usr": "admin",
    "app_ver": "",
    "av_ver": "",
    "beta": -1,
    "branch_pt": 1255,
    "build": 1255,
    "checksum": "",
    "conf_status": 0,
    "conn_mode": 0,
    "conn_status": 0,
    "db_status": 0,
    "desc": "",
    "dev_status": 0,
    "eip": "",
    "fap_cnt": 0,
    "faz.full_act": 0,
    "faz.perm": 15,
    "faz.quota": 0,
    "faz.used": 0,
    "fex_cnt": 0,
    "first_tunnel_up": 0,
    "flags": 2097152,
    "foslic_cpu": 0,
    "foslic_dr_site": 0,
    "foslic_inst_time": 0,
    "foslic_last_sync": 0,
    "foslic_ram": 0,
    "foslic_type": 0,
    "foslic_utm": 0,
    "fsw_cnt": 0,
    "ha_group_id": 0,
    "ha_group_name": "",
    "ha_mode": 0,
    "ha_slave": null,
    "hdisk_size": 0,
    "hostname": "",
    "hw_rev_major": 0,
    "hw_rev_minor": 0,
    "hyperscale": 0,
    "ip": "172.30.203.248",
    "ips_ext": 0,
    "ips_ver": "",
    "last_checked": 1665664693,
    "last_resync": 0,
    "latitude": "0.0",
    "lic_flags": 0,
    "lic_region": "",
    "location_from": "",
    "logdisk_size": 0,
    "longitude": "0.0",
    "maxvdom": 10,
    "mgmt.__data[0]": 0,
    "mgmt.__data[1]": 0,
    "mgmt.__data[2]": 0,
    "mgmt.__data[3]": 0,
    "mgmt.__data[4]": 0,
    "mgmt.__data[5]": 0,
    "mgmt.__data[6]": 0,
    "mgmt.__data[7]": 0,
    "mgmt_if": "",
    "mgmt_mode": 2,
    "mgmt_uuid": "1841991674",
    "mgt_vdom": "",
    "module_sn": "",
    "mr": 2,
    "name": "FGVMEV2YKQ61YQD5",
    "node_flags": 0,
    "nsxt_service_name": "",
    "oid": 181,
    "onboard_rule": null,
    "opts": 0,
    "os_type": 0,
    "os_ver": 7,
    "patch": 2,
    "platform_str": "FortiGate-VM64",
    "prefer_img_ver": "",
    "prio": 0,
    "private_key": "",
    "private_key_status": 0,
    "psk": "",
    "role": 0,
    "sn": "FGVMEV2YKQ61YQD5",
    "source": 2,
    "tab_status": "",
    "tunnel_cookie": "",
    "tunnel_ip": "",
    "vdom": [
        {
            "comments": null,
            "devid": "FGVMEV2YKQ61YQD5",
            "ext_flags": 0,
            "flags": 0,
            "name": "root",
            "node_flags": 0,
            "oid": 3,
            "opmode": 1,
            "rtm_prof_id": 0,
            "status": null,
            "tab_status": null,
            "vdom_type": 1,
            "vpn_id": 0
        }
    ],
    "version": 700,
    "vm_cpu": 0,
    "vm_cpu_limit": 0,
    "vm_lic_expire": 0,
    "vm_mem": 0,
    "vm_mem_limit": 0,
    "vm_status": 0
}
实体丰富化 - 前缀 FortiAn_
扩充项字段名称 来源(JSON 密钥) 逻辑 - 适用情形
adm_usr adm_usr 当 JSON 中有此字段时
build build 当 JSON 中有此字段时
ip ip 当 JSON 中有此字段时
last_checked last_checked 当 JSON 中有此字段时
last_resync last_resync 当 JSON 中有此字段时
name name 当 JSON 中有此字段时
sn sn 当 JSON 中有此字段时
os_type os_type 当 JSON 中有此字段时
os_ver os_ver 当 JSON 中有此字段时
patch patch 当 JSON 中有此字段时
platform\_str platform\_str 当 JSON 中有此字段时
版本 版本 当 JSON 中有此字段时
降序 降序 当 JSON 中有此字段时
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果一个实体有可用数据 (is_success=true):“已使用 FortiAnalyzer 中的信息成功丰富以下实体:{entity.identifier}”。

如果一个实体没有可用数据 (is_success=true):“操作无法使用 FortiAnalyzer 中的信息丰富以下实体:{entity.identifier}”

如果所有实体的数据都不可用 (is_success=false):“None of the provided entities were enriched.”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器或其他错误):“执行操作‘丰富实体’时出错。Reason: {0}''.format(error.Stacktrace)

常规
案例墙表格

标题:{entity.identifier}

列:键值对

实体

Ping

说明

使用 Google SecOps Content Hub 页面中集成配置页面上提供的参数,测试与 FortiAnalyzer 的连接。

参数

不适用

运行时间

此操作不会对实体运行,也没有强制性输入参数。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success=False
JSON 结果
N/A
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果成功:“已使用提供的连接参数成功连接到 BitSight 服务器!”

操作应失败并停止 playbook 执行:

如果未成功:“Failed to connect to the BitSight server! 错误为 {0}”。format(exception.stacktrace)

常规

搜索日志

说明

在 FortiAnalyzer 中搜索日志。

参数

参数显示名称 类型 默认值 为必填项 说明
日志类型 DDL

流量

可能的值:

  • 流量
  • 应用控制
  • 攻击
  • 内容、DLP
  • 邮件过滤器
  • 事件、历史记录
  • 病毒
  • VOIP
  • 网页过滤器
  • Netscan
  • FCT 事件
  • FCT 流量
  • WAF
  • GTP
否 指定需要搜索的日志类型。
区分大小写的过滤条件 复选框 尚未核查 否 如果启用,过滤条件会区分大小写。
查询过滤条件 字符串 不适用 否 指定搜索的查询过滤条件。
设备 ID 字符串 All\_Fortigate 否

指定需要搜索的设备的 ID。

如果未提供任何内容,该操作将在 All_Fortigate 中搜索。

值示例:All_FortiGate、All_FortiMail、All_FortiWeb、All_FortiManager、All_Syslog、All_FortiClient、All_FortiCache、All_FortiProxy、All_FortiAnalyzer、All_FortiSandbox、All_FortiAuthenticator、All_FortiDDoS

时间范围 DDL

上个月

可能的值:

  • 过去 1 小时
  • 过去 6 小时
  • 过去 24 小时
  • 上周
  • 上个月
  • 自定义
否

指定结果的时间范围。

如果选择“自定义”,您还需要提供“开始时间”参数。

开始时间 字符串 不适用 否

指定结果的开始时间。

如果为“时间范围”参数选择了“自定义”,则此参数是必需的。

格式:ISO 8601

结束时间 字符串 不适用 否

指定结果的结束时间。

格式:ISO 8601。

如果未提供任何内容,并且为“时间范围”参数选择了“自定义”,则此参数会使用当前时间。

时间顺序 DDL

降序

可能的值:

  • 降序
  • 升序
否 在搜索中指定时间顺序。
要返回的最大日志数 整数 20 否 指定要返回的日志数量。默认值:20。最大值:1000。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success=False
JSON 结果
{
    "sessionid": "29658",
    "srcip": "172.30.201.188",
    "dstip": "173.243.138.210",
    "srcport": "17453",
    "dstport": "443",
    "trandisp": "noop",
    "duration": "1",
    "proto": "6",
    "sentbyte": "216",
    "rcvdbyte": "112",
    "sentpkt": "4",
    "rcvdpkt": "2",
    "logid": "0001000014",
    "service": "HTTPS",
    "app": "HTTPS",
    "appcat": "unscanned",
    "srcintfrole": "undefined",
    "dstintfrole": "undefined",
    "eventtime": "1665752066921638736",
    "srccountry": "Reserved",
    "dstcountry": "Canada",
    "srcintf": "root",
    "dstintf": "port1",
    "dstowner": "540",
    "tz": "-0700",
    "devid": "FGVMEV2YKQ61YQD5",
    "vd": "root",
    "csf": "FortiNetFabric",
    "dtime": "2022-10-14 05:54:27",
    "itime_t": "1665752069",
    "devname": "FGVMEV2YKQ61YQD5"
}{
    "date": "2022-10-14",
    "time": "05:54:27",
    "id": "7154350659607724033",
    "itime": "2022-10-14 05:54:29",
    "euid": "102",
    "epid": "102",
    "dsteuid": "102",
    "dstepid": "102",
    "logver": "702021255",
    "type": "traffic",
    "subtype": "local",
    "level": "notice",
    "action": "close",
    "policyid": "0"
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果返回了信息 (is_success=true):“已成功在 FortiAnalyzer 中检索到符合所提供条件的日志。”

如果未返回任何信息 (is_success=true):“在 FortiAnalyzer 中未找到符合所提供条件的日志。”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器或其他错误),则会显示以下消息:“执行‘搜索日志’操作时出错。Reason: {0}''.format(error.Stacktrace)"

如果响应中报告了错误:“执行操作‘搜索日志’时出错。Reason: {0}''.format(error/message)"

常规

更新提醒

说明

在 FortiAnalyzer 中更新提醒。

参数

参数显示名称 类型 默认值 为必填项 说明
提醒 ID 字符串 不适用 是 指定需要更新的提醒的 ID。
确认状态 DDL

选择一项

可能的值:

  • 选择一项
  • 确认
  • 取消确认
否 指定提醒的确认状态。
标记为已读 复选框 尚未核查 否 如果启用,该操作会将提醒标记为已读。
分配给 字符串 不适用 否 指定需要将提醒分配给谁。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success=False
JSON 结果
{
    "alerttime": "1665653864",
    "logcount": "17",
    "alertid": "202210131000040003",
    "adom": "root",
    "epid": "1",
    "epname": "not implemented dev type",
    "subject": "desc:Trim local db",
    "euid": "1",
    "euname": "N/A",
    "devname": "fortianalyzer",
    "logtype": "event",
    "devtype": "FortiAnalyzer",
    "devid": "FAZ-VMTM22013516",
    "vdom": "_self_locallog_",
    "groupby1": "desc:Trim local db",
    "triggername": "Local Device Event",
    "tag": "Default,System,Local",
    "eventtype": "event",
    "severity": "medium",
    "extrainfo": "{ \"msg\": \"Requested to trim database tables older than 60 days to enforce the retention policy of Adom FortiAuthenticator.\" }",
    "ackflag": "no",
    "readflag": "yes",
    "filterkey": "3377053565526629289",
    "firstlogtime": "1665653864",
    "multiflag": "",
    "lastlogtime": "1665653887",
    "updatetime": "1665747977",
    "filtercksum": "2072153473",
    "filterid": "1",
    "assignto": "api_user",
    "ackby": "admin",
    "acktime": "1665747892"
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果返回的信息 (is_success=true) 为:“Successfully updated alert with ID {alert id} in FortiAnalyzer.”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器或其他错误):“执行‘更新提醒’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果未找到提醒:“执行‘更新提醒’操作时出错。原因:在 FortiAnalyzer 中找不到 ID 为 {alert id} 的提醒。请检查拼写。”

如果“确认状态”参数设置为“选择一项”,“标记为已读”参数设置为 False,并且“分配给”参数中未提供任何内容:执行“更新提醒”操作时出错。原因:“确认状态”“标记为已读”或“分配给”参数中至少有一个应有值。

常规

连接器

FortiAnalyzer - 提醒连接器

说明

从 FortiAnalyzer 中提取有关提醒的信息。

在 Google SecOps 中配置 FortiAnalyzer - 提醒连接器

如需详细了解如何在 Google SecOps 中配置连接器,请参阅配置连接器。

连接器参数

使用以下参数配置连接器:

参数显示名称 类型 默认值 为必填项 说明
产品字段名称 字符串 siemplify_type 是 输入源字段名称,以便检索产品字段名称。
事件字段名称 字符串 event_type 是 输入源字段名称,以检索事件字段名称。
环境字段名称 字符串 "" 否

描述存储环境名称的字段的名称。

如果未找到环境字段,则环境为默认环境。

环境正则表达式模式 字符串 .* 否

要对“环境字段名称”字段中的值运行的正则表达式模式。

默认值为 .*,用于捕获所有值并返回未更改的值。

用于允许用户通过正则表达式逻辑操作环境字段。

如果正则表达式模式为 null 或空,或者环境值为 null,则最终环境结果为默认环境。

脚本超时(秒) 整数 180 是 运行当前脚本的 Python 进程的超时限制。
API 根 字符串 https://{ip address} 是 FortiAnalyzer 实例的 API 根。
用户名 字符串 不适用 是 FortiAnalyzer 账号的用户名。
密码 密码 不适用 是 FortiAnalyzer 账号的密码。
要提取的最低严重级别 字符串 中 否

需要用于提取提醒的最低严重级别。

可能的值:低、中、高、严重。如果未指定任何内容,连接器会注入所有严重级别的提醒。

回溯的小时数上限 整数 1 否 提取提醒的小时数。
要提取的提醒数量上限 整数 20 否 每次连接器迭代要处理的每种类型的提醒数量。
将动态列表用作黑名单 复选框 尚未核查 是 如果启用,动态列表将用作黑名单。
验证 SSL 复选框 勾选 是 如果启用,连接器会验证与 FortiAnalyzer 服务器连接的 SSL 证书是否有效。
代理服务器地址 字符串 不适用 否 要使用的代理服务器的地址。
代理用户名 字符串 不适用 否 用于进行身份验证的代理用户名。
代理密码 密码 不适用 否 用于进行身份验证的代理密码。

连接器规则

代理支持

此连接器支持代理。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。