Google Cloud API

本文档提供了一些指导,可帮助您配置Google Cloud API 并将其与 Google Security Operations SOAR 集成。

集成版本:4.0

将 Google Cloud API 与 Google SecOps SOAR 集成

集成需要以下参数:

参数 说明
Test URL 可选

用于验证对 Google Cloud API 的身份验证的测试网址。此参数使用 GET 请求。

Service Account Json File Content 可选

服务账号密钥 JSON 文件的内容。

您可以配置此参数、Workload Identity Email 参数,也可以设置所有前面的积分参数。

如需配置此参数,请提供您在创建服务账号时下载的服务账号密钥 JSON 文件的完整内容。

如需详细了解如何将服务账号用作身份验证方法,请参阅服务账号概览服务账号模拟

在此集成中,使用服务账号密钥 JSON 文件进行身份验证的优先级高于工作负载身份电子邮件地址。

Organization ID 可选

要在集成中使用的组织 ID。

如需在执行操作期间从此参数检索值,请设置以下占位符:{{org_id}}

Project ID 可选

集成中要使用的项目 ID。

如需在操作执行期间从此参数中检索值,请设置以下占位符:{{project_id}}

Quota Project ID 可选

您用于 Google Cloud API 和结算的 Google Cloud 项目 ID。此参数要求您向服务账号授予 Service Usage Consumer 角色。

集成会将此参数值附加到所有 API 请求。

如果您未为此参数设置值,集成会从您的 Google Cloud 服务账号中检索项目 ID。

Workload Identity Email 可选

您的服务账号的客户端电子邮件地址。

您可以配置此参数或 Service Account Json File Content 参数。

在此集成中,使用服务账号密钥 JSON 文件进行身份验证的优先级高于工作负载身份电子邮件地址。

如需使用 Workload Identity 模拟服务账号,请向您的服务账号授予 Service Account Token Creator 角色。如需详细了解工作负载身份以及如何使用它们,请参阅工作负载的身份

OAuth Scopes 可选

执行 Google Cloud API 请求所需的 OAuth 范围列表(以英文逗号分隔)。

Verify SSL 必需

如果选中此选项,集成会验证用于连接到 Google Cloud 服务的 SSL 证书是否有效。

此选项将会默认选中。

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

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

操作

如需详细了解操作,请参阅 在工作台页面中处理待处理的操作执行手动操作

执行 HTTP 请求

使用执行 HTTP 请求操作来构建和执行针对目标网址的自定义 HTTP API 请求。

此操作不适用于 Google SecOps 实体。

操作行为

此操作支持复杂的行为,包括异步轮询、动态载荷构建和文件管理。

异步轮询

如果提供 Expected Response Values,则操作以异步模式运行。在此模式下,操作会反复轮询目标端点,以跟踪响应的状态(例如,等待长时间运行的任务完成)。

该操作会根据参数中提供的 JSON 条件评估响应正文,并继续执行,直到满足条件或操作达到超时时间。

条件逻辑

该操作支持以下用于跟踪响应状态的逻辑:

  • 单字段匹配:操作会等待特定字段达到单个值。

    {
      "state": "finished"
    }
    
  • 多个值(OR 逻辑):如果某个字段与所提供列表中的任何值匹配,则操作会停止执行。这对于在“成功”和“错误”状态下停止以避免不必要的轮询非常有用。

    {
      "state": ["finished", "error"]
    }
    
  • 多个字段(AND 逻辑):操作会等待,直到所有指定字段同时与其各自的值匹配。

    {
      "state": "finished",
      "percentage": "100"
    }
    
  • 组合逻辑:您可以在 JSON 对象中组合多个条件。

    {
      "state": ["finished", "error"],
      "percentage": "10"
    }
    
JSON 解析行为

在评估条件时,操作遵循以下规则:

  • 全局搜索:该操作会在整个 JSON 响应对象中搜索指定的键。提供键名称时,请确保其与 JSON 中的名称完全一致,并且不添加父对象名称或使用前缀(例如,使用 "state",而不是 "data_state""data-state")。

  • 多个相同的键:如果响应在 JSON 层次结构的不同级别包含多个具有相同名称的键,则只有当所有匹配的键名称都满足相同的预期值时,才能获得预期的输出。

    例如,如需在 JSON 响应中搜索 finished 状态并忽略其他状态,请将 Expected Response Values 中的所有 state 键设置为 finished

    {
    "data": {
      "state": "finished"
      },
      "state": "finished"
    }
    
正文载荷构建

该操作会根据 Headers 中提供的 Content-Type 标头构建请求正文。

以下构造示例使用的 Body Payload 输入如下:

{
  "Id": "123123",
  "sorting": "asc"
}
  • application/x-www-form-urlencoded:该操作会生成载荷,如 Id=123123&sorting=asc 所示。

  • application/json:该操作会生成以下 JSON 载荷:

    {
      "Id": "123123",
      "sorting": "asc"
    }
    
  • XML:如果第三方产品需要 XML,请直接在 Body Payload 中提供 XML 格式的输入:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="[http://schemas.xmlsoap.org/soap/envelope/](http://schemas.xmlsoap.org/soap/envelope/)">
    <soap:Body>
      <NumberToWords xmlns="[http://www.dataaccess.com/webservicesserver/](http://www.dataaccess.com/webservicesserver/)">
        <ubiNum>500</ubiNum>
      </NumberToWords>
    </soap:Body>
    </soap:Envelope>
    
文件处理

