Google Cloud Storage

本文件說明如何將 Cloud Storage 與 Google Security Operations 的 SOAR 模組整合。

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

用途

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

  • 事件證據儲存空間:應對手冊可自動收集記錄和惡意軟體樣本等事件相關證據,並儲存在 Cloud Storage bucket,提供防竄改存放區來保存證據。

  • 威脅情報分享:資安團隊可使用 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. 依序點選 「Continue」(繼續) >「Done」(完成),略過選用的角色指派和主體存取權畫面。

將角色授予服務帳戶

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

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

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

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

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

    • 服務使用情形消費者:只有在您使用Quota Project ID進行計費時,才需要這個角色。

  4. 按一下 [儲存]。

選擇並設定驗證方式

Workload Identity 使用短期權杖,而非靜態密鑰,因此是建議的驗證方式。

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

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

設定 JSON 金鑰

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

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

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

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

設定 Workload Identity 憑證

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

設定整合執行個體

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

  1. 依序前往「Content Hub」 > 「Response Integrations」。

  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. 按一下「Test」(測試) 旁的 close_small 按鈕。

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

授予模擬權限

如要建立信任關係,您必須授予專屬身分權限,讓其代表服務帳戶執行操作。最後這個步驟會建立安全橋梁,讓整合服務使用臨時短期權杖存取資源。

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

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

  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 和計費的 Google Cloud 專案 ID。您必須將 Service Usage Consumer 角色授予服務帳戶,才能使用這項參數。

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

如要瞭解如何在 Google SecOps 中設定整合功能,請參閱「設定整合功能」。

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

動作

如要進一步瞭解動作,請參閱「 在工作區回應待處理動作」和「在案件中執行手動動作」。

從 bucket 下載物件

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

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

動作輸入內容

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

參數 說明
Bucket Name 必要

Cloud Storage bucket 的名稱,其中包含要下載的物件。

Object Name 必要

要下載的物件全名。

如果物件位於 bucket 內的資料夾中,請加入資料夾路徑,例如 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

動作失敗。

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

指令碼執行結果

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

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

取得 bucket 的存取控管清單

使用「取得 bucket 的存取控管清單」動作,擷取並顯示指定 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"}
                 ]
  }
]
輸出訊息

在案件牆上,「取得值區的存取控管清單」動作會提供下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

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

指令碼執行結果

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

指令碼結果名稱 值
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。

預設為未選取。

動作輸出內容

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

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

動作失敗。

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

指令碼執行結果

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

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

列出 bucket

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

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

動作輸入內容

「List Buckets」動作需要下列參數:

參數 說明
Max Results 選用

要傳回的值區數量上限。

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

動作輸出內容

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

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

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

動作失敗。

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

指令碼執行結果

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

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

乒乓

使用 Ping 動作測試與 Cloud Storage 的連線。

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

動作輸入內容

無

動作輸出內容

這項動作會提供下列輸出內容:

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

在案件總覽頁面中,連線偵測動作會提供下列輸出訊息:

輸出訊息 訊息說明
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 角色授予整合作業中使用的服務帳戶。

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

動作輸入內容

「移除 bucket 的公開存取權」動作需要下列參數:

參數 說明
Resource Name 必要

bucket 的資源名稱。

Prevent Public Access From Bucket 必要

如果選取,這項動作會設定 bucket,防止可能的公開存取。

動作輸出內容

「移除 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 True或False

更新 bucket 的 ACL 項目

使用「更新值區的 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

動作輸出內容

「更新 bucket 的 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 True或False

將物件上傳至 bucket

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

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

動作輸入內容

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

參數 說明
Bucket Name 必要

要上傳物件的值區名稱。

Source File Path 必要

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

Object Name 必要

值區中上傳物件的名稱。

動作輸出內容

「將物件上傳至 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"
}
輸出訊息

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

輸出訊息 訊息說明

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 專業人員尋求解答。