GitSync
GitSync 是由 Google Security Operations SOAR 专业服务团队构建的强大集成,旨在将 Google Security Operations SOAR 组件与 Git 代码库同步。它使用 Git 的内部操作直接写入代码库本身,实际上使其充当文件存储服务。它提供了一些方法来执行以下操作:
在 Google Security Operations SOAR 实例之间迁移资产
备份 Google Security Operations SOAR 资产
自动生成文档
创建用于分享素材资源/知识的“商店”
版本控制
该集成包含多个 Google Security Operations SOAR 作业 - 每个受支持的资产的推送和拉取作业,以及整个 Google Security Operations SOAR 实例的推送/拉取作业。这些作业不需要定期运行,因为它们是为从 IDE 手动运行而构建的,但也可以用作常规作业(例如,上传每日提交)。
GitSync 将使用 Google Security Operations SOAR API 来提取相关资产(例如集成或视觉系列),并解析该资产中的所有可用信息(此信息稍后将呈现到 README.md 文件中,该文件通常在浏览代码库时显示)。然后,它会将资源 JSON 定义和呈现的 README 写入本地代码库,并将其推送到远程代码库。
GitSync 的另一个用途是知识共享。通过此集成,Git 代码库可以充当资产(例如之前设计的 playbook 或本体设置)的“存储区”,并利用 Google Security Operations SOAR 最佳实践将平台性能发挥到极致。
前提条件
推送/拉取现有代码库:
向 Git 进行身份验证的方法。支持用户名/密码组合(不推荐)、访问令牌(推荐)和经过 base64 编码的 SSH 私钥(推荐)。如果使用后两种方法,则无需提供 username 参数。
本地 Google Security Operations SOAR 用户。用于导入素材资源。此用户必须有权写入目标模块(例如,没有 IDE 访问权限的用户将无法拉取集成)。
创建新代码库
之前在“推送/拉取现有代码库”中提及的所有要点。
远程代码库。建议代码库中至少包含 1 个文件。大多数 Git 服务在创建代码库时都提供创建 README 文件的选项。
配置集成
您必须将集成配置为共享实例。无法将其连接到 Google SecOps SOAR 中的现有环境。
集成属性
参数名称 | 说明 |
代码库网址 | 代码库网址。使用用户名/密码身份验证时,此值必须以 https:// 开头。如果使用 SSH 身份验证,此值必须以 git@ 或 ssh:// 开头。(请参阅下文的“配置代码库网址和分支”)。 |
分支 | 要同步的代码库中的分支。 |
Git 密码/令牌/SSH 密钥 | 向 Git 进行身份验证的方法。此值可以是 Git 密码/令牌/SSH 私钥。私钥应采用 base64 编码。支持 RSA 和 Ed25519。 |
Git 用户名 | Git 用户名。使用 SSH 身份验证时,此值不是必需的。 |
提交作者 |
非强制性。提供指定提交作者的功能。此值必须采用以下格式:用户名 |
Google Security Operations SOAR 验证 SSL | 验证 Google Security Operations SOAR API 的 SSL |
Git 验证 SSL | 验证与目标 Git 服务的 SSL 连接 |
配置代码库网址和分支
在本指南中,我们将演示如何在 Bitbucket 中获取正确的值(请注意,在 GitHub 中执行的流程相同)。
在 Bitbucket 中找到相应代码库。
点击右上角的“克隆”按钮(GitHub 中的代码)
用户/密码或令牌身份验证 - 代码库网址为 https://bitbucket.org/siemplifyproserv/connectors.git。(用户名可以忽略)
检查当前分支(下图中的 master)
用法示例
GitSync 中的每个作业都包含以下参数:
名称 | 说明 |
特定于作业 - 连接器名称、集成标识符、剧本许可名单等。 | 这些参数用于指定要推送到代码库或从代码库拉取的内容。在 GitSync 中,资产通过其标识符引用。这些值区分大小写。 |
代码库网址和分支 | 添加了对使用相同凭据的多个代码库的支持。设置这些参数后,系统会忽略集成实例中配置的代码库。 |
提交消息 | 将素材资源推送到代码库时,必须为提交添加消息。您可以在此处指定推送原因,指明对相应资源进行了哪些修复、更改或添加。 |
Readme 插件 | 添加了在推送时扩展资产文档的功能。在此值中,您可以使用:
模板会添加到文档末尾,并保存在代码库根目录的元数据文件 GitSync.json 中。 |
提取资源
在此示例中,我们将拉取具有正确映射和视觉系列的连接器。
- 首先,确保相应资源位于已配置的代码库中。只需浏览代码库目录并复制资源标识符(通常是目录名称或 README 文件的标题)。
来自 Bitbucket 中代码库的示例,位于 Connectors 目录中。请注意,目录是集成名称,其中包含连接器的实际标识符。 在 Google Security Operations SOAR IDE 中找到合适的工作。在此示例中,我们将使用作业拉取连接器。
注意:拉取连接器时,请验证连接器的集成是否也已安装。
点击“测试”标签页,然后配置参数。由于我们使用的是一个代码库,并且已在集成实例中配置该代码库,因此我们将“代码库网址”和“分支”参数留空,并将其他参数设置为所需的值。
运行该作业。
请参阅调试输出,了解操作的日志。如果一切顺利,日志会指明这一点。
- 前往 Google Security Operations SOAR -> 连接器,然后配置连接器。
推送资产
在此示例中,我们将向代码库推送 playbook 和块。
确定要推送的 playbook。在此处,我们将推送一个名为“登录失败”的新模块和一个名为“恶意活动”的更新版剧本。
在 Google Security Operations SOAR IDE 中找到合适的工作。在此示例中,我们将使用作业“推送 Playbook”。
点击“测试”标签页,然后配置参数。
- 由于两者位于同一文件夹(默认)中,您也可以改用文件夹许可名单。
运行该作业。
请参阅调试输出,了解操作的日志。如果一切顺利,日志会指明这一点。
验证该代码库是否包含最新版本的 playbook。
创建新代码库
若要创建新代码库,只需注意一点,即在通过 GitSync 配置代码库之前,先在代码库中添加一个文件。在创建代码库时,只需在代码库的根目录中添加一个 README 文件即可快速完成此操作。
Bitbucket

