Jira
集成版本:41.0
配置 Jira 以与 Google Security Operations 搭配使用
创建 API 令牌
通过 Atlassian 账号创建 API 令牌:
- 登录您的 Atlassian 账号。
- 点击创建 API 令牌。
- 在随即显示的对话框中,为您的令牌输入一个简明易记的标签,然后点击创建。
- 点击复制到剪贴板,然后将令牌粘贴到安全的地方以进行保存。
在 Google SecOps 中配置 Jira 集成
有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成。
集成参数
使用以下参数配置集成:
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
实例名称 | 字符串 | 不适用 | 否 | 您打算为其配置集成的实例的名称。 |
说明 | 字符串 | 不适用 | 否 | 实例的说明。 |
API 根 | 字符串 | https://{jira_address} | 是 | Jira 实例的地址。 |
用户名 | 字符串 | 不适用 | 是 | 应使用哪个用户名连接到 Jira。 |
API 令牌 | 密码 | 不适用 | 是 | 在 Jira 控制台中生成的令牌。 注意:如果使用用户名和密码组合进行本地身份验证,此参数可用于包含“密码”字符串。 |
验证 SSL | 复选框 | 尚未核查 | 否 | 如果您的 Jira 连接需要 SSL 验证,请选中此复选框。 |
远程运行 | 复选框 | 尚未核查 | 否 | 选中此字段,以便远程运行配置的集成。选中后,系统会显示用于选择远程用户(客服人员)的选项。 |
操作
添加评论
说明
撰写问题评论是记录问题更多元素的有效方式,有助于您与团队成员互动。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
问题键 | 字符串 | 不适用 | 是 | 问题的 issue 键。 示例:ABC-123 |
评论 | 字符串 | 不适用 | 是 | 要添加到问题中的评论内容。 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
comment_id | 不适用 | 不适用 |
JSON 结果
N/A
分配问题
说明
将问题分配给特定用户。Jira 用户名可以是名称或电子邮件地址。对于新的 Jira API,该操作会尝试查找与受让人匹配的用户电子邮件地址,以根据该地址分配问题,然后尝试使用 displayName 字段。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
问题键 | 字符串 | 不适用 | 是 | 问题的 issue 键。 |
接收方 | 字符串 | 不适用 | 是 | 问题的新指派对象。 |
Jira 用户名 | 字符串 | 不适用 | 否 | 操作发起者的 Jira 用户名。 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
成功 | True/False | success:False |
创建提醒问题
说明
将突发事件分配给特定群组。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
项目密钥 | 字符串 | 不适用 | 是 | 要在其中创建问题的项目的键。 |
摘要 | 字符串 | 不适用 | 是 | 问题的摘要。 |
问题类型 | 字符串 | 不适用 | 是 | 问题的类型。 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
issue_key | 不适用 | 不适用 |
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
}
创建问题
说明
在项目中创建问题。Jira 用户名可以是名称或电子邮件地址。 对于新的 Jira API,该操作会尝试查找与受让人匹配的用户电子邮件地址,以根据该地址分配问题,然后尝试使用 displayName 字段。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
项目密钥 | 字符串 | 不适用 | 是 | 要在其中创建问题的项目的键。 |
摘要 | 字符串 | 不适用 | 是 | 问题的摘要。 |
说明 | 字符串 | 不适用 | 是 | 问题的说明。 |
问题类型 | 字符串 | 不适用 | 是 | 问题的类型。 |
接收方 | 字符串 | 不适用 | 否 | 问题的新指派对象。 |
Jira 用户名 | 字符串 | 不适用 | 否 | 操作发起者的 Jira 用户名。 |
组件 | 字符串 | 不适用 | 否 | 问题的“组件”字段。 此参数接受多个值,这些值以英文逗号分隔的字符串形式表示。 |
标签 | 字符串 | 不适用 | 否 | 问题的“组件”字段。 此参数接受多个值,这些值以英文逗号分隔的字符串形式表示。 |
自定义字段 | JSON | 不适用 | 否 | 指定一个 JSON 对象,其中包含在问题创建期间将使用的所有字段和值。 注意:此参数具有优先权,所有字段都会被此参数提供的值覆盖。 示例:{"field":"value"} |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
issue_key | 不适用 | 不适用 |
JSON 结果
N/A
删除问题
说明
删除问题。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
问题键 | 字符串 | 不适用 | 是 | 要删除的问题的键。 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
成功 | True/False | success:False |
JSON 结果
N/A
下载附件
说明
获取问题密钥并下载所有附件。如果其中一个文件是 EML 文件,请下载附件中的内容。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
问题键 | 字符串 | 不适用 | 是 | 问题的键。 |
下载路径 | 字符串 | 不适用 | 否 | 保存附件的路径。 |
将附件下载到案例墙 | 复选框 | 尚未核查 | 否 | 如果启用,此操作会将 Jira 问题附件下载到当前 Google SecOps 提醒的案例墙。 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
is_success | True/False | is_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
}
获取问题
说明
按键获取问题的详细信息。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
问题键 | 字符串 | 不适用 | 是 | 要提取的问题的键,以英文逗号分隔。 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
issues_details_list | True/False | issues_details_list: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
}
列出问题
说明
搜索问题。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
项目名称 | 字符串 | 不适用 | 否 | 要搜索的项目的名称,以英文逗号分隔。 |
摘要 | 字符串 | 不适用 | 否 | 要过滤的摘要。 |
说明 | 字符串 | 不适用 | 否 | 要过滤的说明。 |
问题类型 | 字符串 | 错误 | 否 | 要作为过滤依据的问题类型。 |
优先级 | 字符串 | 不适用 | 否 | 要按哪个优先级进行过滤。 |
创建自 | 字符串 | 不适用 | 否 | 要过滤的最早创建日期。 格式:YYYY/MM/DD。 |
更新自 | 字符串 | 不适用 | 否 | 要过滤的最早更新日期。 格式:YYYY/MM/DD。 |
指派对象 | 字符串 | 不适用 | 否 | 要按哪些受让人进行过滤,以英文逗号分隔。 |
报告者 | 字符串 | 不适用 | 否 | 要按哪些举报者进行过滤,以英文逗号分隔。 |
状态 | 字符串 | 不适用 | 否 | 要过滤的状态(以英文逗号分隔)。 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
问题 | True/False | 问题:False |
JSON 结果
[ "PR-123", "PR-124"]
Ping
说明
验证用户是否通过自己的设备连接到 Jira。
参数
此操作没有输入参数。
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
成功 | True/False | success:False |
JSON 结果
N/A
更新问题
说明
更新问题。对于新的 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
}
上传附件
说明
向问题添加附件。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
问题键 | 字符串 | 不适用 | 是 | 文件路径。 |
文件路径 | 字符串 | 不适用 | 是 | 要上传的文件的路径(以英文逗号分隔)。 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
is_success | True/False | is_success:False |
JSON 结果
N/A
关联问题
说明
关联 Jira 中的多个问题。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
入向问题 ID | 字符串 | 不适用 | 是 | 指定以英文逗号分隔的向内问题 ID 列表。 例如,如果关系类型为“Blocks”,则在界面中,您会看到此问题与“blocked by”关系相关联。 |
向外问题 ID | CSV | 不适用 | 是 | 指定对外问题 ID。 例如,如果关系类型为“Blocks”,则在界面中,您会看到此问题与“blocks”关系相关。 |
关系类型 | 字符串 | 区块 | 是 | 指定将用于关联多个问题的关系类型。如需查看所有可用关系类型的列表,请参阅“列出关系类型”操作。 |
运行于
此操作不会在实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
is_success | True/False | is_success:False |
JSON 结果
N/A
案例墙
结果类型 | 值 / 说明 | 类型 |
---|---|---|
输出消息* | 操作不应失败,也不应停止 playbook 执行: 如果针对某些问题报告了 201 状态代码(is_success = true):“已成功将问题 "{source issue}" 与 Jira 中的以下问题相关联:{destination issues}”。 如果针对某个问题报告了 404 状态代码和“问题不存在”错误 (is_success=true):“操作无法在 Jira 中找到以下目标问题:{未找到的 Jira 问题}”。 如果所有问题都报告了 404 状态代码和“问题不存在”错误 (is_success=false):“在 Jira 中找不到任何目标问题。” 操作应失败并停止 playbook 执行: 如果报告了致命错误(例如凭据错误、未连接到服务器、其他错误):“执行操作时出错”。原因:{0}''.format(error.Stacktrace) 如果未找到来源问题:“Error executing action”。原因:在 Jira 中找不到源问题“{source issue}”。请检查拼写。 如果状态代码为 404,且至少有一个不是“问题不存在”错误:“执行操作时出错”。原因:{error messages}。 |
常规 |
列出关系类型
说明
列出 Jira 中可用的关系类型。
参数
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
过滤键 | DDL | 选择一项 可能的值:
|
否 | 指定需要用于过滤{商品类型}的键。 |
过滤逻辑 | DDL | 未指定 可能的值:
|
否 | 指定应应用哪些过滤条件逻辑。过滤逻辑基于“过滤键”参数中提供的值运行。 |
过滤条件值 | 字符串 | 不适用 | 否 | 指定应在过滤条件中使用什么值。 如果选择“等于”,操作会尝试在结果中查找完全匹配项。 如果选择“包含”,该操作将尝试查找包含指定子字符串的结果。 如果此参数中未提供任何内容,则不会应用过滤条件。过滤逻辑基于“过滤键”参数中提供的值运行。 |
要返回的记录数上限 | 整数 | 50 | 否 | 指定要返回的记录数。如果未提供任何内容,该操作会返回 50 条记录。 |
运行于
此操作不会在实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
is_success | True/False | is_success:False |
JSON 结果
[{
"id": "10000",
"name": "Blocks",
"inward": "is blocked by",
"outward": "blocks",
"self": "http://172.30.201.69:8080/rest/api/2/issueLinkType/10000"
}]
案例墙
结果类型 | 值 / 说明 | 类型 |
---|---|---|
输出消息* | 操作不应失败,也不应停止 playbook 执行: 如果数据可用 (is_success = true):“Successfully found relation types for the provided criteria in Jira”(已成功在 Jira 中找到所提供条件的关系类型)。 如果数据不可用 (is_success=false):“在 Jira 中未找到符合所提供条件的关联类型” 如果“过滤条件值”参数为空 (is_success=true):“未应用过滤条件,因为参数‘过滤条件值’的值为空。” 操作应失败并停止 playbook 执行: 如果“过滤键”形参设置为“选择一个”,“过滤逻辑”设置为“等于”或“包含”:执行操作“{操作名称}”时出错。原因:您需要从“过滤键”参数中选择一个字段。 如果为“要返回的最大记录数”提供的值无效:“执行操作‘{action name}’时出错。原因:为“要返回的最大记录数”提供的值无效:。应提供正数"。" 如果报告了致命错误(例如凭据错误、未连接到服务器、其他错误):“Error executing action "{action name}". 原因:{0}''.format(error.Stacktrace) |
常规 |
“案例墙”表格 | 表格名称:Available Relation 表格列:
|
常规 |
搜索用户
在 Jira 中搜索用户。
实体
此操作不会在实体上运行。
操作输入
如需配置操作,请使用以下参数:
参数 | |
---|---|
User Email Addresses |
可选
要返回相应用户的电子邮件地址的列表(以英文逗号分隔)。 |
User Names |
可选
以英文逗号分隔的用户名列表,用于返回相应用户。 |
Project |
可选
要在其中搜索电子邮件地址的项目的名称。如果提供,则仅返回 |
操作输出
操作输出类型 | |
---|---|
案例墙附件 | 不适用 |
案例墙链接 | 不适用 |
“支持请求墙”表格 | 不适用 |
丰富化表 | 不适用 |
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"
}
}
]
案例墙
该操作会提供以下输出消息:
输出消息 | 消息说明 |
---|---|
|
操作成功。 |
Error executing action "Search Users".
Reason: ERROR_REASON |
操作失败。 检查与服务器的连接、输入参数或凭据。 |
连接器
Jira 连接器
说明
将问题从 Jira 提取到 Google SecOps。
在 Google SecOps 中配置 Jira 连接器
有关如何在 Google SecOps 中配置连接器的详细说明,请参阅配置连接器。
连接器参数
使用以下参数配置连接器:
参数 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
DeviceProductField | 字符串 | device_product | 是 | 用于确定设备产品的字段名称。 |
EventClassId | 字符串 | name | 否 | 用于确定事件名称(子类型)的字段名称。 |
PythonProcessTimeout | 字符串 | 60 | 是 | 运行当前脚本的 Python 进程的超时限制(以秒为单位)。 |
API 根 | 字符串 | https://{jira_address} | 是 | Jira 实例的 API 根。 |
用户名 | 字符串 | 不适用 | 是 | 不适用 |
API 令牌 | 密码 | 不适用 | 是 | 在 Jira 控制台中生成的令牌。 注意:如果使用用户名和密码组合进行本地身份验证,此参数可用于包含“密码”字符串 |
向后天数 | 整数 | 5 | 否 | 向后拉取提醒的天数上限。 |
每个周期最多可创建的工单数 | 整数 | 10 | 否 | 在一次连接器周期中提取和处理的工单数量上限。 |
项目名称 | 字符串 | 不适用 | 否 | 以英文逗号分隔的项目名称。 |
问题状态 | 字符串 | 不适用 | 否 | 以英文逗号分隔的问题状态。 |
指派对象 | 字符串 | 不适用 | 否 | 以英文逗号分隔的用户全名。 |
问题类型 | 字符串 | 不适用 | 否 | 以英文逗号分隔的问题类型。 |
问题优先级 | 字符串 | 不适用 | 否 | 以英文逗号分隔的问题优先级。 |
问题组件 | 字符串 | 不适用 | 否 | 以英文逗号分隔的问题组件。 |
代理服务器地址 | 字符串 | 不适用 | 否 | 要使用的代理服务器的地址。 |
代理用户名 | 字符串 | 不适用 | 否 | 用于进行身份验证的代理用户名。 |
代理密码 | 密码 | 不适用 | 否 | 用于进行身份验证的代理密码。 |
环境字段名称 | 字符串 | "" | 否 | 描述存储环境名称的字段的名称。 如果找不到环境字段,则环境为默认环境。 |
环境正则表达式模式 | 字符串 | .* | 否 | 要对“环境字段名称”字段中找到的值运行的正则表达式模式。 默认值为 .*,用于捕获所有内容并返回未更改的值。 用于允许用户通过正则表达式逻辑来操纵环境字段。 如果正则表达式模式为 null 或空,或者环境值为 null,则最终环境结果为默认环境。 |
连接器规则
代理支持
连接器支持代理。
动态列表和屏蔽名单
连接器仅支持 Jira 中特定标签的动态列表和屏蔽列表规则。
作业
同步关闭作业
说明
如果相应的 Google SecOps 提醒已关闭,则在 Jira 中关闭工单。
参数
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
API 根 | 字符串 | https://{jira_address} | 是 | Jira 实例 API 根网址。 |
用户名 | 字符串 | 不适用 | 是 | 用于连接到 Jira 实例的用户名。 |
API 令牌 | 密码 | 不适用 | 是 | 在 Jira 控制台中生成的令牌。 注意:如果使用用户名和密码组合进行本地身份验证,此参数可用于包含“密码”字符串 |
项目名称 | 字符串 | 以英文逗号分隔的项目名称 | 是 | 以英文逗号分隔的 Jira 项目名称,作业应监控这些项目。 |
回溯的天数上限 | 整数 | 1 | 是 | 向后同步工单状态的最大天数。 |
同步评论作业
说明
在 Google SecOps 支持请求与相应的 Jira 工单之间同步评论。同步是双向的,即从 Google SecOps 到 Jira,以及从 Jira 到 Google SecOps。
此职位仅支持带有 Jira
标记的 Google SecOps 支持请求。
作业创建评论时,会应用相应前缀。如果 Google SecOps 用户在 Google SecOps 支持请求中发表评论,该作业会使用 Chronicle 评论前缀参数在相应的 Jira 工单中创建并同步用户评论。
添加此功能有两个目的:
- 公开范围。
- 防止作业添加的评论再次同步到另一侧,从而导致循环。
参数
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
API 根 | 字符串 | https://{jira_address} | 是 | Jira 实例 API 根网址。 |
用户名 | 字符串 | 不适用 | 是 | 用于连接到 Jira 实例的用户名。 |
API 令牌 | 密码 | 不适用 | 是 | 在 Jira 控制台中生成的令牌。 注意:如果使用用户名和密码组合进行本地身份验证,此参数可用于包含“密码”字符串 |
项目名称 | 字符串 | 以英文逗号分隔的项目名称 | 是 | 作业应监控的 Jira 项目名称(以英文逗号分隔)。 |
回溯的天数上限 | 整数 | 1 | 是 | 向后同步工单状态的最大天数。 |
Google SecOps 注释前缀 | 字符串 | Google SecOps: | 是 | 同步作业添加到为 Jira 工单创建的评论中的前缀。 |
Jira 注释前缀 | 字符串 | Jira 注释同步作业: | 是 | 同步作业添加到 Google SecOps 提醒支持服务工单评论的前缀。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。