Google Cloud Storage

本文提供指南,說明如何將 Cloud Storage 與 Google Security Operations 的 SOAR 模組整合。

這項整合功能使用一或多個開放原始碼元件。 您可以從 Cloud Storage bucket 下載這項整合的原始碼副本。

用途

在 Google SecOps SOAR 平台中,Google Cloud Storage 整合功能可解決下列用途:

  • 事件證據儲存:應對手冊可自動收集事件相關證據 (例如記錄和惡意軟體樣本),並儲存在 Cloud Storage 值區中,提供防竄改的證據保存儲存庫。

  • 分享威脅情報:您的安全團隊可以使用 Cloud Storage,與其他團隊或機構安全地分享威脅情報動態消息,例如惡意 IP 位址和網域清單。分享動態消息可促進合作防禦威脅,並加快回應速度。

  • 整合惡意軟體分析沙箱:應對手冊可自動將事件中的可疑檔案提交至雲端惡意軟體分析沙箱。您可以將分析結果儲存在 Cloud Storage 中,以供檢閱及採取進一步行動,提供有效率且可擴充的惡意軟體分析。

  • 備份安全設定:使用 Google SecOps 的 SOAR 功能,自動定期將重要安全設定 (例如防火牆規則和入侵偵測系統簽章) 備份到 Cloud Storage。自動備份可確保業務持續運作,並在發生意外或惡意變更時,加快復原速度。

  • 網路釣魚攻擊活動構件儲存:調查網路釣魚攻擊活動時,使用 Google SecOps 的 SOAR 功能,將網路釣魚電子郵件、附件和其他構件儲存在 Cloud Storage 中。構件儲存空間可集中分析及保存證據,以備採取法律行動。

事前準備

在 Google SecOps 中設定 Cloud Storage 整合功能前,請先完成下列必要步驟:

  1. 建立服務帳戶

  2. 將必要角色授予服務帳戶

  3. 選擇並設定驗證方式

建立服務帳戶

如要建立服務帳戶,請完成下列步驟:

  1. 前往 Google Cloud 控制台的「憑證」頁面。 前往「憑證」

  2. 在「建立憑證」選單中,選取「服務帳戶」

  3. 在「Service account name」(服務帳戶名稱) 欄位中輸入名稱,然後按一下「Create and continue」(建立並繼續)

  4. 按一下「繼續」>「完成」,略過選用的角色指派和主體存取畫面。

將角色授予服務帳戶

如要讓整合服務存取及管理儲存空間 bucket 和物件,請將必要角色授予服務帳戶:

  1. 在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理)>「IAM」(身分與存取權管理)

  2. 找出服務帳戶,然後按一下「Edit principal」(編輯主體)

  3. 按一下「Add another role」(新增其他角色),然後選取下列項目:

    • 儲存管理員:具備值區和物件的完整控制權。

    • 服務使用情形消費者:只有在您使用 Quota Project ID 做為帳單用途時,才需要這個角色。

  4. 按一下 [儲存]

選擇並設定驗證方式

建議使用 Workload Identity 做為驗證方法,因為這項功能會使用短期有效權杖,而非靜態密鑰。

  1. JSON 金鑰:依賴靜態密鑰檔案。

  2. Workload Identity (建議):使用臨時存取權杖。

設定 JSON 金鑰

請按照下列程序,以 JSON 格式產生服務帳戶金鑰檔案:

  1. 在 Google Cloud 控制台中選取服務帳戶,然後前往「金鑰」

  2. 依序點選「新增金鑰」>「建立新的金鑰」

  3. 選取「JSON」,然後按一下「建立」。金鑰檔案會下載到電腦。

設定 Workload Identity 憑證

Google SecOps 可透過 Workload Identity 安全地模擬您的服務帳戶。請按照下列步驟設定 Workload Identity。

設定整合執行個體