GitHub

已知问题和限制
首次设置代码库后,它会使用预定义的目录结构,以确保知道每个素材资源的位置。如果未能遵循包含自定义提交或代码库更改的目录结构,集成功能将无法正常运行。您可以在本文档末尾找到代码库目录结构的架构。
将此集成与公开代码库搭配使用时,请务必谨慎。Google Security Operations SOAR 资产使用包含应用 ID、客户端 ID、用户名和其他敏感信息的参数。GitSync 无法判断参数是否敏感,因此所有非“Password”类型的参数都会上传到代码库。此外,在推送 Google Security Operations SOAR 实例(推送环境作业)时,可以选择提交密码。此选项会指示 GitSync 尝试从集成配置中导出所有密码参数。如果代码库是公开的,请勿将此值设置为 true,否则所有凭据都会泄露到网上。
拉取 Google Security Operations SOAR 实例(拉取环境作业)时,安装所有集成可能需要 5 分钟以上的时间,并且作业会因超时而失败。建议您预先从 Google Security Operations Marketplace 手动安装所有商业集成,以避免出现任何问题,但如果作业因超时而失败,也可以重新运行该作业。
商业集成和自定义集成的处理方式有所不同。自定义集成将作为集成的完整 ZIP 导出内容推送,以用于导入/导出操作。商业集成将仅通过自定义代码推送。拉取完成后,GitSync 将从 Google SecOps Marketplace 安装最新版本的集成,并将自定义代码保存在官方集成中。
提取映射时,在事件实际注入到 Google Security Operations SOAR 中之前,这些映射不会显示在“设置”->“本体”->“本体状态”表格中,因为它们尚未编入索引。
本地代码库保存在 /opt/siemplify/siemplify_server/GitSyncFiles/{RepoName} 中。由于集成写入的是 Git 对象而非文件,因此此文件夹并不代表代码库,并且在每次执行作业时都会被所做的任何更改覆盖。建议使用代码库的另一个克隆版本,而不是由 GitSync 创建的版本。
如果 playbook 的权限受限(例如,默认权限设置为可查看),则需要在源系统上进行特定的权限配置,才能通过 GitSync 成功同步。如需了解详情,请参阅使用剧本权限。
Google SecOps 支持使用 GitSync 备份 SOAR 资产。不过,Google SecOps 不支持使用 GitSync 在系统之间 *分发* SOAR 资产。这可能会导致意外结果,因为数据库对象可能不是唯一的。
使用 playbook 权限
如果使用 GitSync 同步权限受限的 playbook(例如,默认权限设置为可查看或其他非默认设置),则目标系统可能会因缺少修改 playbook 的授权而遇到错误。这是因为 GitSync 使用具有 Administrator
SOC 角色的内部系统 API 密钥来执行操作。为确保成功同步具有受限权限的 playbook,请在源系统上为这些 playbook 授予 Administrator
SOC 角色的可修改权限。
启用 GitSync 以拉取权限受限的 playbook
- 在源系统上:
- 前往您打算与 GitSync 同步的 playbook。
- 打开剧本的权限设置。
- 确保将
Administrator
SOC 角色添加到具有可以编辑权限的实体列表中。
- 调整源系统上的权限后,在 GitSync 中执行 Push Playbook 操作,以使用 playbook 及其权限更新 Git 代码库。
- 在目标系统上,在 GitSync 中执行 Pull Playbook 操作。
创建要与 GitSync 搭配使用的 SSH 密钥
首先,生成密钥对。当系统要求输入口令时,按 Enter 键:
ssh-keygen -b 2048 -t rsa -f ./id_rsa
系统将创建两个文件:id_rsa(私钥)和 id_rsa.pub(公钥)。请将私钥保存在安全的位置。
在代码库中设置公钥。例如,在 Bitbucket 中,输入代码库的设置,然后点击“访问密钥”。点击“添加密钥”,然后将 id_rsa.pub 的内容粘贴到“密钥”参数中。
在将私钥添加到集成配置之前,应先将其编码为 Base64。
使用以下命令对文件进行编码:
- Linux:
cat id_rsa | base64 -w 0
- Windows:
打开 id_rsa 所在的 PowerShell,然后粘贴(这是一行):
Write-Output [System.Text.Encoding]::ASCII.GetString([convert]::ToBase64String(([IO.File]::ReadAllBytes((Join-Path (pwd) 'id_rsa')))))
- Linux:
- 将输出的值复制到集成属性“密码/令牌/SSH 密钥”,然后测试集成连接。
GitSync 代码库目录结构
以下是远程代码库中的预期目录结构。
* 这是示例代码库的 tree 命令输出。注释以红色显示。


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