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 控制台的「Credentials」(憑證)。前往「憑證」

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

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

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

將角色授予服務帳戶

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

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

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

  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 憑證

Workload Identity 可讓 Google SecOps 安全地模擬您的服務帳戶。請完成下列步驟,設定 Workload Identity。

設定整合執行個體

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

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

  2. 搜尋並選取「Google Cloud Storage」整合項目。

  3. 設定下列必填參數:

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

    • 「Workload Identity Email」(Workload Identity 電子郵件):輸入先前建立的服務帳戶電子郵件地址。

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

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

  5. 按一下 [儲存]。

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

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

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

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

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

授予模擬權限

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

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

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

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

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

  5. 在「Assign roles」(指派角色) 欄位中,選取「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 bucket 名稱。

Object Name 必要

要下載的物件完整名稱。

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

Download Path 必要

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

動作輸出內容

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

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

以下範例說明使用「Download an Object From a Bucket」動作時收到的 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 True或False

取得 Bucket 的存取控管清單

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

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

動作輸入內容

「取得 Bucket 的存取控制清單」動作需要下列參數:

參數 說明
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 上,「取得值區的存取控管清單」動作會提供下列輸出訊息:

輸出訊息 訊息說明

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://docs.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

動作失敗。

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

指令碼執行結果

下表說明使用「Get a Bucket's Access Control List」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

列出 Bucket 物件

使用「List Bucket Objects」動作,列出儲存在 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 結果

下列範例說明使用「List Bucket Objects」動作時,收到的 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

動作失敗。

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

指令碼結果

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

指令碼結果名稱 值
is_success True或False

列出 bucket

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

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

動作輸入內容

「列出 Bucket」動作需要下列參數:

參數 說明
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"
        }]
}
輸出訊息

在案件總覽上,「列出值區」動作會提供下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

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

指令碼結果

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

指令碼結果名稱 值
is_success True或False

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 True或False

移除 Bucket 的公開存取權

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

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

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

動作輸入內容

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

參數 說明
Resource Name 必要

bucket 的資源名稱。

Prevent Public Access From Bucket 必要

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

動作輸出內容

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

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

在案件總覽中,「Remove Public Access From Bucket」動作會提供下列輸出訊息:

輸出訊息 訊息說明
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 True或False

更新 Bucket 的 ACL 項目

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

動作輸入內容

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

參數 說明
Bucket Name 必要

要修改 ACL 的 bucket 名稱。

Entity 必要

擁有權限的實體。

可能的值如下:

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

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

Role 必要

實體所需的存取權限。

可用的值如下:

  • OWNER
  • READER
  • WRITER

動作輸出內容

「Update an ACL entry on Bucket」動作會提供下列輸出內容:

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

在案件牆上,「更新 Bucket 的 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

動作失敗。

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

指令碼結果

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

指令碼結果名稱 值
is_success True或False

將物件上傳至 bucket

使用「將物件上傳至 bucket」動作,將物件上傳至 Cloud Storage bucket。

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

動作輸入內容

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

參數 說明
Bucket Name 必要

要將物件上傳至的值區名稱。

Source File Path 必要

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

Object Name 必要

上傳到 bucket 的物件名稱。

動作輸出內容

「將物件上傳至 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 True或False

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