將 Security Command Center 與 Google SecOps 整合

本文說明如何將 Security Command Center 與 Google Security Operations 整合。

事前準備

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

  1. 建立自訂 Identity and Access Management 角色,並授予必要權限。

  2. 建立服務帳戶。

  3. 選擇並設定下列其中一種驗證方式:

    • 方法 1:Workload Identity (建議):這個方法會使用服務帳戶模擬功能,產生短期臨時存取權杖,因此不需要儲存任何密鑰。

    • 方法 2:服務帳戶 JSON 金鑰:這個方法會使用靜態、長期有效的密鑰檔案。只有在環境不支援 Workload Identity 時,才應使用這個方法。

建立及設定 IAM 角色

如要為整合建立及設定自訂角色,請完成下列步驟:

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

    前往「Roles」(角色)

  2. 按一下「Create role」(建立角色),建立具有整合所需權限的自訂角色。

  3. 輸入「標題」、「說明」和專屬「ID」。

  4. 將「Role Launch Stage」(角色推出階段) 設為 General Availability。

  5. 將下列權限新增至建立的角色:

    • securitycenter.assets.list
    • securitycenter.findings.list
    • securitycenter.findings.setMute
    • securitycenter.findings.setState
    • serviceusage.services.use (API 使用和配額歸因的必要資訊)
  6. 點選「建立」。

建立服務帳戶

如要為整合作業建立服務帳戶,請完成下列步驟:

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

    前往「Service Accounts」(服務帳戶)

  2. 按一下「建立服務帳戶」。

  3. 輸入名稱和說明,然後按一下「Create and continue」(建立並繼續)。

  4. 在「Grant this service account access to project」(將專案存取權授予這個服務帳戶) 步驟中,新增您建立的自訂角色。

  5. 按一下「Done」(完成),完成帳戶建立作業。在驗證設定程序中,會使用這個服務帳戶的電子郵件地址。

設定 Workload Identity 憑證

請選擇這個方法或 JSON 金鑰方法,驗證整合。Workload Identity 是建議採用的做法,安全性也較高,因為這項功能會使用服務帳戶模擬功能,產生短期臨時存取權杖,因此不需要儲存或輪替長期密鑰。

找出專屬執行個體身分

如要使用 Workload Identity,您必須授予 Google SecOps 執行個體權限,才能模擬服務帳戶。這是最後一個步驟,可讓執行個體安全存取 Google Cloud 資源。

  1. 在 Google SecOps 中,依序前往 「Content Hub」>「Response Integrations」。

  2. 選取要設定的整合項目,然後在「Workload Identity Email」欄位中輸入服務帳戶電子郵件地址。

  3. 在「Quota Project ID」欄位中輸入有效的專案 ID。

  4. 依序點選「儲存」>「測試」。測試預計會失敗。

  5. 按一下「Test」(測試) 右側的 close_small,然後在錯誤訊息中搜尋以 gke-init-python@... 或 soar-python@... 開頭的身分電子郵件。

  6. 複製這個專屬電子郵件地址。

在 Google Cloud中授權執行個體身分

取得 Google SecOps 執行個體的專屬身分後,您必須授權該執行個體存取 Google Cloud 資源。這個步驟會啟用服務帳戶模擬功能,讓平台產生短期權杖,並代表您執行操作,不需使用靜態金鑰。

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

    前往「Service Accounts」(服務帳戶)

  2. 選取目標服務帳戶,然後依序前往 「Permissions」(權限) >「Grant Access」(授予存取權)。

  3. 將不重複的電子郵件地址貼到「New principals」(新增主體) 欄位,並指派「Service Account Token Creator」(服務帳戶權杖建立者) 角色 (roles/iam.serviceAccountTokenCreator)。

授予配額專案存取權

使用 Workload Identity 進行驗證時,您必須在整合設定中指定Quota Project ID,以便追蹤 API 使用情形和帳單。