如要觸發身分探索程序,請先在 Google SecOps 中設定基本連線參數:

  1. 前往「內容中心」>「回覆整合」

  2. 搜尋並選取「Google Cloud Storage」整合服務。

  3. 設定下列必要參數:

    • API 根目錄:輸入基準網址 (例如 https://storage.googleapis.com)。

    • Workload Identity 電子郵件地址:輸入您先前建立的服務帳戶電子郵件地址。

    • 驗證 SSL:確認已啟用這項功能。

  4. 將「User's Service Account」(使用者服務帳戶) (JSON) 欄位留空。

  5. 按一下 [儲存]

找出專屬身分識別電子郵件地址

如要找出特定身分位址,請觸發連線測試,因為 Google SecOps 會使用特定內部主體與 Google Cloud 資源通訊。這個步驟可確保您將權限授予正確的後端主體。

  1. 按一下「測試」。測試預計會失敗。

  2. 按一下「測試」旁的 close_small 按鈕。

  3. 搜尋錯誤訊息中以 gke-init-python@...soar-python@... 開頭的電子郵件地址。複製這個專屬電子郵件地址。

授予模擬權限

如要建立信任關係,必須授權給專屬身分,代表服務帳戶執行動作。最後一個步驟是建立安全橋接器,讓整合服務使用短期臨時權杖存取資源。

  1. 在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理)>「Service Accounts」(服務帳戶)

  2. 選取目標服務帳戶,然後前往「權限」

  3. 按一下「授予存取權」

  4. 在「New principals」(新增主體) 欄位中,貼上您從 Google SecOps 複製的專屬身分電子郵件地址。

  5. 在「指派角色」欄位中,選取「Service Account Token Creator(roles/iam.serviceAccountTokenCreator) 角色。

  6. 按一下 [儲存]

將 Cloud Storage 與 Google SecOps 整合

整合需要下列參數:

參數 說明
Service Account 選填

服務帳戶 JSON 金鑰檔案的完整內容。

Workload Identity Email 選用。

用於 Workload Identity 模擬的服務帳戶用戶端電子郵件地址。

Project ID 選用

用於 Cloud Storage 整合的專案 ID。如未設定這個參數的值,系統會從 Service Account 參數提供的 JSON 檔案內容中擷取專案 ID。

Quota Project ID 選用

您用於 Google Cloud API 和帳單的專案 ID。 Google Cloud 如要使用這個參數,您必須將 Service Usage Consumer 角色授予服務帳戶。

如未提供值,系統會從 Service Account 參數提供的 JSON 檔案內容中擷取專案 ID。

如需在 Google SecOps 中設定整合功能的操作說明,請參閱「設定整合功能」。

如有需要,您可以在稍後階段進行變更。設定整合執行個體後,您就可以在應對手冊中使用該執行個體。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。

動作

如要進一步瞭解動作,請參閱「 從工作台回覆待處理動作」和「執行手動動作」。

從 bucket 下載物件

使用這項動作,從 Cloud Storage bucket 下載特定物件 (檔案)。

這項操作不會對實體執行。

動作輸入內容

「從 bucket 下載物件」動作需要下列參數:

參數 說明
Bucket Name 必要

包含要下載物件的 Cloud Storage 值區名稱。

Object Name 必要

要下載的物件全名。

如果物件位於值區的資料夾中,請加入資料夾路徑,例如 folderA/mydocument.pdf

Download Path 必要

下載物件的絕對路徑,指向現有目錄,例如 /tmp/downloads/

動作輸出內容

「從 bucket 下載物件」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼結果 可用
JSON 結果

以下範例說明使用「從值區下載物件」動作時收到的 JSON 結果輸出內容:

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

在案件總覽頁面中,「從 bucket 下載物件」動作會提供下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

檢查伺服器的連線、輸入參數或憑證。

指令碼結果

下表說明使用「從 Bucket 下載物件」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success TrueFalse

取得 Bucket 的存取控制清單

使用「Get a Bucket's Access Control List」動作,擷取並顯示指定 Cloud Storage bucket 的 ACL。

這項操作不會對實體執行。

動作輸入內容

「Get a Bucket's Access Control List」動作需要下列參數:

參數 說明
Bucket Name 必要

您要擷取 ACL 的 Cloud Storage bucket 名稱。如要擷取多個 bucket 的 ACL,請以半形逗號分隔 bucket 名稱,例如 bucket1,bucket2,bucket3

動作輸出內容

「取得 Bucket 的存取控制清單」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 無法使用
輸出訊息 可用
指令碼結果 可用
JSON 結果
[
  {"BucketName": "ziv",
   "BucketACLs": [
                  {"Entity": "project-owners-ID",
                   "Role": "OWNER"}
                 ]
  }
]
輸出訊息

在 Case Wall 中,「Get a Bucket's Access Control List」動作會提供下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

檢查伺服器的連線、輸入參數或憑證。

指令碼結果

下表說明使用「取得 Bucket 的存取控制清單」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success TrueFalse

列出 Bucket 物件

使用「列出 Bucket 物件」動作,列出儲存在 Cloud Storage bucket 中的物件。

這項操作不會對實體執行。

