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 中执行的流程相同)。


  1. 在 Bitbucket 中找到相应代码库。

    gitsync1

  2. 点击右上角的“克隆”按钮(GitHub 中的代码)

    • SSH 身份验证 - 代码库网址为 git@bitbucket.org:siemplifyproserv/connectors.git

      gitsync2

  3. 用户/密码或令牌身份验证 - 代码库网址为 https://bitbucket.org/siemplifyproserv/connectors.git。(用户名可以忽略)

    gitsync3

  4. 检查当前分支(下图中的 master)

    gitsync4

用法示例

GitSync 中的每个作业都包含以下参数:


名称

说明

特定于作业 - 连接器名称、集成标识符、剧本许可名单等。

这些参数用于指定要推送到代码库或从代码库拉取的内容。在 GitSync 中,资产通过其标识符引用。这些值区分大小写。

代码库网址和分支

添加了对使用相同凭据的多个代码库的支持。设置这些参数后,系统会忽略集成实例中配置的代码库。

提交消息

将素材资源推送到代码库时,必须为提交添加消息。您可以在此处指定推送原因,指明对相应资源进行了哪些修复、更改或添加。

Readme 插件

添加了在推送时扩展资产文档的功能。在此值中,您可以使用:

  • Markdown 语法 - 受 GitHub 和 Bitbucket 等 Git 提供商的 README 文件支持

  • Jinja - 用于显示有关资产的信息。请参阅集成管理器常量中的示例

模板会添加到文档末尾,并保存在代码库根目录的元数据文件 GitSync.json 中。


提取资源

在此示例中,我们将拉取具有正确映射和视觉系列的连接器。

  1. 首先,确保相应资源位于已配置的代码库中。只需浏览代码库目录并复制资源标识符(通常是目录名称或 README 文件的标题)。
    gitsync5

    来自 Bitbucket 中代码库的示例,位于 Connectors 目录中。请注意,目录是集成名称,其中包含连接器的实际标识符。
  2. 在 Google Security Operations SOAR IDE 中找到合适的工作。在此示例中,我们将使用作业拉取连接器。

    • 注意:拉取连接器时,请验证连接器的集成是否也已安装。

  3. 点击“测试”标签页,然后配置参数。由于我们使用的是一个代码库,并且已在集成实例中配置该代码库,因此我们将“代码库网址”和“分支”参数留空,并将其他参数设置为所需的值。

  4. 运行该作业。

  5. 请参阅调试输出,了解操作的日志。如果一切顺利,日志会指明这一点。

  6. 前往 Google Security Operations SOAR -> 连接器,然后配置连接器。


推送资产

在此示例中,我们将向代码库推送 playbook 和块。

  1. 确定要推送的 playbook。在此处,我们将推送一个名为“登录失败”的新模块和一个名为“恶意活动”的更新版剧本。

    gitsync7

  2. 在 Google Security Operations SOAR IDE 中找到合适的工作。在此示例中,我们将使用作业“推送 Playbook”。

  3. 点击“测试”标签页,然后配置参数。

  4. 由于两者位于同一文件夹(默认)中,您也可以改用文件夹许可名单。
  5. 运行该作业。

  6. 请参阅调试输出,了解操作的日志。如果一切顺利,日志会指明这一点。

  7. 验证该代码库是否包含最新版本的 playbook。


创建新代码库

若要创建新代码库,只需注意一点,即在通过 GitSync 配置代码库之前,先在代码库中添加一个文件。在创建代码库时,只需在代码库的根目录中添加一个 README 文件即可快速完成此操作。
Bitbucket

gitsync8

GitHub

gitsync9

已知问题和限制

  • 首次设置代码库后,它会使用预定义的目录结构,以确保知道每个素材资源的位置。如果未能遵循包含自定义提交或代码库更改的目录结构,集成功能将无法正常运行。您可以在本文档末尾找到代码库目录结构的架构。

  • 将此集成与公开代码库搭配使用时,请务必谨慎。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

  1. 在源系统上:
    1. 前往您打算与 GitSync 同步的 playbook。
    2. 打开剧本的权限设置。
    3. 确保将 Administrator SOC 角色添加到具有可以编辑权限的实体列表中。
  2. 调整源系统上的权限后,在 GitSync 中执行 Push Playbook 操作,以使用 playbook 及其权限更新 Git 代码库。
  3. 在目标系统上,在 GitSync 中执行 Pull Playbook 操作。

创建要与 GitSync 搭配使用的 SSH 密钥

  1. 首先,生成密钥对。当系统要求输入口令时,按 Enter 键: ssh-keygen -b 2048 -t rsa -f ./id_rsa

    系统将创建两个文件:id_rsa(私钥)和 id_rsa.pub(公钥)。请将私钥保存在安全的位置。

  2. 在代码库中设置公钥。例如,在 Bitbucket 中,输入代码库的设置,然后点击“访问密钥”。点击“添加密钥”,然后将 id_rsa.pub 的内容粘贴到“密钥”参数中。

  3. 在将私钥添加到集成配置之前,应先将其编码为 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')))))
  4. 将输出的值复制到集成属性“密码/令牌/SSH 密钥”,然后测试集成连接。

GitSync 代码库目录结构

以下是远程代码库中的预期目录结构。

* 这是示例代码库的 tree 命令输出。注释以红色显示。


gitsync10

gitsync11

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