如要授權,您必須在指定的配額專案中,將下列角色授予服務帳戶:

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

    前往「IAM」(身分與存取權管理) 頁面

  2. 在主體清單中找出服務帳戶,然後按一下該帳戶的 edit (編輯主體)。

  3. 按一下「Add another role」(新增其他角色),然後選取「Service Usage Consumer」(服務使用情形消費者) (roles/serviceusage.serviceUsageConsumer)。

  4. 按一下「儲存」。

設定 JSON 金鑰

請選擇這個方法或 Workload Identity 方法來驗證整合。Workload Identity 是建議採用的做法,安全性也較高,因此只有在環境不支援 Workload Identity 時,才應使用 JSON 金鑰方法。這個方法仰賴靜態、長期有效的密鑰檔案,需要手動管理和輪替。

請按照下列程序,產生驗證整合所需的 JSON 金鑰檔案:

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

    前往「Service Accounts」(服務帳戶)

  2. 前往「金鑰」分頁。

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

  4. 選取「JSON」做為金鑰類型,然後按一下「建立」。JSON 檔案會下載到您的電腦。

  5. 複製這個檔案的完整內容,並在設定整合時貼到 User's service account。

整合參數

Security Command Center 整合功能需要下列參數:

參數 說明
API Root

必填。

Security Command Center 執行個體的 API 根目錄。

Organization ID

選填。

Google Cloud 組織的 ID,用於界定 Security Command Center 整合查詢的範圍。

Project ID

選填。

Google Cloud :用於界定 Security Command Center 執行個體查詢範圍的專案 ID。

Quota Project ID

選填。

用於 API 使用和計費的 Google Cloud 專案 ID。

如果使用 Workload Identity 進行驗證,則必須提供這個參數。

User's Service Account

選填。

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

只有在使用 JSON 金鑰進行驗證時,才需要設定這個參數。

Workload Identity Email

選填。

服務帳戶的用戶端電子郵件地址。

只有在使用 Workload Identity 進行驗證時,才需要設定這個參數。

如果設定這項參數,也必須設定 Quota Project ID。

Verify SSL

必填。

如果選取這個選項,整合功能會在連線至 Security Command Center 伺服器時驗證 SSL 憑證。

(預設為啟用)。

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

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

動作

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

取得發現項目詳細資料

使用「Get Finding Details」(取得發現項目詳細資料) 動作,擷取 Security Command Center 中發現項目的詳細資料。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「Get Finding Details」動作需要下列參數:

參數 說明
Finding Name

必填。

要傳回詳細資料的發現項目完整資源名稱,格式為 organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID。

這項參數接受多個值,請以逗號分隔。

動作輸出內容

「Get Finding Details」動作會提供下列輸出內容:

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

「Get Finding Details」動作可傳回下列資料表:

表格標題:發現項目詳細資料

表格欄:

  • 類別
  • 「State」
  • 嚴重性
  • 類型
JSON 結果

以下範例顯示使用「Get Finding Details」動作時,收到的 JSON 結果輸出內容:

