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。
- 打开剧本的权限设置。
- 确保将 AdministratorSOC 角色添加到具有可以编辑权限的实体列表中。
 
- 调整源系统上的权限后,在 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 专业人士那里获得解答。
