收集 IBM Mainframe Storage 記錄
本文說明如何使用 Bindplane 將 IBM Mainframe Storage 記錄收集到 Google Security Operations。
IBM Mainframe Storage 包含 IBM DS8000 系列 (包括 DS8900F 和 DS8880) 和 IBM FlashSystem 系列 (包括 FlashSystem 5000、5200、5300、7200、7300、9200 和 9500)。這些企業儲存系統可為大型主機和開放式系統環境提供高效能的區塊儲存空間,並內建稽核記錄、系統事件、驗證事件和作業訊息的 Syslog 轉送功能。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- Windows Server 2016 以上版本,或搭載
systemd的 Linux 主機 - Bindplane 代理程式與 IBM 儲存系統管理 IP 位址之間的網路連線
- 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟
- IBM DS8000 儲存空間管理 GUI 或 IBM FlashSystem 管理 GUI 的管理員層級存取權
- IBM FlashSystem 的 CLI SSH 存取權 (選用,適用於以 CLI 為基礎的設定)
取得 Google SecOps 擷取驗證檔案
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「收集代理程式」。
- 下載擷取驗證檔案。將檔案安全地儲存在要安裝 Bindplane 的系統上。
取得 Google SecOps 客戶 ID
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「設定檔」。
- 複製並儲存「機構詳細資料」部分中的客戶 ID。
安裝 Bindplane 代理程式
請按照下列操作說明,在 Windows 或 Linux 作業系統上安裝 Bindplane 代理程式。
Windows 安裝
- 以管理員身分開啟「命令提示字元」或「PowerShell」。
執行下列指令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet等待安裝完成。
執行下列指令,確認安裝成功:
sc query observiq-otel-collector
服務應顯示為「RUNNING」。
Linux 安裝
- 開啟具有根層級或 sudo 權限的終端機。
執行下列指令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh等待安裝完成。
執行下列指令,確認安裝成功:
sudo systemctl status observiq-otel-collector服務應顯示為有效 (執行中)。
其他安裝資源
如需其他安裝選項和疑難排解資訊,請參閱 Bindplane 代理程式安裝指南。
設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps
找出設定檔
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
編輯設定檔
將
config.yaml的所有內容替換為下列設定:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/ibm_storage: compression: gzip creds_file_path: '<CREDS_FILE_PATH>' customer_id: '<CUSTOMER_ID>' endpoint: <REGION_ENDPOINT> log_type: IBM_MAINFRAME_STORAGE raw_log_field: body ingestion_labels: log_source: ibm_storage service: pipelines: logs/ibm_storage_to_chronicle: receivers: - udplog exporters: - chronicle/ibm_storage
設定參數
請替換下列預留位置。
匯出工具設定:
<CREDS_FILE_PATH>:擷取驗證檔案的完整路徑: - Linux:/etc/bindplane-agent/ingestion-auth.json- Windows:C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json<CUSTOMER_ID>:從 Google SecOps 控制台複製的客戶 ID<REGION_ENDPOINT>:區域端點網址: - 美國:malachiteingestion-pa.googleapis.com- 歐洲:europe-malachiteingestion-pa.googleapis.com- 亞洲:asia-southeast1-malachiteingestion-pa.googleapis.com- 如需完整清單,請參閱「區域端點」設定範例 (透過 UDP Syslog 的 IBM FlashSystem)
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/ibm_storage: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6' endpoint: malachiteingestion-pa.googleapis.com log_type: IBM_MAINFRAME_STORAGE raw_log_field: body ingestion_labels: log_source: ibm_storage service: pipelines: logs/ibm_storage_to_chronicle: receivers: - udplog exporters: - chronicle/ibm_storage設定範例 (透過 TCP syslog 的 IBM DS8000)
receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/ibm_storage: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6' endpoint: malachiteingestion-pa.googleapis.com log_type: IBM_MAINFRAME_STORAGE raw_log_field: body ingestion_labels: log_source: ibm_ds8000 service: pipelines: logs/ibm_storage_to_chronicle: receivers: - tcplog exporters: - chronicle/ibm_storage
儲存設定檔
編輯完成後,請儲存檔案:
- Linux:依序按下
Ctrl+O、Enter和Ctrl+X - Windows:依序點選「檔案」>「儲存」
重新啟動 Bindplane 代理程式,以套用變更
如要在 Linux 中重新啟動 Bindplane 代理程式,請執行下列步驟:
執行下列指令:
sudo systemctl restart observiq-otel-collector確認服務正在執行:
sudo systemctl status observiq-otel-collector檢查記錄中是否有錯誤:
sudo journalctl -u observiq-otel-collector -f
如要在 Windows 中重新啟動 Bindplane 代理程式,請按照下列步驟操作:
您可以選擇下列其中一個選項:
以管理員身分開啟命令提示字元或 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector服務控制台:
- 按下
Win+R,輸入services.msc,然後按下 Enter 鍵。 - 找出 observIQ OpenTelemetry Collector。
- 按一下滑鼠右鍵,然後選取「重新啟動」。
- 按下
確認服務正在執行:
sc query observiq-otel-collector檢查記錄中是否有錯誤:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
設定 IBM Mainframe Storage 系統記錄檔轉送
在特定 IBM 儲存系統上設定系統記錄檔轉送功能。請按照產品系列的說明操作。
選項 A:在 IBM DS8000 系列 (DS8900F、DS8880) 上設定系統記錄
IBM DS8000 儲存空間管理 GUI 支援將稽核記錄、GUI 事件資訊、登入/登出事件和指令稽核追蹤記錄轉送至遠端系統記錄伺服器。DS8000 最多支援八個系統記錄檔目標伺服器。根據預設,DS8000 系統記錄檔會使用通訊埠 514 的 TCP 通訊協定。
- 使用具備「管理員」角色的帳戶,登入 DS8000 儲存空間管理 GUI。
- 依序前往「設定」>「通知」。
- 在「Syslog」頁面中,按一下「Add Syslog Server」(新增系統記錄伺服器)。
- 在「新增系統記錄伺服器」視窗中,提供下列設定詳細資料:
- IP 位址:輸入 Bindplane 代理程式主機的 IP 位址 (例如
192.168.1.100)。 - 「Port」(通訊埠):輸入
514。
- IP 位址:輸入 Bindplane 代理程式主機的 IP 位址 (例如
按一下 [確定]。
選項 B:在 IBM FlashSystem (5000、5200、5300、7200、7300、9200、9500) 上設定系統記錄檔
IBM Storage Virtualize 基礎的 IBM FlashSystem 系統支援透過管理 GUI 和 CLI 轉送系統記錄。系統最多支援六部系統記錄伺服器,並可使用 UDP、TCP 或 TLS 通訊協定傳輸訊息。
使用管理 GUI
- 登入 IBM FlashSystem 管理 GUI。
- 依序前往「設定」>「通知」>「系統記錄」。
- 按一下「新增 Syslog 伺服器」,開啟「新增 Syslog 伺服器」視窗。
- 選取通訊協定:
- UDP:減少系統和網路負擔。預設通訊埠為
514。 - TCP:提供可靠的傳輸服務。預設通訊埠為
6514。 - TLS:使用 TLS 傳送加密的系統記錄訊息。
- UDP:減少系統和網路負擔。預設通訊埠為
- 輸入 Bindplane 代理程式主機的 IP 位址和通訊埠號碼。
- 按一下「新增」。
使用 CLI (SSH)
- 使用管理員帳戶,透過 SSH 連線至 IBM FlashSystem 系統。
執行下列指令,建立啟用所有記錄類型的系統記錄伺服器:
mksyslogserver -name chronicle -ip <BINDPLANE_IP> -protocol udp -port 514 -facility 4 -error on -warning on -info on -audit on -login on將
<BINDPLANE_IP>替換為 Bindplane 代理程式主機的 IP 位址。執行下列指令,確認是否已建立系統記錄伺服器:
lssyslogserver輸出內容會顯示已設定的系統記錄伺服器,以及 ID、名稱、IP 位址、通訊埠、通訊協定和通知設定。
常見設定的 CLI 範例
以擴充格式建立系統記錄檔伺服器,並在通訊埠 514 上使用 UDP,同時記錄稽核和驗證資訊:
mksyslogserver -name chronicle -ip 192.168.1.100 -facility 4 -protocol udp -port 514 -error on -warning on -info on -audit on -login on在通訊埠 6514 上使用 TCP 建立系統記錄檔伺服器:
mksyslogserver -name chronicle -ip 192.168.1.100 -facility 4 -protocol tcp -port 6514 -error on -warning on -info on -audit on -login on修改現有的系統記錄伺服器,啟用稽核記錄:
chsyslogserver -audit on <syslog_server_id>移除系統記錄伺服器:
rmsyslogserver <syslog_server_id>
FlashSystem 系統記錄通知類型
下表說明 IBM FlashSystem 上可用的系統記錄通知類型:
| 通知類型 | CLI 參數 | 預設 | 說明 |
|---|---|---|---|
| 錯誤 | -error on|off |
開啟 | 系統發生嚴重問題 |
| 警告 | -warning on|off |
開啟 | 問題或非預期狀況 |
| 資訊 | -info on|off |
開啟 | 預期作業完成 |
| 稽核記錄 | -audit on|off |
關閉 | CLI 或管理 GUI 作業 |
| 驗證記錄 | -login on|off |
關閉 | 驗證成功和失敗的嘗試 |
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
| device_vendor | about.asset.asset_id | 由 device_vendor、device_product 和 deviceExternalId 串連而成,格式為「%{device_vendor}.%{device_product}:%{deviceExternalId}」 |
| device_product | about.asset.asset_id | |
| deviceExternalId | about.asset.asset_id | |
| IPv6_Address | about.ip | 直接複製值 |
| dvcmac | about.mac | 如果 MAC 有效,則為 dvcmac 的值;如果已擷取,則為 mac_address 的值 |
| mac_address | about.mac | |
| fname | about.file.full_path | 如果不是「不適用」,則直接複製值 |
| fileHash | about.file.full_path | 如果不是雜湊,則直接複製值 |
| fileHash | about.file.sha256 | 如果符合雜湊模式,則直接複製值 |
| _hash | about.file.sha256 | 直接複製值 |
| fsize | about.file.size | 已轉換為 uinteger |
| File_name | about.file.full_path | 如果 File_name 不為空白,則為 File_name 的值,否則為 Object、Objekt 或 Infected_Resource |
| 物件 | about.file.full_path | |
| Objekt | about.file.full_path | |
| Infected_Resource | about.file.full_path | |
| 關於 | 關於 | 從「關於」頁面合併 |
| additional_cs1 | additional.fields | 從各種 additional_* 欄位合併而來,例如 additional_cs1、additional_cs2 等。 |
| additional_cs2 | additional.fields | |
| cs1 | additional.fields | cs1Label 中的鍵,cs1 中的值 |
| cs1Label | additional.fields | |
| cs2 | additional.fields | cs2Label 中的鍵,cs2 中的值 |
| cs2Label | additional.fields | |
| cs3 | additional.fields | cs3Label 中的鍵,以及 cs3 中的值 (如不為空) |
| cs3Label | additional.fields | |
| cs4 | additional.fields | cs4Label 中的鍵,gsub 後的 cs4 中的值 |
| cs4Label | additional.fields | |
| cs5 | additional.fields | cs5Label 中的鍵,如果不是「NA」,則為 cs5 中的值 |
| cs5Label | additional.fields | |
| cs6 | additional.fields | cs6Label 中的鍵,以及 cs6 中的值 (如不為空) |
| cs6Label | additional.fields | |
| cs7 | additional.fields | cs7Label 中的鍵,如果 cs7 不為空白,則為 cs7 中的值 |
| cs7Label | additional.fields | |
| flexString1 | additional.fields | flexString1Label 的鍵,flexString1 的值 |
| flexString1Label | additional.fields | |
| cn1 | additional.fields | cn1Label 的鍵,cn1 的值 |
| cn1Label | additional.fields | |
| cn2 | additional.fields | cn2Label 中的鍵,cn2 中的值 |
| cn2Label | additional.fields | |
| cn3 | additional.fields | cn3Label 中的鍵,以及 cn3 中的值 (如不為空白) |
| cn3Label | additional.fields | |
| cfp1 | additional.fields | cfp1Label 中的鍵,cfp1 中的值 |
| cfp1Label | additional.fields | |
| cfp2 | additional.fields | cfp2Label 中的鍵,cfp2 中的值 |
| cfp2Label | additional.fields | |
| cfp3 | additional.fields | cfp3Label 中的鍵,cfp3 中的值 |
| cfp3Label | additional.fields | |
| cfp4 | additional.fields | cfp4Label 中的鍵,cfp4 中的值 |
| cfp4Label | additional.fields | |
| eventId | additional.fields | 鍵「eventId」,值來自 eventId |
| devicePayloadId | additional.fields | 「devicePayloadId」鍵,值來自 devicePayloadId |
| fname | additional.fields | 索引鍵「fname」,值來自 fname (如果不是「N/A」) |
| cs3Label | additional.fields | 鍵「cs3Label」,如果 cs3 為空,則值來自 cs3Label |
| cs4Label | additional.fields | 鍵「cs4Label」,如果 cs4 為空,則值來自 cs4Label |
| cs5 | additional.fields | 鍵「cs5 Label」,值來自 cs5 (如果 cs5Label 為空) |
| principal_asset_hostname | additional.fields | 索引鍵「asset_host_name」,如果不同,則值來自 principal_asset_hostname |
| target_asset_hostname | additional.fields | 「device_host_name」鍵,如果不同,則為 target_asset_hostname 的值 |
| ssh_key | additional.fields | 「ssh_key」鍵,如果不是雜湊,則為 ssh_key 的值 |
| 註解 | additional.fields | 鍵為「Comment」,值來自 try_message |
| 動作名稱 | additional.fields | 索引鍵「動作名稱」,值來自 action_name |
| 錯誤代碼 | additional.fields | 索引鍵「錯誤代碼」,值來自 error_code |
| rsyslog 模組 | additional.fields | 「rsyslog Module」鍵,值來自 module 或 module_name |
| 更多資訊 | additional.fields | 「更多資訊」鍵,值來自 try_message |
| 動作類型 | additional.fields | 鍵為「動作類型」,值來自 action_type |
| 已接收 | metadata.collected_timestamp | 使用日期比對從「Received」或「Mottatt」剖析 |
| Mottatt | metadata.collected_timestamp | |
| rt | metadata.event_timestamp | 從 rt 剖析,使用日期比對和時區 |
| file_full_path | metadata.event_type | 如果 file_full_path 不為空白,則設為「PROCESS_UNCATEGORIZED」;如果 event_name 屬於特定值,則設為「SCAN_UNCATEGORIZED」;如果 duser 不為空白,則設為「USER_UNCATEGORIZED」;如果 principal_hostname_found 和 target_ip_found 均為 true,則設為「NETWORK_CONNECTION」;如果 principal_hostname_found 或 src 不為空白,則設為「STATUS_UPDATE」;否則設為「GENERIC_EVENT」 |
| event_name | metadata.event_type | |
| duser | metadata.event_type | |
| principal_hostname_found | metadata.event_type | |
| device_product | metadata.product_name | 直接複製值 |
| device_vendor | metadata.vendor_name | 直接複製值 |
| device_version | metadata.product_version | 直接複製值 |
| externalId | metadata.product_log_id | 直接複製值 |
| event_name | metadata.product_event_type | 如果兩者皆存在,則串連為「[%{device_event_class_id}] - %{event_name}」,否則為 device_event_class_id 或 event_name |
| device_event_class_id | metadata.product_event_type | |
| app_protocol_src | network.application_protocol | 根據 app_protocol_src 比對預先定義的值,例如「22」對應「SSH」、「25」對應「SMTP」等。 |
| deviceDirection | network.direction | 如果 deviceDirection ==「0」,則設為「INBOUND」;如果為「1」,則設為「OUTBOUND」 |
| 在 | network.received_bytes | 如果 >0,則轉換為 uinteger |
| out | network.sent_bytes | 如果 >0,則轉換為 uinteger |
| proto | network.ip_protocol | 根據 protocol_number_src 相符號碼設定,例如 1 代表「ICMP」,6 代表「TCP」等。 |
| destinationTranslatedPort | network.target.nat_port | 如果不是 0,則會轉換為整數 |
| sourceTranslatedPort | network.principal.nat_port | 如果不是 0,則會轉換為整數 |
| dpt | network.target.port | 如果不是 0 且有效,則會轉換為整數 |
| spt | network.principal.port | 如果不是 0 和「{srcPort}」,則會轉換為整數 |
| 要求 | network.target.url | 直接複製值 |
| requestMethod | network.http.method | 大寫 |
| requestClientApplication | network.http.user_agent | 直接複製值 |
| principal_hostname | principal.asset.hostname | 如果 principal_hostname 不為空白,且與 principal_asset_hostname 不同,則為 principal_hostname 的值,否則設為 principal_hostname |
| principal_asset_hostname | principal.asset.hostname | |
| Device_name | principal.hostname | 如果 Device_name 不為空白,則為該值,否則為 Enhetsnavn |
| Enhetsnavn | principal.hostname | |
| shost | principal.hostname | 如果不是 IP,則直接複製值 |
| shost | principal.ip | 如果符合 IP 模式,則會擷取為 IP |
| sourceTranslatedAddress | principal.nat_ip | 如果開頭為數字,則直接複製值 |
| smac | principal.mac | gsub 後擷取為 MAC |
| spid | principal.process.pid | 直接複製值 |
| sproc | principal.process.command_line | 直接複製值 |
| suser | principal.user.user_display_name | 如果不是以「{」開頭,則直接複製值 |
| suid | principal.user.userid | 直接複製值 |
| spriv | principal.user.attribute.roles.name | 直接複製值 |
| sntdom | principal.administrative_domain | 直接複製值 |
| sourceServiceName | principal.application | 直接複製值 |
| Group_name | principal.group.group_display_name | 如果 Group_name 不為空白,則為 Group_name 的值,否則為 Gruppenavn |
| Gruppenavn | principal.group.group_display_name | |
| 動作 | principal.user.user_authentication_status | 如果動作在接受的值中,請設為「ACTIVE」;如果動作是中斷連線,請設為「NO_ACTIVE_CREDENTIALS」;如果動作是已中斷連線,請設為「SUSPENDED」 |
| act | security_result.action | 如果動作符合允許條件或結果相符,請設為「ALLOW」;如果動作遭拒或遭到封鎖,請設為「BLOCK」;如果結果失敗,請設為「FAIL」 |
| 結果 | security_result.action | |
| act | security_result.action_details | 直接複製值 |
| Action_Taken | security_result.action_details | 直接複製值 |
| categoryOutcome | security_result.category_details | 直接複製值 |
| 嚴重性 | security_result.severity | 如果值為 [0,1,2,3,"LOW"],則設為「LOW」;如果值為 [4,5,6,"MEDIUM","SUBSTANTIAL","INFO"],則設為「MEDIUM」;如果值為 [7,8,"HIGH","SEVERE"],則設為「HIGH」;如果值為 [9,10,"VERY-HIGH","CRITICAL"],則設為「CRITICAL」 |
| 間諜軟體 | security_result.threat_name | 如果間諜軟體的值不為空,則為該值;否則為 Virus_Malware_Name,否則為 Unknown_Threat |
| Virus_Malware_Name | security_result.threat_name | |
| Unknown_Threat | security_result.threat_name | |
| 類型 | security_result.description | 如果「類型」不為空白,則為「類型」的值,否則為「掃描類型」 |
| Scan_Type | security_result.description | |
| msg_data_2 | security_result.description | 如果 msg_data_2 不為空白,則為 msg_data_2 的值,否則為 msg |
| msg | security_result.description | |
| 原因 | security_result.summary | 如果不是空白或空格,則直接複製值 |
| appcategory | security_result.summary | 直接複製值 |
| 結果 | security_result.summary | 直接複製值 |
| mwProfile | security_result.rule_name | 直接複製值 |
| 作業 | security_result.detection_fields | 「Operation」鍵,值來自 Operation 或 Operasjon |
| Operasjon | security_result.detection_fields | |
| 權限 | security_result.detection_fields | 「Permission」鍵,值來自 Permission 或 Tillatelse |
| Tillatelse | security_result.detection_fields | |
| Infection_Channel | security_result.detection_fields | 「感染管道」鍵,值來自 Infection_Channel |
| Spyware_Grayware_Type | security_result.detection_fields | 鍵:「Spyware/Grayware_Type」,值來自 Spyware_Grayware_Type |
| Threat_Probability | security_result.detection_fields | 「Threat_Probability」鍵,值來自 Threat_Probability |
| Resource_Type | security_result.detection_fields | 鍵「Resource_Type」,值來自 Resource_Type |
| security_result | security_result | 從 security_result 合併 |
| target_hostname | target.asset.hostname | 如果 target_hostname 不為空白,且與 target_asset_hostname 不同,則為 target_hostname 的值,否則設為 target_hostname |
| target_asset_hostname | target.asset.hostname | |
| temp_dhost | target.hostname | 如果不是 IP,則直接複製值 |
| temp_dhost_ip | target.hostname | 如果已擷取 IP,請設為空白 |
| temp_dhost_ip | target.ip | 如果已擷取值,則直接複製 |
| temp_dhost_ip | target.ip | temp_dhost_ip 或 IPv6_Address 的值 |
| IPv6_Address | target.ip | |
| temp_dhost_ip | target.asset.ip | 如果已擷取值,則直接複製 |
| destinationTranslatedAddress | target.nat_ip | 擷取為 IP |
| dmac | target.mac | gsub 後擷取為 MAC |
| dpid | target.process.pid | 直接複製值 |
| dproc | target.process.command_line | 直接複製值 |
| temp_duser | target.user.user_display_name | 直接複製值 |
| temp_duid | target.user.userid | 使用 grok 擷取,已複製值 |
| 使用者 | target.user.userid | 如果使用者提供值,則使用該值,否則使用 Bruker |
| Bruker | target.user.userid | |
| CustomerName | target.user.user_display_name | 直接在 gsub 後複製值 |
| dpriv | target.user.attribute.roles.name | 直接複製值 |
| dntdom | target.administrative_domain | 直接複製值 |
| destinationServiceName | target.application | 直接複製值 |
| File_name | target.process.file.full_path | 如果 File_name 不為空白,則為 File_name 的值,否則為 Object、Objekt 或 Infected_Resource |
| 物件 | target.process.file.full_path | |
| Objekt | target.process.file.full_path | |
| Infected_Resource | target.process.file.full_path | |
| oldFileSize | target.src.file.size | 如果不是 0,則轉換為 uinteger |
| oldFilePath | target.src.file.full_path | 直接複製值 |
| oldFilePermission | target.src.resource.attribute.permissions.name | 直接複製值 |
| filePermission | target.resource.attribute.permissions.name | 直接複製值 |
| resource_Type_label | target.resource.attribute.labels | 已與「Resource_Type」鍵合併,值來自 Resource_Type |
| metadata.vendor_name | metadata.vendor_name | 設為「IBM」 |
| metadata.product_name | metadata.product_name | 設為「MAINFRAME STORAGE」 |
cs3Label", and "cs4Label |
additional.fields |
從變更記錄對應 |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。