{
   {
      "finding_name": "organizations/ORGANIZATION_ID/sources/2678067631293752869/findings/hvX6WwbvFyBGqPbEs9WH9m",
      "finding": {
        "name": "organizations/ORGANIZATION_ID/sources/2678067631293752869/findings/hvX6WwbvFyBGqPbEs9WH9m",
        "parent": "organizations/ORGANIZATION_ID/sources/2678067631293752869",
        "resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "state": "ACTIVE",
        "category": "Discovery: Service Account Self-Investigation",
        "sourceProperties": {
          "sourceId": {
            "projectNumber": "PROJECT_ID",
            "customerOrganizationNumber": "ORGANIZATION_ID"
          },
          "detectionCategory": {
            "technique": "discovery",
            "indicator": "audit_log",
            "ruleName": "iam_anomalous_behavior",
            "subRuleName": "service_account_gets_own_iam_policy"
          },
          "detectionPriority": "LOW",
          "affectedResources": [
            {
              "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID"
            }
          ],
          "evidence": [
            {
              "sourceLogId": {
                "projectId": "PROJECT_ID",
                "resourceContainer": "projects/PROJECT_ID",
                "timestamp": {
                  "seconds": "1622678907",
                  "nanos": 448368000
                },
                "insertId": "ID"
              }
            }
          ],
          "properties": {
            "serviceAccountGetsOwnIamPolicy": {
              "principalEmail": "prisma-cloud-serv@PROJECT_ID.iam.gserviceaccount.com",
              "projectId": "PROJECT_ID",
              "callerIp": "192.0.2.41",
              "callerUserAgent": "Redlock/GC-MDC/resource-manager/PROJECT_ID Google-API-Java-Client HTTP-Java-Client/1.34.0 (gzip),gzip(gfe)",
              "rawUserAgent": "Redlock/GC-MDC/resource-manager/PROJECT_ID Google-API-Java-Client HTTP-Java-Client/1.34.0 (gzip),gzip(gfe)"
            }
          },
          "contextUris": {
            "mitreUri": {
              "displayName": "Permission Groups Discovery: Cloud Groups",
              "url": "https://attack.mitre.org/techniques/ID/003/"
            },
            "cloudLoggingQueryUri": [
              {
                "displayName": "Cloud Logging Query Link",
                "url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%222021-06-03T00:08:27.448368Z%22%0AinsertId%3D%22ID%22%0Aresource.labels.project_id%3D%22PROJECT_ID%22?project=PROJECT_ID"
              }
            ]
          }
        },
        "securityMarks": {
          "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks"
        },
        "eventTime": "2021-06-03T00:08:27.448Z",
        "createTime": "2021-06-03T00:08:31.074Z",
        "severity": "LOW",
        "canonicalName": "projects/PROJECT_ID/sources/SOURCE_ID/findings/FINDING_ID",
        "mute": "UNDEFINED",
        "findingClass": "THREAT",
        "mitreAttack": {
          "primaryTactic": "DISCOVERY",
          "primaryTechniques": [
            "PERMISSION_GROUPS_DISCOVERY",
            "CLOUD_GROUPS"
          ]
        }
      },
      "resource": {
        "name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "projectName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "projectDisplayName": "PROJECT_ID",
        "parentName": "//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID",
        "parentDisplayName": "example.net",
        "type": "google.cloud.resourcemanager.Project",
        "displayName": "PROJECT_ID"
      }
    }
}
輸出訊息

「Get Finding Details」動作可傳回下列輸出訊息:

輸出訊息 訊息說明

Successfully returned details about the following findings in Security Command Center: FINDING_NAMES.

Action wasn't able to find the following findings in Security Command Center: FINDING_NAMES.

None of the provided findings were found in Security Command Center.

動作成功。
Error executing action "Get Finding Details". Reason: ERROR_REASON

動作失敗。

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

指令碼結果

下表列出使用「Get Finding Details」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success true或false

列出資產安全漏洞

使用「List Asset Vulnerabilities」(列出資產安全漏洞) 動作,列出 Security Command Center 中與實體相關的安全漏洞。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「List Asset Vulnerabilities」(列出資產安全漏洞) 動作需要下列參數:

參數 說明
Asset Resource Names

必填。

以半形逗號分隔的專屬 ID (完整資源名稱) 清單,用於擷取相關資料。

Timeframe

選填。

搜尋安全漏洞或設定錯誤的時間範圍。

可能的值如下:

  • Last Week
  • Last Month
  • Last Year
  • All Time

預設值為 All Time。

Record Types

選填。

要傳回的記錄類型。

可能的值如下:

  • Vulnerabilities + Misconfigurations
  • Vulnerabilities
  • Misconfigurations

預設值為 Vulnerabilities + Misconfigurations。

Output Type

選填。