该操作支持以下文件管理工作流:

  • 下载文件

    • 如需以 base64 格式返回文件数据作为 JSON 结果的一部分,请选择 Base64 Output

    • 如需将文件直接保存到支持请求墙作为 ZIP 归档文件,请选择 Save To Case Wall

  • 上传文件:如需上传文件,请将其转换为 base64 编码的字符串,并将其作为 Body Payload 值的一部分包含在内。

    以下示例展示了如何将图片文件转换为 base64 编码的字符串:

    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
    
  • 安全性:对于敏感文件(例如恶意软件),请选择 Password Protect Zip。这会自动使用密码 infected 对使用 Save To Case Wall 创建的已保存 ZIP 归档进行加密。

playbook 块配置

以下配置演示了如何在 playbook 块中使用 Execute HTTP Request 操作。通过此示例,您可以了解如何应用占位符和输入前缀。

将块输入用作占位符时,您必须添加 Input. 前缀(例如 [Input.comment])。

  • 方法PUT

  • 网址路径

    https://{API_URL}/[Input.table_name]/[Input.sys_id]
    
  • 标头

    {
      "Content-type": "application/json; charset=utf-8",
      "Accept": "application/json",
      "User-Agent": "GoogleSecops"
    }
    
  • 正文载荷

    {
      "work_notes": "[Input.comment]"
    }
    

操作输入

执行 HTTP 请求操作需要以下参数:

参数 说明
Method 可选

要在请求中使用的方法。

默认值为 GET

可能的值包括:
  • GET
  • POST
  • PUT
  • PATCH
  • DELETE
  • HEAD
  • OPTIONS
URL Path 可选

要执行的网址。

默认值为 https://

URL Params 可选

网址参数。

该操作会使用与您在 网址 路径参数中直接提供的值一起提供的任何值。

此参数需要 JSON 对象格式的输入。默认值如下:

{
    "URL Field Name": "URL_FIELD_VALUE"
    }
Headers 可选

要在 HTTP 请求中使用的标头。

此参数需要 JSON 对象格式的输入。默认值如下:

{
    "Content-Type": "application/json; charset=utf-8",
    "Accept": "application/json",
    "User-Agent" : "GoogleSecOps"
    }
Cookie 可选

要在 Cookie 标头中使用的参数。

此参数会覆盖 Headers 参数中提供的 Cookie。

此参数需要 JSON 对象格式的输入。默认值如下:

{
    "Cookie_1": "COOKIE_1_VALUE"
    }
Body Payload
可选

HTTP 请求的正文。该操作会根据 Headers 参数中提供的 Content-Type 标头值构建不同的载荷。

此参数需要 JSON 对象格式的输入,除非第三方产品需要 XML 或 multipart/form-data 内容。如果您使用 API 请求提交或上传文件,请在 Body Payload 参数中提供文件的 base64 编码版本,并将标头设置为 "Content-type": "multipart/form-data"

默认值如下:

{
    "Body Field Name": "BODY_FIELD_VALUE"
    }
Expected Response Values

可选。

包含定义响应正文所需状态的字段-值对的 JSON 对象。

Save To Case Wall 可选

如果选择此选项,系统会保存文件,并将保存的文件附加到支持请求墙上。该文件已归档,扩展名为 .zip.zip 文件未受密码保护。

默认情况下未选中。

Password Protect Zip 可选

如果选择此操作,则会使用 Save To Case Wall 参数为创建的 .zip 文件添加密码。密码如下:infected

处理可疑文件时,请使用此参数。

此选项将会默认选中。

Follow Redirects 可选

如果选中,则操作会遵循重定向。

此选项将会默认选中。

Fail on 4xx/5xx 可选

如果选择此项,当响应的状态代码为 4xx 或 5xx 错误时,相应操作会失败。

此选项将会默认选中。

Base64 Output 可选

如果选择此项,相应操作会将响应转换为 base64 格式。

下载文件时使用此参数。

JSON 结果的大小不得超过 15 MB。

默认情况下未选中。

Fields To Return 必需

要返回的字段。可能的值如下:

  • response_data
  • redirects
  • response_code
  • response_cookies
  • response_headers
  • apparent_encoding
Request Timeout 必需

在操作失败之前等待服务器发送数据的时长。

默认值为 120 秒。

操作输出

执行 HTTP 请求操作提供以下输出:

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

以下示例描述了使用执行 HTTP 请求操作时收到的 JSON 结果输出:

{
   "response_data": {
       "data": {
           "relationships": {
               "comment": [
                   {
                       "name": "item",
                       "description": "Object to which the comment belongs to."
                   },
                   {
                       "name": "author",
                       "description": "User who wrote the comment."
                   }
               ]
           }
       }
   },
   "redirects": [],
   "response_code": 200,
   "cookies": {},
   "response_headers": {
       "Content-Type": "application/json",
       "X-Cloud-Trace-Context": "VALUE",
       "Date": "Fri, 03 Nov 2023 16:14:13 GMT",
       "Server": "Google Frontend",
       "Content-Length": "36084"
   },
   "apparent_encoding": "ascii"
}
输出消息

执行 HTTP 请求操作提供以下输出消息:

输出消息 消息说明

Successfully executed API request.

Successfully executed API request, but the status code {4xx/5xx} was returned. Please check the request or try again later.

操作成功。
Failed to execute API request. Error: ERROR_REASON

操作失败。

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

脚本结果

下表介绍了使用执行 HTTP 请求操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

Ping

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

此操作不适用于 Google SecOps 实体。

操作输入

无。

操作输出

Ping 操作提供以下输出:

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

以下示例介绍了使用 Ping 操作时收到的 JSON 结果输出:

{
"endpoint": "TEST_URL"
}
输出消息

Ping 操作提供以下输出消息:

输出消息 消息说明
Successfully tested connectivity. 操作成功。
Failed to test connectivity.

操作失败。

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

脚本结果

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

脚本结果名称
is_success TrueFalse

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