将 Jira 与 Google SecOps 集成

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

使用场景

Jira 集成使用 Google SecOps 功能来支持以下用例:

  • 自动创建工单:使用 Jira 连接器根据 Google SecOps 提醒自动创建 Jira 问题,从而简化安全团队与 IT 团队之间的交接。

  • 双向同步:使用专用同步作业在 Jira 工单和 Google SecOps 案例之间自动同步评论和状态更改,从而保持各平台之间的一致性。

  • 突发事件丰富:使用上传附件操作将证据、日志和屏幕截图直接附加到 Jira 问题,以便为修复人员提供完整的背景信息。

  • 动态任务管理:直接从 Google SecOps playbook 更新、分配或关联相关的 Jira 问题,以自动执行标准操作程序 (SOP)。

准备工作

在 Google SecOps 平台中配置 Jira 集成之前,请验证您是否具备以下条件:

  • 产品兼容性:可访问 Jira Cloud 实例或 Jira Data Center(本地)环境。

  • 身份验证方法:选择一种身份验证方法。

    • 基本身份验证 (Jira Cloud):需要用户名(电子邮件)和 Atlassian API 令牌。
    • 服务账号身份验证 (Jira Cloud):需要服务账号令牌和您的 Cloud ID。
    • 标准身份验证 (Jira Data Center):需要有效的用户名和密码。
  • API 根网址:API 根网址的格式取决于您的身份验证方法。

    • 标准版/基本版:Jira 实例的基础网址(例如 https://yourdomain.atlassian.net)。
    • 服务账号:Atlassian API 代理网址,其中必须包含您的 Cloud ID(例如 https://api.atlassian.com/ex/jira/{cloud_id})。

为 Jira Cloud 设置身份验证

如需使用 API 令牌连接到 Jira Cloud,请按照 Atlassian 文档中的说明生成令牌。

为服务账号设置身份验证

如需为 Jira Cloud 使用基于令牌的身份验证(不记名令牌),请执行以下操作:

  1. 如需详细了解如何使用 Atlassian 管理控制台创建服务账号,请参阅了解服务账号。

  2. 前往以下网址,检索您的 Cloud ID: https://<your_tenant>.atlassian.net/_edge/tenant_info (其中 <your_tenant> 是您的特定 Atlassian 实例名称)。

  3. 配置集成时,请将用户名字段留空,以触发不记名令牌身份验证。

集成参数

Jira 集成需要以下参数:

参数 说明
Api Root

必填。

Jira 实例的基础网址。

Username

可选。

用于连接到 Jira 的用户名(电子邮件地址)。

此参数的要求取决于所选的身份验证方法:

  • 如果提供,系统会使用基本身份验证。
  • 如果留空,系统会默认使用不记名令牌身份验证(服务账号需要)。

如需详细了解身份验证方法,请参阅准备工作。

Api Token

必填。

用于连接到 Jira 的身份验证凭证。

此字段接受 API 令牌、服务账号令牌或标准密码(对于数据中心)。

Verify SSL

可选。

如果选中此选项,集成会在连接到 Jira 服务器时验证 SSL 证书。

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

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

操作

如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。

添加评论

使用添加评论操作撰写评论并将其添加到现有 Jira 问题。

这是一种直接在 Google SecOps 中记录发现结果、提供更新以及与团队成员协作的有效方式。

此操作不会在 Google SecOps 实体上运行。

操作输入

添加评论操作需要以下参数:

参数 说明
Issue Key

必填。

Jira 问题的唯一标识符(例如 PROJ-123)。

Comment

必填。

要添加到 Jira 问题的文本。

操作输出

添加评论操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
脚本结果

下表列出了使用添加评论操作时脚本结果输出的值:

脚本结果名称 值
comment_id Jira 中新创建的评论的唯一 ID。

分配问题

使用分配问题操作将 Jira 问题分配给特定用户。

此操作不会在 Google SecOps 实体上运行。

操作输入

分配问题操作需要以下参数:

参数 说明
Issue Key

必填。

Jira 问题的唯一标识符(例如 PROJ-123)。

Assignee

必填。

要将问题分配给的用户姓名或邮箱。

Jira Username

可选。

发起分配操作的人员的 Jira 用户名。

操作输出

分配问题操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
脚本结果

下表列出了使用分配问题操作时脚本结果输出的值:

脚本结果名称 值
success true 或 false

创建提醒问题

使用创建提醒问题操作在 Jira 中为特定提醒创建新工单。

此操作主要在 playbook 中使用,用于将安全突发事件上报给 IT 或工程团队,以便进一步调查或修复。

此操作不会在 Google SecOps 实体上运行。

操作输入

创建提醒问题操作需要以下参数:

参数 说明
Project Key

必填。

创建问题的 Jira 项目的唯一简写键(例如 SEC)。

Summary

必填。

问题的简要标题或摘要。

Issue Type

必填。

问题类型的名称(例如 Task、Bug 或 Incident)。

操作输出

创建提醒问题操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了操作成功创建问题时收到的 JSON 结果输出:

{
   "summary": "Sample issue",
   "description": "Create Enrich entities action using Insights API (IOC search). Write connector for alerts.",
   "project": {
      "key": "PR",
      "name": "Project 1",
      "projectTypeKey": "software"
   },
   "issuetype": {
     "name": "Task",
     "subtask": false
   },
   "status": {
      "name": "DONE",
      "statusCategory": {
         "name": "Done",
         "key": "done"
      }
   },
   "priority": {
      "name": "Medium",
      "id": "3"
   },
   "creator": {
      "displayName": "user1",
      "emailAddress": "john_doe@example.com"
   },
   "assignee": {
      "displayName": "user2",
      "emailAddress": "john_doe@example.com"
   },
   "created": "2018-06-19T15:23:13.701+0300",
   "updated": "2018-09-18T10:02:06.347+0300"
}
脚本结果

下表列出了使用创建提醒问题操作时脚本结果输出的值:

脚本结果名称 值
issue_key 新创建的 Jira 问题的唯一简写键(例如 SEC-456)。

创建问题

使用创建问题操作在 Jira 项目中创建新工单。

此操作提供了丰富的自定义选项,包括使用 JSON 指定组件、标签和自定义字段,因此非常适合复杂的工单创建工作流。

此操作不会在 Google SecOps 实体上运行。

操作输入

Create Issue 操作需要以下参数:

参数 说明
Project Key

必填。

创建问题的 Jira 项目的唯一简写键(例如 SEC)。

Summary

必填。

问题的简要标题或摘要。

Description

可选。

问题的详细说明。

Issue Type

必填。

问题类型的名称(例如 Task、Bug 或 Incident)。

Jira Username

可选。

发起操作的人员的 Jira 用户名。

Assignee

可选。

问题分配到的用户的标识符。

Components

可选。

要与问题关联的 Jira 组件列表,以英文逗号分隔。

Labels

可选。

要添加到问题中的标签逗号分隔列表。

Custom Fields

可选。

一个 JSON 对象,其中包含要在创建期间设置的其他字段和值(例如 {"customfield_10001": "Value"})。

如果发生冲突,此参数中提供的值将优先于其他字段映射并覆盖这些映射。

操作输出

Create Issue 操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了使用创建问题操作时收到的 JSON 结果输出:

{
   "summary": "Sample issue",
   "description": "Create Enrich entities action using Insights API (IOC search). Write connector for alerts. In a couple of days we will have access to an instance.",
   "project": {
      "key": "PR",
      "name": "Project 1",
      "projectTypeKey": "software"
   },
   "issuetype": {
      "name": "Task",
      "description": "A task that needs to be done.",
      "subtask": false
   },
   "status": {
      "name": "DONE",
      "statusCategory": {
         "name": "Done",
         "key": "done",
         "colorName": "green"
      }
   },
   "priority": {
      "name": "Medium",
      "id": "3"
   },
   "resolution": {
      "name": "Done",
      "description": "Work has been completed on this issue."
   },
   "creator": {
      "displayName": "user1",
      "emailAddress": "john_doe@example.com",
      "active": true,
      "timeZone": "Asia/Jerusalem"
   },
   "assignee": {
      "displayName": "user2",
      "emailAddress": "john_doe@example.com",
      "active": true
   },
   "reporter": {
      "displayName": "user1",
      "emailAddress": "john_doe@example.com"
   },
   "labels": [
      "Label1"
   ],
   "attachment": [
      {
         "id": "1001",
         "filename": "file.rar",
         "mimeType": "binary/octet-stream",
         "size": 15420,
         "created": "2018-06-19T15:23:07.369+0300"
      }
   ],
   "created": "2018-06-19T15:23:13.701+0300",
   "updated": "2018-09-18T10:02:06.347+0300",
   "resolutiondate": "2018-09-18T10:02:06.340+0300",
   "watches": {
      "watchCount": 1,
      "isWatching": false
   }
}
脚本结果

下表列出了使用创建问题操作时脚本结果输出的值:

脚本结果名称 值
issue_key 新创建的 Jira 问题的唯一简写键(例如 SEC-789)。

删除问题

使用删除问题操作可从 Jira 中永久移除问题。

此操作通常用于清理重复工单或移除 playbook 开发期间生成的测试数据。

此操作不会在 Google SecOps 实体上运行。

操作输入

删除问题操作需要以下参数:

参数 说明
Issue Key

必填。

要删除的 Jira 问题的唯一简写键(例如 SEC-123)。

操作输出

删除问题操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
脚本结果

下表列出了使用删除问题操作时脚本结果输出的值:

脚本结果名称 值
success true 或 false

下载附件

使用下载附件操作可检索附加到特定 Jira 问题的所有文件。如果附件是 .eml 文件,该操作还会下载该电子邮件中包含的所有文件。

此操作不会在 Google SecOps 实体上运行。

操作输入

下载附件操作需要以下参数:

参数 说明
Issue Key

必填。

Jira 问题的唯一简写键(例如 SEC-123)。

Download Path

可选。

文件夹的本地或内部路径,操作会将下载的附件保存到该文件夹。

所需格式取决于您的部署类型:

  • SaaS 部署:路径是托管平台的内部路径,例如 /attachments/。
  • 远程代理部署:路径必须是安装了远程代理的本地机器上的绝对有效目录路径。例如,C:\temp\attachments(对于 Windows)或 /var/tmp/attachments/(对于 Linux)。
Download Attachments to the Case Wall

可选。

如果选择此选项,该操作会将 Jira 问题附件直接下载到当前的 Google SecOps 案例墙。

添加到案例墙的附件有大小限制。大型文件可能无法上传。

默认情况下,该环境处于停用状态。

操作输出

下载附件操作会提供以下输出:

操作输出类型 可用性
案例墙附件 可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了使用下载附件操作时收到的 JSON 结果输出:

[
  {
    "download_path": "downloads/Security_Evidence.eml",
    "attachment_details": {
      "id": "10007",
      "filename": "Security_Evidence.eml",
      "author": {
        "displayName": "Security Analyst",
        "emailAddress": "analyst@example.com",
        "active": true,
        "timeZone": "Asia/Calcutta"
      },
      "created": "2024-05-25T20:27:09.066+0530",
      "size": 12049140,
      "mimeType": "message/rfc822"
    }
  },
  {
    "download_path": "downloads/Logs_Attachment.txt",
    "attachment_details": {
      "id": "10005",
      "filename": "Logs_Attachment.txt",
      "author": {
        "displayName": "System Admin",
        "emailAddress": "admin@example.com",
        "active": true,
        "timeZone": "Asia/Calcutta"
      },
      "created": "2024-05-16T11:48:24.141+0530",
      "size": 43,
      "mimeType": "text/plain"
    }
  }
]
脚本结果

下表列出了使用下载附件操作时脚本结果输出的值:

脚本结果名称 值
is_success true 或 false

获取问题

使用获取问题操作可检索一个或多个 Jira 问题的完整详细信息。

此操作有助于使用当前工单元数据(例如状态、被分配人和优先级)丰富 Google SecOps 案例。

此操作不会在 Google SecOps 实体上运行。

操作输入

Get Issues 操作需要以下参数:

参数 说明
Issue Keys

必填。

要提取的 Jira 问题键的英文逗号分隔列表(例如 SEC-123, SEC-456)。

操作输出

Get Issues 操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了使用获取问题操作时收到的 JSON 结果输出:

{
  "issues_details_list": [
    {
      "key": "TES-65",
      "summary": "New summary",
      "description": "Detailed description of the security incident.",
      "project": {
        "key": "TES",
        "name": "test-project1",
        "projectTypeKey": "software"
      },
      "issuetype": {
        "name": "Bogue",
        "subtask": false
      },
      "status": {
        "name": "Fini",
        "statusCategory": {
          "name": "Terminé",
          "key": "done"
        }
      },
      "priority": {
        "name": "Medium",
        "id": "3"
      },
      "assignee": {
        "displayName": "Vasil Daskalov",
        "emailAddress": "vasil.daskalov@siemplify.co"
      },
      "creator": {
        "displayName": "admin@siemplifylab.local",
        "emailAddress": "admin@siemplifylab.local"
      },
      "created": "2021-08-31T12:15:22.089+0000",
      "updated": "2021-11-11T13:16:50.552+0000",
      "resolution": {
        "name": "Terminé",
        "description": "Ce ticket a été traité."
      },
      "labels": [],
      "components": []
    }
  ]
}
脚本结果

下表列出了使用获取问题操作时脚本结果输出的值:

脚本结果名称 值
issues_details_list 包含所请求 Jira 问题的完整元数据的列表。

使用关联问题操作在多个 Jira 问题之间建立关系。

此操作主要在 playbook 中使用,用于关联相关的安全突发事件或跟踪调查工单之间的依赖关系。

此操作不会在 Google SecOps 实体上运行。

操作输入

Link Issues 操作需要以下参数:

参数 说明
Inward Issue ID

必填。

以逗号分隔列表形式的入站问题 ID。

例如,如果 Relation Type 设置为 Blocks,则此问题会在 Jira 界面中显示关系 is blocked by。

Outward Issue IDs

必填。

外部 Jira 问题的简写键。

例如,如果 Relation Type 设置为 Blocks,则此问题会在 Jira 界面中显示关系 blocks。

Relation Type

必填。

要在问题之间创建的链接类型。

您可以通过运行列出关系类型操作来查找可用关系类型的列表。

默认值为 Blocks。

操作输出

Link Issues 操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
输出消息

关联问题操作可能会返回以下输出消息:

输出消息 消息说明

Successfully linked issue ISSUE_ID with the following issues in Jira: ISSUE_IDS.

操作无法在 Jira 中找到以下目标问题:ISSUE_IDS。

操作成功
Error executing action "Link Issues". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭证。

脚本结果

下表列出了使用关联问题操作时脚本结果输出的值:

脚本结果名称 值
success true 或 false

列出问题

使用列出问题操作,根据特定过滤条件搜索并检索 Jira 问题键列表。

此操作有助于识别与提醒上下文匹配的现有工单,以避免重复或在 playbook 中执行批量更新。

此操作不会在 Google SecOps 实体上运行。

操作输入

列出问题操作提供以下可选过滤参数。 如果未提供任何参数,该操作会返回集成用户可访问的所有问题。

参数 说明
Project Names

可选。

要搜索的项目名称的逗号分隔列表。

Summary

可选。

如果提供,该操作会按特定摘要或标题过滤问题。

Description

可选。

如果提供,该操作会按说明中包含的文本过滤问题。

Issue Types

可选。

以英文逗号分隔的问题类型列表(例如 Bug,Task)。

默认值为 Bug。

Priorities

可选。

要按优先级过滤的逗号分隔列表(例如 High,Medium)。

Created From

可选。

如果提供,该操作会过滤在此日期(格式为 YYYY/MM/DD)当天或之后创建的问题。

Updated From

可选。

如果提供,该操作会过滤在此日期(格式为 YYYY/MM/DD)当天或之后更新的问题。

Assignees

可选。

要过滤依据的受让人标识符的英文逗号分隔列表。

Reporter

可选。

要过滤依据的报告者标识符的英文逗号分隔列表。

Statuses

可选。

要过滤依据的问题状态的英文逗号分隔列表(例如 Open,In Progress)。

Created Before

可选。

要作为过滤条件的最晚创建日期。格式:YYYY/MM/DD 或相对偏移量(例如 -24h、-7d)。如果未提供,则不会使用过滤条件。

Custom JQL

可选。

自定义 JQL 查询。如果提供此过滤条件,系统将忽略所有其他过滤条件。

操作输出

列出问题操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了使用列出问题操作时收到的 JSON 结果输出:

[ 
  "PR-123", 
  "PR-124",
  "SEC-789"
]
脚本结果

下表列出了使用列出问题操作时脚本结果输出的值:

脚本结果名称 值
issues 一个列表,其中包含找到的 Jira 问题的唯一简写键。

列出关系类型

使用列出关系类型操作可检索 Jira 实例中配置的所有可用链接关系类型的列表。

此操作对于验证关联问题操作的有效输入值非常有用。

此操作不会在 Google SecOps 实体上运行。

操作输入

列出关系类型操作需要以下参数:

参数 说明
Filter Key

可选。

用于过滤关系类型的字段。

如果过滤逻辑设置为 Equal 或 Contains,则必须选择 Select One 以外的字段,以避免执行错误。

可能的值如下:

  • Name
  • Inward
  • Outward

默认值为 Select One。

Filter Logic

可选。

应用于过滤条件的逻辑运算符。

可能的值如下:

  • Not Specified
  • Equal
  • Contains

默认值为 Not Specified。

Filter Value

可选。

用于根据所选 Filter Key 和 Filter Logic 进行过滤的特定字符串值。

如果未提供任何值,则即使选择了键和逻辑,也不会应用过滤条件。

Max Records To Return

可选。

结果中返回的记录数上限。

默认值为 50。

操作输出

列出关系类型操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
案例墙表格

列出关系类型操作提供下表:

表名称:Available Relation

表列:

  • 名称
  • 向内
  • 向外
JSON 结果

以下示例展示了使用列出关系类型操作时收到的 JSON 结果输出:

[{
    "id": "10000",
    "name": "Blocks",
    "inward": "is blocked by",
    "outward": "blocks"
}]
输出消息

列出关系类型操作可以返回以下输出消息:

输出消息 消息说明

Successfully found relation types for the provided criteria in Jira.

The filter was not applied, because parameter "Filter Value" has an empty value.

操作成功。
Error executing action "List Relation types". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭证。

脚本结果

下表列出了使用列出关系类型操作时脚本结果输出的值:

脚本结果名称 值
is_success true 或 false

Ping

使用 Ping 操作测试与 Jira 的连接。

此操作不会在 Google SecOps 实体上运行。

操作输入

无。

操作输出

Ping 操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
脚本结果

下表列出了使用 Ping 操作时脚本结果输出的值:

脚本结果名称 值
success true 或 false

更新问题

说明

更新问题。对于新的 Jira API,该操作会尝试根据用户电子邮件地址查找受让人匹配项,以分配问题,然后尝试使用 displayName 字段。

参数

参数 类型 默认值 为必填项 说明
问题键 字符串 不适用 是 要更新的问题的键。
状态 字符串 不适用 否 指定相关的转换名称,以便将此问题转换为所需的新状态。
摘要 字符串 不适用 否 问题的新摘要。
说明 字符串 不适用 否 问题的新说明。
问题类型 字符串 不适用 否 问题的新类型。
分配对象 字符串 不适用 否 问题的新分配对象。
Jira 用户名 字符串 不适用 否 操作发起者的 Jira 用户名。
组件 字符串 不适用 否

问题的组件字段。

此参数接受以逗号分隔的字符串形式的多个值。

自定义字段 JSON 不适用 否

指定一个 JSON 对象,其中包含在创建问题期间使用的所有字段和值。

注意:此参数具有优先级,所有字段都会被为此参数提供的值覆盖。

示例:{"field":"value"}

标签 字符串 不适用 否

问题的组件字段。

此参数接受以逗号分隔的字符串形式的多个值。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
成功 True/False Success:False
JSON 结果
{
   "comment":
     {
       "total": 0,
       "startAt": 0,
       "comments": [],
       "maxResults": 0
      },
   "creator":
     {
       "displayName": "user1",
       "name": "user1",
       "self": "",
       "avatarUrls":
          {
            "24x24": "",
            "16x16": "",
            "48x48": "",
            "32x32": ""
           },
        "emailAddress": "john_doe@example.com",
        "key": "user1user",
        "active": true,
        "timeZone": "Asia/Jerusalem",
        "accountId": "0"
       },
   "aggregatetimeestimate": null,
   "labels": ["Label1"],
   "aggregatetimespent": null,
   "watches":
      {
        "self": "",
        "watchCount": 1,
        "isWatching": false
       },
   "assignee":
      {
        "displayName": "user2",
        "name": "user2",
        "self": "",
        "avatarUrls":
           {
              "24x24": "",
              "16x16": "",
              "48x48": "",
              "32x32": ""
            },
        "emailAddress": "john_doe@example.com",
        "key": "user2",
        "active": true,
        "timeZone": "Asia/Jerusalem",
        "accountId": ""
       },
   "lastViewed": "2019-01-22T10:14:02.910+0200",
   "issuelinks": [],
   "Worklog":
      {
        "worklogs": [],
        "total": 0,
        "startAt": 0,
        "maxResults": 20
       },
   "aggregateprogress":
      {
        "progress": 0,
        "total": 0
       },
   "Priority":
      {
        "iconUrl": "",
        "self": "",
        "name": "Medium",
        "id": "3"
       },
   "votes":
       {
          "hasVoted": false,
          "self": "",
          "votes": 0
        },
   "workratio": -1,
   "fixVersions": [],
   "environment": null,
   "timespent": null,
   "attachment":
      [{
          "mimeType": "binary/octet-stream",
          "created": "2018-06-19T15:23:07.369+0300",
          "self": "",
          "author":
             {
               "displayName": "user1",
               "name": "user1",
               "self": "",
               "avatarUrls":
                  {
                     "24x24": "",
                     "16x16": "",
                     "48x48": "",
                     "32x32": ""
                   },
               "emailAddress": "john_doe@example.com",
               "key": "user1",
               "active": true,
               "timeZone": "Asia/Jerusalem",
               "accountId": "0"
              },
           "filename": "file.rar",
           "content": "",
           "id": "0",
           "size": 0
        }],
   "progress":
        {
          "progress": 0,
          "total": 0
         },
   "duedate": null,
   "status":
        {
          "statusCategory":
              {
                 "name": "Done",
                 "self": "",
                 "id": 3,
                 "key": "done",
                 "colorName": "green"
               },
          "description": "",
          "self": "",
          "iconUrl": "",
          "id": "0",
          "name": "DONE"
         },
   "updated": "2018-09-18T10:02:06.347+0300",
   "subtasks": [],
   "description": "Create Enrich entities action using Insights API (IOC search)\\n\\nWrite connector for laerts\\n\\nIn a couple of days we will have access to an instance",
   "reporter":
         {
           "displayName": "user1",
           "name": "user1",
           "self": "",
           "avatarUrls":
               {
                 "24x24": "",
                 "16x16": "",
                 "48x48": "",
                 "32x32": ""
               },
           "emailAddress": "john_doe@example.com",
           "key": "user1",
           "active": true,
           "timeZone": "Asia/Jerusalem",
           "accountId": "0"
          },
    "timeoriginalestimate": null,
    "aggregatetimeoriginalestimate": null,
    "created": "2018-06-19T15:23:13.701+0300",
    "versions": [],
    "resolutiondate": "2018-09-18T10:02:06.340+0300",
    "summary": "Sample issue",
    "project":
          {
             "name": "Project 1",
             "self": "",
             "projectTypeKey": "software",
             "avatarUrls":
                 {
                   "24x24": "",
                   "16x16": "",
                   "48x48": "",
                   "32x32": ""
                  },
             "key": "PR",
             "id": "0"
           },
    "timetracking": {},
    "components": [],
    "issuetype":
          {
             "name": "Task",
             "self": "",
             "iconUrl": "",
             "subtask": false,
             "avatarId": 10318,
             "id": "10002",
             "description": "A task that needs to be done."
           },
    "security": null,
    "resolution":
           {
             "id": "10000",
             "self": "",
             "description": "Work has been completed on this issue.",
              "name": "Done"
             },
    "timeestimate": null
}

上传附件

说明

为问题添加附件。

参数

参数 类型 默认值 为必填项 说明
问题键 字符串 不适用 是 文件路径。
文件路径 字符串 不适用 是

要上传的文件的绝对路径,以英文逗号分隔。

所需格式取决于您的部署类型:

  • SaaS 部署:路径是托管平台的内部路径,例如 /attachments/。
  • 远程代理部署:路径必须是安装了远程代理的本地机器上的绝对有效目录路径。例如,C:\temp\attachments(对于 Windows)或 /var/tmp/attachments/(对于 Linux)。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
N/A

搜索用户

在 Jira 中搜索用户。

实体

此操作不会对实体执行。

操作输入

如需配置操作,请使用以下参数:

参数
User Email Addresses 可选

以英文逗号分隔的电子邮件地址列表,用于返回相应用户。

User Names 可选

要返回其用户的用户名列表(以英文逗号分隔)。

Project 可选

要在其中搜索电子邮件地址的项目名称。如果提供,则仅返回 Project Assignable Users。

操作输出

操作输出类型
案例墙附件 不适用
案例墙链接 不适用
案例墙表格 不适用
丰富化表 不适用
JSON 结果 可用
脚本结果 可用
脚本结果
脚本结果名称 值
is_success True/False
JSON 结果
[
 {
   "Entity": "example",
   "EntityResult": {
     "_resource": "user?accountId={0}",
     "_options": {
       "server": "https://siemplify.atlassian.net",
       "auth_url": "/rest/auth/1/session",
       "context_path": "/",
       "rest_path": "api",
       "rest_api_version": "2",
       "agile_rest_path": "agile",
       "agile_rest_api_version": "1.0",
       "verify": false,
       "resilient": true,
       "async": false,
       "async_workers": 5,
       "client_cert": null,
       "check_update": false,
       "delay_reload": 0,
       "headers": {
         "Cache-Control": "no-cache",
         "Content-Type": "application/json",
         "X-Atlassian-Token": "no-check"
       }
     },
     "_session": "<jira.resilientsession.ResilientSession object>",
     "_base_url": "{server}/rest/{rest_path}/{rest_api_version}/{path}",
     "raw": {
       "self": "https://siemplify.atlassian.net/rest/api/2/user?accountId=example-account-id",
       "accountId": "example-account-id",
       "accountType": "atlassian",
       "emailAddress": "example.user",
       "avatarUrls": {
         "48x48": "https://example.com"
       },
       "displayName": "Example",
       "active": true,
       "timeZone": "UTC",
       "locale": "en_US"
     },
     "self": "https://siemplify.atlassian.net/rest/api/2/user?accountId=example-account-id",
     "accountId": "example-account-id",
     "accountType": "atlassian",
     "emailAddress": "example.user",
     "avatarUrls": "<jira.resources.PropertyHolder object>",
     "displayName": "Example",
     "active": true,
     "timeZone": "UTC",
     "locale": "en_US"
   }
 }
]
案例墙

该操作会提供以下输出消息:

输出消息 消息说明

Successfully found the following users in Jira for project PROJECT_NAME: USER_LIST

The following users were not found in Jira for project PROJECT_NAME: USER_LIST

None of the provided users were found in the project PROJECT_NAME

操作成功。
Error executing action "Search Users". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭证。

关闭原因映射配置

Closed Reason Mapping 参数需要 JSON 结构。您可以映射静态值或传递动态 Jira 字段名称(例如 resolution、customfield_10010)。如果提取的动态原因无效或缺失,作业会自动使用指定的 Fallback 映射。

JSON 配置示例:

{
  "Done": {
    "reason": "Maintenance",
    "root_cause": "Other"
  },
  "Fallback": {
    "reason": "Maintenance",
    "root_cause": "Other"
  }
}

连接器

Jira 连接器

说明

将问题从 Jira 提取到 Google SecOps。

在 Google SecOps 中配置 Jira 连接器

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

连接器参数

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

参数 说明
DeviceProductField

必填。

用于确定设备产品的字段名称。

默认值为 device_product。

EventClassId

可选。

用于确定事件名称(子类型)的字段名称。

默认值为 name。

PythonProcessTimeout

必填。

运行当前脚本的 Python 进程的超时限制(以秒为单位)。

默认值为 60。

API Root

必填。

Jira 实例的 API 根。

默认值为 https://{jira_address}。

Username

可选。

用于连接到 Jira 的用户名(电子邮件地址)。

此参数的要求取决于所选的身份验证方法:

  • 如果提供,系统会使用基本身份验证。
  • 如果留空,系统会默认使用不记名令牌身份验证(服务账号必须使用此身份验证)。

如需详细了解身份验证方法,请参阅准备工作。

API Token

必填。

用于连接到 Jira 的身份验证凭证。

Days Backwards

可选。

提取提醒的最长回溯天数。

默认值为 5。

Max Tickets Per Cycle

可选。

一个连接器周期内可提取和处理的工单数上限。

默认值为 10。

Project Names

可选。

项目名称,以英文逗号分隔。

Issue Statuses

可选。

问题状态,以英文逗号分隔。

Assignees

可选。

用户的全名,以英文逗号分隔。

Issue Types

可选。

问题类型,以英文逗号分隔。

Issue Priorities

可选。

问题优先级,以英文逗号分隔。

Issue Components

可选。

问题组成部分,以英文逗号分隔。

Proxy Server Address

可选。

要使用的代理服务器的地址。

Proxy Username

可选。

用于进行身份验证的代理用户名。

Proxy Password

可选。

用于进行身份验证的代理密码。

Environment Field Name

可选。

描述存储环境名称的字段的名称。如果未找到环境字段,则环境为默认环境。

默认值为 ""。

Environment Regex Pattern

可选。

要对“环境字段名称”字段中找到的值运行的正则表达式模式。用于允许用户使用正则表达式逻辑来操纵环境字段。

默认值为 .*。

Use Jira Project as Environment

可选。

使用 Jira 项目作为环境,或使用环境字段名称作为环境。

Verify SSL

必填。

如果选中此选项,集成会在连接到 Jira 服务器时验证 SSL 证书。

默认处于启用状态。

连接器规则

代理支持

连接器支持代理。

动态列表和屏蔽清单

该连接器仅支持 Jira 中特定标签的动态许可清单和屏蔽清单规则。

作业

同步关闭作业

说明

如果相应的 Google SecOps 提醒或案例已关闭,则关闭 Jira 中的工单,并将关闭状态和自定义字段从 Jira 同步回 Google SecOps。

参数

参数 说明
API Root

必填。

Jira 实例 API 根网址。

默认值为 https://{jira_address}。

Username

可选。

用于连接到 Jira 的用户名(电子邮件地址)。

此参数的要求取决于所选的身份验证方法:

  • 如果提供,系统会使用基本身份验证。
  • 如果留空,系统会默认使用不记名令牌身份验证(服务账号必须使用此身份验证)。
API Token

必填。

用于连接到 Jira 的身份验证凭证。

Project Names

必填。

作业应监控的 Jira 项目名称,以英文逗号分隔。

默认值为 project names separated by a comma。

Environment

可选。

环境名称。

Days Backwards

必填。

同步工单状态的最长天数。

默认值为 1。

Job Scope

必填。

作业同步的范围。选项:

  • Case:在支持请求级别同步 Jira 问题。确保上下文包含 JIRA_ISSUE_KEY。
  • Alert:在提醒级别同步 Jira 问题。对于连接器创建的案例,系统会自动提取 Jira 工单键。对于模拟的支持请求,请手动将上下文键设置为 JIRA_ISSUE_KEY。

默认值为 Alert。

Supported Closed Statuses

必填。

以逗号分隔列表形式的 Jira 关闭状态,这些状态在 Google SecOps 中被视为已关闭(例如 Done, Closed)。

  • SecOps 到 Jira:该作业在关闭 Jira 工单时,会使用列表中的第一个值(例如 Done)作为解决状态。
  • Jira 到 SecOps:Jira 工单的关闭状态必须存在于此列表中,才能进行同步。

默认值为 Done。

Closed Reason Mapping

必填。

JSON 字典,用于将 Jira 关闭状态映射到 Google SecOps 关闭原因和根本原因。支持映射到自定义字段,并且需要一个强制性 Fallback 键。如需了解配置详情和示例,请参阅关闭原因和自定义字段映射。

Custom Fields Mapping

可选。

JSON 对象,用于定义 Google SecOps 自定义字段显示名称与 Jira 自定义字段名称之间的映射,以便将数据从 Jira 同步到 Google SecOps。如需了解配置详情和示例,请参阅关闭原因和自定义字段映射。

关闭原因和自定义字段映射

请参考以下详细信息和示例,为关闭原因和自定义字段配置自定义映射。

关闭原因映射

定义 Jira 关闭状态如何映射到 Google SecOps 案例或提醒关闭原因和根本原因。

  • 标准 JSON 映射示例:

    {
      "Done": {
        "reason": "Malicious",
        "root_cause": "Other"
      },
      "Fallback": {
        "reason": "Maintenance",
        "root_cause": "Other"
      }
    }
    

    如果 Jira 工单以 Done 状态关闭,则 Google SecOps 案例或提醒会以原因 Malicious 和根本原因 Other 关闭。如果工单关闭时的状态未明确映射(例如 Closed),系统会默认采用 Fallback 设置。

  • 自定义字段映射示例:

    如果您在 Jira 中有名为 Jira reason 和 Jira rootcause 的自定义字段,请按如下方式配置 JSON 映射:

    {
      "Done": {
        "reason": "Jira reason",
        "root_cause": "Jira rootcause"
      },
      "Fallback": {
        "reason": "Maintenance",
        "root_cause": "Other"
      }
    }
    

    要求:

    • 从 Jira reason 自定义字段中提取的值必须解析为以下确切字符串之一:Malicious、Maintenance、Inconclusive 或 Not malicious。否则,系统会还原为 Fallback 值。
    • 对于 Case 作业范围,必须在管理员设置中配置根本原因值。对于 Alert 作业范围,无需进行管理员配置,并且系统会接受在自定义字段中提供的任何值。

自定义字段映射

此映射仅用于将自定义字段值从 Jira 同步到 Google SecOps。指定键值对,其中键是 Google SecOps 自定义字段显示名称,值是 Jira 自定义字段名称:

{
  "SOAR Custom field": "Jira ticket id"
}

在此示例中,Jira 字段 Jira ticket id 中的值会直接同步到 Google SecOps 字段 SOAR Custom field。

同步评论作业

说明

在 Google SecOps 案例与相应的 Jira 工单之间同步评论。同步是双向的,即从 Google SecOps 到 Jira,以及从 Jira 到 Google SecOps。

当作业创建评论时,会应用该前缀。如果 Google SecOps 用户在 Google SecOps 案例中发表评论,该作业会使用 Chronicle Comment Prefix 参数在相应的 Jira 工单中创建并同步用户评论。

添加此功能有两个目的:

  1. 公开范围。
  2. 防止作业添加的评论再次同步到另一端,从而导致循环。

参数

参数 说明
API Root

必填。

Jira 实例 API 根网址。

默认值为 https://{jira_address}。

Username

可选。

用于连接到 Jira 的用户名(电子邮件地址)。

此参数的要求取决于所选的身份验证方法:

  • 如果提供,系统会使用基本身份验证。
  • 如果留空,系统会默认使用不记名令牌身份验证(服务账号必须使用此身份验证)。
API Token

必填。

用于连接到 Jira 的身份验证凭证。

Project Names

必填。

作业应监控的 Jira 项目名称,以英文逗号分隔。

默认值为 project names separated by comma。

Environment

可选。

环境名称。

Siemplify Comment Prefix

必填。

同步作业为 Jira 工单创建的评论添加的前缀。

默认值为 Google SecOps:。

Jira Comment Prefix

必填。

同步作业添加到 Google SecOps 提醒案例评论的前缀。

默认值为 Jira Comment Sync Job:。

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