每項資產的 JSON 結果中要傳回的輸出類型。

可能的值如下:

  • Statistics
  • Data
  • Statistics + Data

預設值為 Statistics。

Max Records To Return

選填。

每種記錄類型可傳回的記錄數量上限。

預設值為 100。

動作輸出內容

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

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

「List Asset Vulnerabilities」動作可傳回下列資料表:

表格標題:ASSET_ID 個安全漏洞

表格欄:

  • 類別
  • 說明
  • 嚴重性
  • 事件時間
  • CVE

表格標題:ASSET_ID 項設定錯誤

表格欄:

  • 類別
  • 說明
  • 嚴重性
  • 事件時間
  • 建議
JSON 結果

以下範例顯示使用「List Asset Vulnerabilities」(列出資產安全漏洞) 動作時,收到的 JSON 結果輸出內容:

{
   ."siemplify_asset_display_name":[1] [2]  ""
"vulnerabilities": {
        "statistics": {
            "critical": 1,
            "high": 1,
            "medium": 1,
            "low": 1,
            "undefined": 1
        },
        "data": [
            {
                "category": "CATEGORY"
                "description": "DESCRIPTION"
                "cve_id": "CVE_ID"
                "event_time": "EVENT_TIME"
                "related_references": "RELATED_REFERENCES"
                "severity": "SEVERITY"
            }
        ]
    },
    "misconfigurations": {
        "statistics": {
            "critical": 1,
            "high": 1,
            "medium": 1,
            "low": 1,
            "undefined": 1
        },
        "data": [
            {
                "category": "CATEGORY"
                "description": "DESCRIPTION"
                "recommendation": "RECOMMENDATION"
                "event_time": "EVENT_TIME"
                "severity": "SEVERITY"
            }
        ]
    },
}
輸出訊息

「List Asset Vulnerabilities」(列出資產安全漏洞) 動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明

Successfully returned related vulnerabilities and misconfigurations to the following entities in Security Command Center: ASSET_IDS.

No vulnerabilities and misconfigurations were found to the following entities in Security Command Center: ASSET_IDS.

No vulnerabilities and misconfigurations were found for the provided assets in Security Command Center.

動作成功。
Error executing action "List Asset Vulnerabilities". Reason: ERROR_REASON

動作失敗。

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

指令碼結果

下表列出使用「List Asset Vulnerabilities」(列出資產安全漏洞) 動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success true或false

乒乓

使用 Ping 動作,測試與 Security Command Center 的連線。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

無。

動作輸出內容

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

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

Ping 動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明
Successfully connected to the Security Command Center server with the provided connection parameters! 動作成功。
Failed to connect to the Security Command Center server! Error is ERROR_REASON

動作失敗。

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

指令碼結果

下表列出使用 Ping 動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success true或false

更新發現項目

使用「Update Finding」(更新發現項目) 動作,更新 Security Command Center 中的現有發現項目。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「Update Finding」動作需要下列參數:

參數 說明
Finding Name

必填。

要傳回詳細資料的發現項目完整資源名稱,格式為 organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID。

這項參數接受多個值,請以逗號分隔。

Mute Status

選填。

發現項目的忽略狀態。

可能的值如下:

  • Mute
  • Unmute
State Status

選填。

發現項目的狀態。

可能的值如下:

  • Active
  • Inactive

動作輸出內容

「Update Finding」(更新發現項目) 動作會提供下列輸出內容:

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

Update Finding 動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明

Successfully updated the following findings in Security Command Center: FINDING_NAMES

Action wasn't able to find the following findings in Security Command Center: FINDING_NAMES

None of the provided findings were found in Security Command Center.

動作成功。
Error executing action "Update Finding". Reason: ERROR_REASON

動作失敗。

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

指令碼結果

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

指令碼結果名稱 值
is_success true或false

連接器

如要進一步瞭解如何在 Google SecOps 中設定連接器,請參閱「擷取資料 (連接器)」。

