Google Cloud Storage

本文档提供了有关如何将 Cloud Storage 与 Google Security Operations 的 SOAR 模块集成的指南。

集成版本:9.0

此集成使用一个或多个开源组件。 您可以从 Cloud Storage 存储桶下载此集成的源代码副本。

使用场景

在 Google SecOps SOAR 平台中,Google Cloud Storage 集成可解决以下使用场景:

  • 事件证据存储:剧本可以自动收集与事件相关的证据(例如日志和恶意软件样本)并将其存储在 Cloud Storage 存储分区中,从而提供一个防篡改的证据保留库。

  • 威胁情报共享:您的安全团队可以使用 Cloud Storage 与其他团队或组织安全地共享威胁情报 Feed,例如恶意 IP 地址和网域列表。共享 Feed 可实现协作式威胁防御,并缩短响应时间。

  • 恶意软件分析沙盒集成:剧本可以自动将突发事件中的可疑文件提交到基于云的恶意软件分析沙盒。您可以将分析结果存储在 Cloud Storage 中,以便查看和采取进一步行动,从而提供高效且可伸缩的恶意软件分析。

  • 安全配置备份:使用 Google SecOps 的 SOAR 功能,自动将防火墙规则和入侵检测系统签名等关键安全配置定期备份到 Cloud Storage。自动执行备份可确保业务连续性,并在发生意外或恶意更改时更快地恢复数据。

  • 网络钓鱼活动工件存储:在调查网络钓鱼活动时,使用 Google SecOps 的 SOAR 功能将网络钓鱼电子邮件、附件和其他工件存储在 Cloud Storage 中。制品存储空间可用于集中分析和保存证据,以备日后可能采取的法律行动。

准备工作

如需使用此集成,您需要拥有 Google Cloud 服务账号。您可以使用现有服务账号,也可以创建新服务账号。

创建服务账号

  1. 如需有关创建服务账号的指南,请参阅创建服务账号

  2. 向此服务账号授予对项目的访问权限下,向您的服务账号授予以下角色:

    • Storage Admin
  3. 如果您不在 Google Cloud上运行工作负载,则需要在创建服务账号后创建 JSON 格式的服务账号密钥。如果您不使用 Workload Identity Federation for GKE 电子邮件地址,则需要在配置集成参数时提供下载的 JSON 文件的内容。

    出于安全考虑,我们建议您使用 Workload Identity Federation for GKE 电子邮件地址,而不是服务账号 JSON 密钥。如需详细了解工作负载身份,请参阅工作负载的身份

将 Cloud Storage 与 Google SecOps 集成

集成需要以下参数:

参数 说明
Service Account 可选

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

您可以配置此参数或 Workload Identity Email 参数。

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

Workload Identity Email 可选

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

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

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

Project ID 可选

用于 Cloud Storage 集成的项目 ID。如果您未为此参数设置任何值,系统会从 Service Account 参数中提供的 JSON 文件内容检索项目 ID。

Quota Project ID 可选

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

如果您未为此参数设置任何值,系统会从 Service Account 参数中提供的 JSON 文件内容检索项目 ID。

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

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

操作

对于使用访问权限控制列表 (ACL) 的操作,您可以指定访问权限并为存储桶和各个对象应用权限。如需了解详情,请参阅访问控制列表 (ACL)

从存储分区下载对象

使用此操作从 Cloud Storage 存储桶下载特定对象(文件)。

此操作不会在实体上运行。

操作输入

“从存储分区下载对象”操作需要以下参数:

参数 说明
Bucket Name 必需

包含要下载的对象的 Cloud Storage 存储桶的名称。

Object Name 必需

要下载的对象的完整名称。

如果对象位于存储桶中的某个文件夹内,请添加文件夹路径,例如 folderA/mydocument.pdf

Download Path 必需

下载对象的绝对路径,该路径指向现有目录,例如 /tmp/downloads/

操作输出

“从存储分区下载对象”操作提供以下输出:

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

以下示例描述了使用“从存储分区下载对象”操作时收到的 JSON 结果输出:

{
"object_name": "123.txt"
"download_path": "/usr/bin/share/download.txt"
}
输出消息

在案例墙上,“从存储分区下载对象”操作提供以下输出消息:

输出消息 消息说明

OBJECT_NAME successfully downloaded to DESTINATION_PATH.

Action wasn't able to download OBJECT_NAME. Reason: Bucket BUCKET_NAME not found.

Action wasn't able to download OBJECT_NAME. Reason: No such object.

操作成功。
Error executing action "Download an Object From a Bucket". Reason: ERROR_REASON

操作失败。

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

脚本结果

下表介绍了使用“从存储分区下载对象”操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

获取存储分区的访问控制列表