動作輸入內容

List Bucket Objects 動作需要下列參數:

參數 說明
Bucket Name 必要

要從中擷取物件的值區名稱。

Max Objects to Return 選用

要傳回的物件數量。

根據預設,每次執行動作時,動作會傳回 50 個物件。

Retrieves the Access Control List of an object 選用

如果選取這個動作,系統會擷取物件 ACL。

預設為未選取。

動作輸出內容

「列出 Bucket 物件」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼結果 可用
JSON 結果

下列範例說明使用「列出 Bucket 物件」動作時收到的 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"
                    }]
            },
        ]
    }
    
輸出訊息

在案件牆上,「列出 Bucket 物件」動作會提供下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

檢查伺服器的連線、輸入參數或憑證。

指令碼結果

下表說明使用「列出 Bucket 物件」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success TrueFalse

列出 bucket

使用「列出 bucket」動作,從 Cloud Storage 擷取 bucket 清單。

這項操作不會對實體執行。

動作輸入內容

List Buckets 動作需要下列參數:

參數 說明
Max Results 選用

要傳回的值區數量上限。

根據預設,這項動作會傳回 50 個值區。

動作輸出內容

「列出 Bucket」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼結果 可用
JSON 結果

以下範例說明使用「列出 Bucket」動作時收到的 JSON 結果輸出內容:

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

在案件牆上,「列出 Bucket」動作會提供下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

檢查伺服器的連線、輸入參數或憑證。

指令碼結果

下表說明使用「列出 Bucket」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success TrueFalse

乒乓

使用 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

從 Bucket 移除公開存取權

使用「Remove Public Access From Bucket」(從 bucket 移除公開存取權) 動作,從 Cloud Storage bucket 移除公開存取權。

如要執行這項動作,您必須將 Storage Admin 角色授予整合服務中使用的服務帳戶。

這項操作不會對實體執行。

動作輸入內容

「Remove Public Access From Bucket」動作需要下列參數:

參數 說明
Resource Name 必要

值區的資源名稱。

Prevent Public Access From Bucket 必要

選取後,這項動作會將 bucket 設為禁止公開存取。

動作輸出內容

「Remove Public Access From Bucket」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 無法使用
輸出訊息 可用
指令碼結果 可用
輸出訊息

在案件總覽中,「從 bucket 移除公開存取權」動作會提供下列輸出訊息:

輸出訊息 訊息說明
Successfully removed public access from bucket using Google Cloud Storage: RESOURCE_NAME 動作成功。
Error executing action "Remove Public Access From Bucket". Reason: ERROR_REASON

動作失敗。

檢查伺服器的連線、輸入參數或憑證。

指令碼結果

下表說明使用「Remove Public Access From Bucket」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success TrueFalse

更新 Bucket 的 ACL 項目

使用「更新 Bucket 的 ACL 項目」動作,更新指定 Cloud Storage Bucket 中的 ACL 項目。

動作輸入內容

「更新 Bucket 的 ACL 項目」動作需要下列參數:

參數 說明
Bucket Name 必要

要修改 ACL 的值區名稱。

Entity 必要

擁有權限的實體。

可能的值如下:

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

如要進一步瞭解實體,請參閱「資源表示法」。

Role 必要

實體所需的存取權限。

可用的值如下:

  • OWNER
  • READER
  • WRITER

動作輸出內容

「更新 Bucket 的 ACL 項目」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 無法使用
輸出訊息 可用
指令碼結果 可用
輸出訊息

在案件牆上,「Update an ACL entry on Bucket」動作會提供下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

檢查伺服器的連線、輸入參數或憑證。

指令碼結果

下表說明使用「Update an ACL entry on Bucket」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success TrueFalse

將物件上傳至 bucket

使用「Upload an Object To a Bucket」(將物件上傳至 bucket) 動作,將物件上傳至 Cloud Storage bucket。

這項操作不會對實體執行。

動作輸入內容

「將物件上傳至 Bucket」動作需要下列參數:

參數 說明
Bucket Name 必要

要上傳物件的值區名稱。

Source File Path 必要

要上傳檔案的絕對路徑,例如 /local/path/to/filename

Object Name 必要

值區中上傳物件的名稱。

動作輸出內容

「Upload an Object To a Bucket」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
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"
}
輸出訊息

在案件牆上,「Upload an Object To a Bucket」動作會提供下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

檢查伺服器的連線、輸入參數或憑證。

指令碼結果

下表說明使用「將物件上傳至 Bucket」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success TrueFalse

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。