Security Command Center - 發現項目連接器

使用 Security Command Center - Findings Connector,從 Security Command Center 擷取發現項目的相關資訊。

這個連接器支援使用動態清單,依類別篩選發現項目。

連接器輸入

Security Command Center - Findings Connector 需要下列參數:

參數 說明
Product Field Name

必填。

儲存產品名稱的欄位名稱。

產品名稱主要會影響對應。為簡化及改善連接器的對應程序,預設值會解析為程式碼參照的備用值。根據預設,如果這個參數的輸入值無效,系統會解析為備用值。

預設值為 Product Name。

Event Field Name

必填。

決定事件名稱 (子類型) 的欄位名稱。

Environment Field Name

選填。

儲存環境名稱的欄位名稱。

如果缺少環境欄位,連接器會使用預設值。

預設值為 ""。

Environment Regex Pattern

選填。

規則運算式模式,用於對 Environment Field Name 欄位中的值執行。這個參數可讓您使用規則運算式邏輯,操控環境欄位。

使用預設值 .* 擷取必要的原始 Environment Field Name 值。

如果規則運算式模式為空值或空白,或環境值為空值,則最終環境結果為預設環境。

API Root

必填。

Security Command Center 執行個體的 API 根目錄。

Organization ID

選填。

要使用的 Google Cloud 組織 ID

Project ID

選填。

要使用的 Google Cloud 專案 ID。

Quota Project ID

選填。

要使用的 Google Cloud 專案 ID。

Location ID

選填。

要使用的位置 ID。

預設值為 global。

User's Service Account

必填。

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

只有在使用 JSON 金鑰進行驗證時,才需要使用這個參數。

Workload Identity Email

選填。

服務帳戶的用戶端電子郵件地址。

只有在使用 Workload Identity 進行驗證時,才需要使用這個參數。

如果設定這項參數,也必須設定 Quota Project ID。

Finding Class Filter

選填。

從來源擷取資料時,要納入的安全發現項目類型清單 (以半形逗號分隔)。

可能的值如下:

  • Threat
  • Vulnerability
  • Misconfiguration
  • SCC_Error
  • Observation
  • Toxic Combination
  • Chokepoint

如未提供值,系統會擷取所有類別的發現項目。

Lowest Severity To Fetch

選填。

要擷取的快訊最低嚴重性。

如未設定這項參數,連接器會擷取所有嚴重程度等級的快訊。

可能的值如下:

  • Low
  • Medium
  • High
  • Critical

如果未定義嚴重性的發現項目獲派 Fallback Severity 等級,該發現項目就不會受到這個參數篩選。

如未提供值,系統會擷取所有嚴重性類型。

Fallback Severity

選填。

如果擷取的安全性發現項目沒有來源定義或可辨識的嚴重性評等,則會指派這個嚴重性等級。

可能的值如下:

  • Low
  • Medium
  • High
  • Critical

預設值為 Medium。

Max Hours Backwards

選填。

要擷取多久以前的發現項目 (以小時為單位)。

這個參數可套用至首次啟用連接器後的初始連接器疊代,或過期連接器時間戳記的備用值。

最大值為 24。

預設值為 1。

Max Findings To Fetch

選填。

每次連接器疊代要處理的發現項目數量。

最大值為 1000。

預設值為 100。

Use dynamic list as a blacklist

必填。

如果選取,連接器會將動態清單做為封鎖清單。

預設為停用。

Verify SSL

必填。

如果選取這個選項,整合功能會在連線至 Security Command Center 伺服器時驗證 SSL 憑證。

預設為停用。

Proxy Server Address

選填。

要使用的 Proxy 伺服器位址。

Proxy Username

選填。

用於驗證的 Proxy 使用者名稱。

Proxy Password

選填。

用於驗證的 Proxy 密碼。

PythonProcessTime

必填。

執行目前指令碼的 Python 程序逾時限制 (以秒為單位)。

預設值為 180。

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