使用“获取存储分区的访问控制列表”操作可检索并显示指定 Cloud Storage 存储分区的 ACL。

此操作不会在实体上运行。

操作输入

“获取某个存储分区的访问控制列表”操作需要以下参数:

参数 说明
Bucket Name 必需

您要检索其 ACL 的 Cloud Storage 存储桶的名称。如需检索多个存储桶的 ACL,请以英文逗号分隔的字符串形式输入存储桶名称,例如 bucket1,bucket2,bucket3

操作输出

“获取存储分区的访问控制列表”操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
JSON 结果
[
  {"BucketName": "ziv",
   "BucketACLs": [
                  {"Entity": "project-owners-ID",
                   "Role": "OWNER"}
                 ]
  }
]
输出消息

在案例墙上,“获取分区的访问控制列表”操作会提供以下输出消息:

输出消息 消息说明

Successfully retrieved the access control list (ACL) for the Cloud Storage buckets BUCKET_NAMES

Action wasn't able to return the access control list(ACL) for the Cloud Storage buckets BUCKET_NAMES. Reason: Cannot get legacy ACL for a bucket that has uniform bucket-level access. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access

Action wasn't able to return the access control list(ACL) for the Cloud Storage buckets BUCKET_NAMES.

操作成功。
Error executing action "Get a Bucket's Access Control List". Reason: ERROR_REASON

操作失败。

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

脚本结果

下表介绍了使用“获取存储分区的访问控制列表”操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

列出存储分区对象

使用“列出存储分区对象”操作可列出存储在 Cloud Storage 存储桶中的对象。

此操作不会在实体上运行。

操作输入

“列出存储分区对象”操作需要以下参数:

参数 说明
Bucket Name 必需

要从中检索对象的存储桶的名称。

Max Objects to Return 可选

要返回的对象数量。

默认情况下,该操作每次执行都会返回 50 个对象。

Retrieves the Access Control List of an object 可选

如果选择此操作,则会检索对象 ACL。

默认情况下未选中。

操作输出

“列出存储分区对象”操作提供以下输出:

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

以下示例介绍了使用“列出存储分区对象”操作时收到的 JSON 结果输出:

  • 如果未选择 Retrieves the Access Control List of an object 参数:

    {
        "Objects": [
            {
                "ObjectName": "test.txt",
            "Bucket":
            "ContentType":
                "TimeCreated": " ",
                "TimeUpdated": " ",
                "Size": 18,
                "MD5": "7CjVfQ+Oz/C0pI08IKRdvQ==",
                "Owner": "",
                "CR32c": "RQEqxA==",
                "id": "siemplify-tip/test.txt/1604926667310271"
            }
        ]
    }
    
  • 如果选择了 Retrieves the Access Control List of an object 参数:

    {
        "Objects": [
            {
                "ObjectName": "test.txt",
            "Bucket": "BUCKET_NAME",
            "ContentType": "text/plain"
                "TimeCreated": " ",
                "TimeUpdated": " ",
                "Size": 18,
                "MD5": "7CjVfQ+Oz/C0pI08IKRdvQ==",
                "Owner": "",
                "CR32c": "RQEqxA==",
                "id": "BUCKET_NAME/test.txt/1604926667310271",
                "ObjectACL": [
                    {
                        "entity": "user@example.com",
                        "role": "OWNER"
                    }]
            },
        ]
    }
    
输出消息

在案例墙上,“列出存储分区对象”操作会提供以下输出消息:

输出消息 消息说明

Successfully returned objects of the BUCKET_NAME bucket in Google Cloud Storage.

Action wasn't able to return objects of the BUCKET_NAME bucket in Google Cloud Storage.

操作成功。
Error executing action "List Bucket Objects". Reason: ERROR_REASON

操作失败。

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

脚本结果

下表介绍了使用“列出存储分区对象”操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

列出存储分区

使用“列出存储分区”操作从 Cloud Storage 中检索存储分区列表。

此操作不会在实体上运行。

操作输入

List Buckets 操作需要以下参数:

参数 说明
Max Results 可选

要返回的存储分区数量上限。

默认情况下,该操作会返回 50 个分桶。

操作输出

“列出存储分区”操作提供以下输出:

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

以下示例描述了使用“列出存储分区”操作时收到的 JSON 结果输出:

{
    "Buckets": [
        {
            "CreationDate": "2020-11-09T12:57:03.981Z",
            "ModificationDate": "2020-11-09T12:57:03.981Z",
            "Name": "testexample",
            "Owner": "testexample"
        }]
}
输出消息

在案例墙上,“列出桶”操作提供以下输出消息:

输出消息 消息说明

Successfully listed available buckets in Google Cloud Storage.

Action wasn't able to list available buckets in Google Cloud Storage.

操作成功。
Error executing action "List Buckets". Reason: ERROR_REASON

操作失败。

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

脚本结果

下表介绍了使用“列出存储分区”操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

Ping

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

此操作不会在实体上运行。

操作输入

无。

操作输出

该操作提供以下输出:

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

在“支持请求墙”上,“Ping”操作会提供以下输出消息:

输出消息 消息说明
Successfully connected to the Google Cloud Storage server with the provided connection parameters! 操作成功。
Failed to connect to the Google Cloud Storage server! Error is ERROR_REASON

操作失败。

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

脚本结果

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

脚本结果名称
is_success TrueFalse

移除存储分区的公开访问权限

使用“移除对存储分区的公开访问权限”操作来移除对 Cloud Storage 存储桶的公开访问权限。

此操作需要您向集成中使用的服务账号授予 Storage Admin 角色。

此操作不会在实体上运行。

操作输入

“从存储分区中移除公开访问权限”操作需要以下参数:

参数 说明
Resource Name 必需

相应存储桶的资源名称。

Prevent Public Access From Bucket 必需

如果选择此操作,系统会将存储桶配置为防止可能的公开访问。

操作输出

“从存储分区中移除公开访问权限”操作提供以下输出:

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

在案例墙上,“从存储分区中移除公开访问权限”操作会提供以下输出消息:

输出消息 消息说明
Successfully removed public access from bucket using Google Cloud Storage: RESOURCE_NAME 操作成功。
Error executing action "Remove Public Access From Bucket". Reason: ERROR_REASON

操作失败。

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

脚本结果

下表介绍了使用“从存储分区中移除公开访问权限”操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

更新存储分区上的 ACL 条目

使用“更新存储分区的 ACL 条目”操作更新指定 Cloud Storage 存储桶中的 ACL 条目。

操作输入

“更新存储分区上的 ACL 条目”操作需要以下参数:

参数 说明
Bucket Name 必需

要修改 ACL 的存储桶的名称。

Entity 必需

持有相应权限的实体。

可能的值如下:

  • user-userId
  • user-emailAddress
  • group-groupId
  • group-emailAddress
  • allUsers
  • allAuthenticatedUsers

如需详细了解实体,请参阅资源表示法

Role 必需

实体所需的访问权限。

可能的值如下所示:

  • OWNER
  • READER
  • WRITER

操作输出

“更新存储分区的 ACL 条目”操作提供以下输出:

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

在支持案例墙上,“更新存储分区上的 ACL 条目”操作提供以下输出消息:

输出消息 消息说明

Action wasn't able to update the ACL entity: ENTITY to role: ROLE in bucket BUCKET_NAME. Reason: OWNERs are WRITERs.

Action wasn't able to update the ACL entity: ENTITY to role: ROLE in bucket BUCKET_NAME. Reason: OWNERs are WRITERs.

操作成功。现有角色与 Role 参数值不匹配。检查 Role 参数值。
Successfully updated ACL entity: ENTITY to role: ROLE in bucket BUCKET_NAME. 操作成功。

Error executing action "Update an ACL entry on Bucket". Reason: Entity ENTITY does not exist in the ACL of bucket BUCKET_NAME.

Action wasn't able to update the ACL entity: ENTITY to role: ROLE in bucket BUCKET_NAME. The entity holding the permission can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers.

Error executing action "Update an ACL entry on Bucket". Reason: ERROR_REASON

操作失败。

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

脚本结果

下表介绍了使用“更新桶上的 ACL 条目”操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

将对象上传到存储分区

使用“将对象上传到存储分区”操作将对象上传到 Cloud Storage 存储桶。

此操作不会在实体上运行。

操作输入

“将对象上传到存储分区”操作需要以下参数:

参数 说明
Bucket Name 必需

要将对象上传到的存储桶的名称。

Source File Path 必需

要上传的文件的绝对路径,例如 /local/path/to/filename

Object Name 必需

存储桶中已上传对象的名称。

操作输出

“将对象上传到存储分区”操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果
{
   "object_id":"BUCKET_NAME/errorlog.txt/1610616919132517",
   "Object_name":"errorlog.txt",
   "md5_hash":"PTdL8D6pBwIKyMfIXR/H9A==",
   "object_path":"/b/BUCKET_NAME/o/errorlog.txt"
}
输出消息

在 Case Wall 上,“将对象上传到存储分区”操作提供以下输出消息:

输出消息 消息说明

Successfully uploaded SOURCE_PATH to bucket: BUCKET_NAME.

Action wasn't able to upload SOURCE_PATH to Google Cloud Storage. Reason:No such file or directory: SOURCE_PATH.

操作成功。
Error executing action "Upload an Object To a Bucket". Reason: ERROR_REASON

操作失败。

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

脚本结果

下表介绍了使用“将对象上传到存储分区”操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

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