# 安全案件與劇本(SOAR)

Security Events 會把偵測規則、威脅情資和已連線的安全性產品所發現的問題轉為案件：每件值得調查的事對應一個案件，與同一使用者、主機或位址有關的所有偵測都會歸入其中。分析師在佇列中處理案件，劇本則會自動或一鍵對案件做出回應。

:::cards
- [案件從何而來](#案件從何而來): 偵測規則、威脅情資、已連線的產品和人員。
- [處理案件](#處理案件): 指派案件、調查相關實體，並在給出結論後關閉。
- [通知](#通知): 新案件、指派以及等待核准的步驟會通知誰。
- [劇本](#劇本): 在案件上執行的步驟，關鍵步驟需要核准。
- [概覽](#概覽): 當下需要有人處理的事項，以及案件的處理速度。
:::

## 運作方式

```mermaid title="從偵測到已關閉的案件"
flowchart TB
    subgraph sources["偵測"]
        direction LR
        rules["偵測<br/>規則"] ~~~ intel["威脅<br/>情資"] ~~~ products["已連線的<br/>產品"]
    end
    sources --> group{"是否已有關於同一<br/>實體的未關閉案件？"}
    group -->|"是"| join["該偵測<br/>併入此案件"]
    group -->|"否"| open["開啟一個新案件"]
    join --> playbooks["執行劇本"]
    open --> playbooks
    playbooks --> work["分析師<br/>處理案件"]
    work --> close["給出結論後關閉"]
```

開啟 **產品 → Security Events → 安全案例 → 未結案例** 查看佇列。**指派給我**、**無人認領**、**已關閉案例** 和 **全部案例** 是旁邊各自獨立的頁面，分別列出其名稱所指的案件。

## 開始之前

案件和劇本遵循三個 Security 角色的權限。Project Owner 和 Project Admin 可以執行所有操作。

| 角色 | 能做什麼 |
| --- | --- |
| Security Admin | 一切操作，包括刪除案件和設定劇本 |
| Security Member | 開啟、指派、變更和關閉案件，撰寫備註，執行劇本，以及核准或拒絕劇本的步驟 |
| Security Viewer | 讀取案件、偵測、備註、劇本及其執行記錄 |

其中每一項權限也都可以單獨授予，從建立案件到核准劇本的步驟皆然；請參閱 [權限參考](/docs/permissions/reference)。

## 案件從何而來

| 來源 | 何時開啟案件 | 停用方式 |
| --- | --- | --- |
| 偵測規則 | 規則符合時 | 規則的 **符合時** 步驟中的 **Open a Case on Match** |
| 威脅情資 | 某個事件提到已知指標時 | 情資來源的 **符合時** 步驟中的 **Open a Case on Match** |
| 已連線的產品 | 匯入的產品本身警示達到或高於連線的閾值時 | 在連線的 **Polling** 步驟中，把 **Open Cases From** 設為 **從未** |
| 人員 | 有人從 **安全案例** 開啟案件，或在事件面板中使用 **Open Case** 時 | 無 |

所有來源預設都是開啟的。除非你選擇其他等級，否則連線會為 **高及以上** 的警示開啟案件；低於該等級的警示仍會匯入為事件。

### 偵測如何分組

每個偵測都與某個實體有關：也就是其規則分組所依據的值，例如暴力破解規則中的 IP 位址，或威脅情資符合項目所提到的指標。沒有實體的偵測會單獨存在，不與其他偵測合併。

- 如果已有與該實體有關的未關閉案件，偵測就會併入其中。案件的實體和 ATT&CK 對應會隨之擴充，其優先順序會提升到該偵測的優先順序，但絕不會降低。
- 如果沒有這樣的案件，就會開啟一個新案件，以該偵測命名，優先順序與該偵測相同。
- 再次觸發的偵測會在它所在的列上累加計數，而不是新增一列。

案件的優先順序取決於偵測的嚴重程度：

| 嚴重程度 | 優先順序 |
| --- | --- |
| Critical 或 Fatal | Critical |
| High | High |
| Medium、Unknown 或 Other | Medium |
| Low | Low |
| Informational | Informational |

## 處理案件

案件會依序經歷四種狀態。它可以略過某個狀態，例如直接從 New 關閉的誤判，也可以重新開啟。

| 狀態 | 意義 |
| --- | --- |
| New | 還沒有人查看過 |
| Investigating | 有人正在釐清發生了什麼事 |
| Contained | 威脅已無法再造成危害，但仍有清理工作要做 |
| Closed | 已處理完畢，並對其性質給出了結論 |

案件頁面上有處理它所需的一切：

- 頂端：**Assign to Me**、**Run Playbook**、**宣告事件** 和 **Close Case** 按鈕，狀態步驟，以及它們旁邊選單中的優先順序。
- **Status200 AI**：Status200 AI 對案件的研判、它建議的優先順序和劇本，以及背後的證據。請參閱 [安全性中的 Status200 AI](/docs/telemetry/security-ai)。
- **Detections**：觸發後開啟或併入此案件的偵測、觸發次數，以及最新的符合事件。
- **實體**：案件涉及的使用者、主機和位址，以及它們最近 7 天在你所有安全性事件中的活動。每個實體都可以在 **關聯分析** 中開啟。
- **MITRE ATT&CK**：案件的偵測所對應的戰術和技術，每一項都連結到 attack.mitre.org 上的對應頁面。
- **劇本執行記錄**：每個劇本在此案件上逐步做了什麼，以及等待核准的步驟。
- **備註** 和 **時間軸**：團隊寫下的內容，以及發生過的一切和操作者。

若要同時處理多個案件，請在佇列中選取它們，然後使用 **Assign to Me**、**Change Status** 或 **Change Priority**。

### 關閉案件

**Close Case** 會要求填寫結論和一則選用的結案備註：

| 結論 | 意義 |
| --- | --- |
| True Positive | 確實發生了惡意或未經授權的活動 |
| Benign Positive | 活動確實存在但在預期之內，例如滲透測試或管理工作 |
| False Positive | 偵測有誤：規則或資料誤判了正常活動 |
| Undetermined | 沒有足夠的資訊可以判斷 |

概覽頁面會統計這些結論。如果某條規則的案件總是以 False Positive 關閉，就表示這條規則需要調校。

從 Google SecOps 警示開啟的案件，如果其連線開啟了 **案例關閉時關閉其警示**，也會在 Google SecOps 中關閉這些警示，並附上結論和關閉說明：請參閱 [Google SecOps](/docs/integrations/google-secops#案例關閉時關閉其警示)。

### 宣告事件

**宣告事件** 會以你選擇的嚴重程度為此案件開啟一個 Status200 事件（incident），並在兩者之間建立雙向連結：事件的描述會寫明此案件，案件的頁首會連結到該事件。接下來就由待命、狀態頁面和事後分析接手。此操作需要一個既能處理案件、又能建立事件的角色。

## 通知

Status200 會就案件上的三件事通知相關人員。不需要任何人做任何設定：一個只點選了 **開啟推薦設定** 的專案，也會透過電子郵件和推播收到其 High 和 Critical 案件的通知。

| 通知 | 通知誰 | 預設方式 |
| --- | --- | --- |
| 新的安全案例 | 所有能檢視專案案件的人：當案件以他們所選的優先順序或更高的優先順序開啟，或提升到該優先順序或更高時 | 電子郵件和推播，針對 High 和 Critical 案件 |
| 指派給我的安全案例 | 案件被指派給的人，以及案件被指派給的團隊成員 | 電子郵件和推播 |
| 等待我核准的劇本步驟 | 案件相關人員中能核准該步驟的人：案件被指派給的人及其團隊的成員。如果他們都無法核准，則通知專案中所有能核准的人 | 電子郵件和推播 |

- 只有能檢視案件的人才會收到相關通知：Project Owner、Project Admin，以及 Security Admin、Security Member 和 Security Viewer 角色。僅限於某些標籤的角色，只會收到帶有這些標籤的案件的通知。
- 沒有人會因為自己做的事而收到通知：手動開啟案件、指派案件或啟動執行的人不會收到相應的通知。
- 每個人對一個案件只會收到一次通知。一個以 Medium 開啟、之後提升到 Critical 的案件，會在提升時通知選擇了 High 或 Critical 的人，而不會再次通知選擇了 Medium 的人，因為他們在案件開啟時就已經收到通知。
- 透過 **傳送測試攻擊** 發起的測試攻擊會開啟一個不通知任何人的案件。
- Critical 案件和等待核准的步驟會立即傳送，絕不會被壓在 [郵件彙總](/docs/emails/notification-rollup) 中延後傳送。
- 案件的 **時間軸** 會顯示通知了誰以及何時通知。

### 選擇你會收到的通知

每個人都可以在 **使用者設定 → 通知設定 → 安全性** 下自行選擇：每種通知的管道（電子郵件、簡訊、電話、推播、Telegram、Slack、Microsoft Teams 或 Webhook），以及在 **新的安全案例** 下選擇會通知自己的優先順序：

| 選項 | 通知哪些優先順序的案件 |
| --- | --- |
| 僅嚴重 | Critical |
| 高和嚴重 | High 和 Critical（預設） |
| 中及以上 | Critical、High 和 Medium |
| 低及以上 | 除了 Informational 以外的所有優先順序 |
| 所有案例 | 所有優先順序 |

安全案件不會傳送 WhatsApp 訊息。推播通知會開啟 Status200 應用程式，其中的連結會在瀏覽器中開啟該案件。

### 張貼到 Slack 和 Microsoft Teams 頻道

若要張貼到頻道，請在 **產品 → Security Events → 工作區 → Slack**（或 **Microsoft Teams**）下新增一條規則。兩者都未連線時，該區段只有一個項目：**連線 Slack 或 Teams**。規則會指定要張貼到的頻道（在 Microsoft Teams 中還包括聊天），並可視需要指定它適用於哪些案件：

| 條件 | 符合內容 |
| --- | --- |
| 安全案例優先順序 | 嚴重、High、Medium、Low 或資訊 |
| 安全案例標題、安全案例描述 | 案件標題或描述中包含的文字，或其開頭、結尾的文字 |
| 安全案例狀態 | 新增、調查中、Contained 或已關閉 |
| 安全案例來源 | Detection Rule、Threat Intel、Connected Product 或 Manual |
| 安全案例標籤 | 案件的標籤 |

這三種通知都會張貼到案件當時所符合的每條規則的頻道。一條 **安全案例優先順序** 包含 **嚴重** 和 **High** 中任一項的規則，會在 High 和 Critical 案件開啟時張貼它們，並在 Medium 案件提升到 High 時張貼它。安全案件永遠不會有專屬的頻道。

## 劇本

劇本是在案件上執行的一系列步驟。請在 **產品 → Security Events → Playbooks** 下從範本或空白建立劇本，然後在它的頁面上新增步驟。

### 劇本何時執行

| 觸發方式 | 執行時機 |
| --- | --- |
| Case Opened | 案件開啟時執行一次 |
| Detection Added | 每當有新的偵測併入未關閉的案件時 |
| 研判為可能惡意 | 當 Status200 AI 的研判把案件判讀為 可能為惡意 時，執行一次 |
| Manual | 只有在有人從案件執行它時 |

任何已啟用的劇本也可以透過案件上的 **Run Playbook** 手動執行。自動執行的劇本可以用下列設定縮小範圍：

- **For Cases At Least**：只針對此優先順序或更高優先順序的案件。
- **Only For Detections From**：只在案件背後的偵測來自此來源時執行。
- **Only For These Detection Rules**：只在該偵測來自這些規則之一時執行。

已停用的劇本既不會自動執行，也無法手動執行。

### 步驟

| 類別 | 步驟 | 作用 |
| --- | --- | --- |
| 案件 | Assign the case | 把案件指派給某個人、某個團隊或兩者 |
| 案件 | Set the priority | 提高或降低案件的優先順序 |
| 案件 | Set the status | 把案件移到 Investigating、Contained 或 Closed，並附上你選擇的結論 |
| 案件 | Add a note | 在案件上寫一則備註，例如給分析師的檢查清單 |
| 案件 | Add labels | 為案件加上標籤 |
| 調查 | Check entities against threat intel | 在你的威脅情資中查詢每個實體，符合時可以提高優先順序 |
| 調查 | Look up entity activity | 統計每個實體在最近一段時間內的安全性事件，並記錄在案件上 |
| 通知 | Email people | 以電子郵件傳送案件摘要及其連結給使用者和團隊 |
| 通知 | Post to Slack | 把案件摘要張貼到某個 Slack 頻道 |
| 通知 | Post to Microsoft Teams | 把案件摘要張貼到某個 Microsoft Teams 頻道 |
| 呈報 | Page on-call | 執行一個待命策略 |
| 呈報 | Declare an incident | 開啟一個與案件連結的 Status200 事件 |
| 圍堵 | Suspend the user in Okta | 在 Okta 中暫停案件涉及的使用者 |
| 圍堵 | End the user's Okta sessions | 將案件涉及的使用者登出 Okta，並撤銷其權杖 |
| 圍堵 | Contain the host in CrowdStrike | 透過 CrowdStrike Falcon 對案件涉及的主機進行網路圍堵 |
| 圍堵 | Isolate the device in Microsoft Defender | 透過 Microsoft Defender for Endpoint 隔離案件涉及的主機 |
| 圍堵 | Unsuspend the user in Okta | 在 Okta 中取消暫停案件涉及的使用者 |
| 圍堵 | Lift containment in CrowdStrike | 解除 CrowdStrike Falcon 對案件涉及的主機施加的網路圍堵 |
| 圍堵 | Release the device in Microsoft Defender | 在 Microsoft Defender for Endpoint 中將案件涉及的主機解除隔離 |
| 自動化 | Send a webhook | 把案件以 JSON 格式 POST 到某個 URL |
| 自動化 | Run a workflow | 以案件作為輸入，啟動一個 Status200 工作流程 |

一個劇本最多有 25 個步驟。它們會依序執行，每個步驟在前一個完成後才開始。每個步驟還可以設定：

- **Needs Approval**：在執行到此步驟之前暫停，直到有人在案件上核准它。切斷某人存取的四個步驟一律如此，除非 Security Admin 將其關閉。
- **Only If Threat Intel Matched**：除非本次執行中先前的 **Check entities against threat intel** 步驟找到了已知指標，否則略過此步驟。
- **Carry On If It Fails**：即使此步驟失敗，也繼續執行下一個步驟。關閉此項時，失敗的步驟會停止本次執行。

### 圍堵

圍堵類步驟會透過與該產品的 [安全性事件連線](/docs/telemetry/security-events#連線安全性產品) 執行動作，這個連線需要的不只是讀取權限：

| 步驟 | 連線 | 所需權限 |
| --- | --- | --- |
| Suspend the user in Okta、End the user's Okta sessions、Unsuspend the user in Okta | Okta System Log | 一個有權管理使用者的 API 權杖 |
| Contain the host in CrowdStrike、Lift containment in CrowdStrike | CrowdStrike Falcon | 一個具有 Hosts 寫入範圍的 API 用戶端 |
| Isolate the device in Microsoft Defender、Release the device in Microsoft Defender | Microsoft Defender XDR | 一個具有 Machine.Isolate 權限的應用程式 |

圍堵類步驟只會作用於案件涉及的使用者或主機，絕不會作用於案件提到的所有使用者或主機：

- 案件中某個偵測分組所依據的值，例如「不可能的旅行」規則分組所依據的帳戶，或已連線產品的警示中提到的主機。
- 案件中被你的威脅情資列為指標的使用者或主機。

依位址分組的案件，例如針對你的 VPN 的暴力破解，並不涉及上述任何一種：它的圍堵類步驟會被略過，它嘗試過的帳戶和它攻擊的閘道都不會被動到。一個步驟最多作用於 10 個使用者或主機。它會依名稱在產品中找出每一個，並在執行上說明對每一個做了什麼：已完成、先前已完成、找不到、遭到拒絕或受保護。

#### 受保護的實體

選單中 **Playbooks** 下的 **Protected Entities** 列出任何劇本都不會圍堵的使用者和主機，例如緊急存取帳戶、網域控制站和 VPN 閘道。比對值時不區分大小寫，`*` 代表任意字元序列：`svc-*` 會保護所有服務帳戶。步驟會將受保護的使用者或主機回報為受保護，並且不會動到它。這份清單由 Security Admin 維護。

#### 核准

切斷某人存取的四個步驟會等待核准。只有 Security Admin 可以為其中某個步驟關閉 **Needs Approval**，Status200 會記錄是誰關閉的。核准時會在 **Act On** 下列出該步驟將作用的使用者或主機，每一個都已勾選：取消勾選該步驟不該動到的那些。受保護的使用者或主機不會列為選項。啟動執行的人無法核准它的步驟：要由其他人核准，不過啟動者仍可拒絕該步驟。

#### 復原

復原類步驟和它們所復原的步驟一樣，作用於案件涉及的使用者或主機。執行停止後，被圍堵的使用者或主機在其步驟上還會有一個專屬按鈕：**Unsuspend**、**Lift Containment** 或 **釋出**。已結束的 Okta 工作階段無法復原。每次復原都會記錄在案件的時間軸上和專案的稽核日誌中。

### 訊息

備註、電子郵件、Slack 貼文和 Teams 貼文都可以使用案件的值：

| 預留位置 | 取代為 |
| --- | --- |
| `{{case.number}}` | 案件編號，例如 CASE-42 |
| `{{case.title}}` | 案件標題 |
| `{{case.priority}}` | Critical、High、Medium、Low 或 Informational |
| `{{case.status}}` | New、Investigating、Contained 或 Closed |
| `{{case.assignee}}` | 案件指派給了誰 |
| `{{case.url}}` | 指向 Status200 中此案件的連結 |
| `{{case.entities}}` | 案件涉及的使用者、主機和位址 |
| `{{case.detections}}` | 案件包含的偵測數量 |

沒有自訂訊息的電子郵件或貼文會傳送案件摘要。

### 執行與核准

每次執行都會逐步列在其案件上，以及 **產品 → Security Events → Playbooks → 劇本執行記錄** 下：

| 執行狀態 | 意義 |
| --- | --- |
| Queued | 等待工作程序 |
| Running | 正在執行其步驟 |
| Waiting for Approval | 停在需要核准的步驟之前 |
| Succeeded | 每個步驟都已執行或被略過 |
| Failed | 某個步驟失敗，執行已停止 |
| Cancelled | 有人取消了它，或拒絕了某個步驟 |

等待核准的步驟會在執行上顯示 **Approve** 和 **Reject**，並可附上一則選用的意見。核准後，執行會從該步驟繼續；拒絕則會結束執行。核准決定、決定者及其意見都會記錄在該步驟上、案件的時間軸上和專案的稽核日誌中。選單中 **Playbooks** 下的 **等待核准** 列出等待決定的執行並顯示其數量；**劇本執行記錄** 列出所有執行。

如果某次執行不再收到工作程序的回應（例如在重新啟動之後），它會被重新接手：佇列中的執行會在 2 分鐘後重新排入佇列，30 分鐘都沒有任何回報的執行會被判定為失敗。

## 概覽

**產品 → Security Events → 概覽** 是開啟此產品時進入的頁面：

- 指派給你的未關閉案件、尚無人接手的未關閉案件，以及等待核准的劇本步驟；每個數字都會開啟列出它們的頁面。
- **平均確認時間**、**平均遏止時間** 和 **平均關閉時間**，以最近 30 天內開啟的案件計算：分別是從案件開啟到有人接手（指派給某個人，或將它移出 New 狀態）、到 Contained、到 Closed 所花的時間。仍在等待中的案件不計入平均值。
- 30 天內每天開啟的案件數（依優先順序劃分），以及 14 天內每天產生的偵測數（依來源劃分）。
- 依優先順序和狀態劃分的未關閉案件、最近 30 天的結論、案件背後的 ATT&CK 戰術、觸發最多的偵測，以及被最多偵測結果提到的實體。

在這些內容上方，一個橫條會顯示安全性的設定情況：來源、偵測、案件和劇本，各自附上數字。還沒有完成設定的專案會在那裡看到 **開啟推薦設定** 和 **傳送測試攻擊**；請參閱 [安全性入門](/docs/telemetry/security-getting-started)。沒有任何需要處理的內容時，頁面會顯示 **一切正常**，有可以呈現的資料時才會顯示圖表。

## 尋找威脅

- **實體** 會依最近一天、一週或一個月內被偵測結果提到的次數，為使用者、主機、位址和雜湊排名，並可在 30 天的事件中查詢任何值。
- **Rule Library** 提供現成的偵測規則，涵蓋身分識別、端點、雲端、網路、Web 和 Kubernetes 威脅。每一條都是針對所有已連線來源正規化後的欄位所撰寫的 Sigma 規則。**新增規則** 會把它建立為你自己的偵測規則，處於啟用狀態，並且開啟的是案件而不是警示；之後可以像其他規則一樣在 **Detection Rules** 下變更它。標記為 **推薦** 的規則會在 Status200 已有的資料中找出威脅，一個按鈕即可新增您還沒有的那些規則。
- **ATT&CK Coverage** 會繪製 MITRE ATT&CK 矩陣，點亮已啟用規則所涵蓋的技術，並以外框標出規則庫中的規則可以涵蓋的技術。

## 自動化

- **工作流程**：案件或備註在建立、更新或刪除時可以啟動工作流程。**Run a workflow** 步驟會啟動一個以 Webhook 為觸發器的工作流程。
- **API**：與 Status200 的其他部分一樣，案件、備註、偵測、劇本、執行和受保護的實體也都有 REST API，位於 `/security-case`、`/security-case-note`、`/security-detection`、`/security-playbook`、`/security-playbook-run` 和 `/security-protected-entity` 之下。請參閱 [API 參考](/docs/api-reference/api-reference)。
- AI 代理程式：MCP 伺服器提供了用於案件、備註、偵測和劇本的工具。請參閱 [MCP 伺服器](/docs/ai/mcp-server)。

## 疑難排解

:::details 規則符合了，但沒有開啟案件
檢查規則 **符合時** 步驟中的 **Open a Case on Match**。如果偵測涉及的實體已經有未關閉的案件，該偵測會併入那個案件，而不會另外開啟一個：請在那個未關閉案件的 **Detections** 下找它。
:::

:::details 案件沒有通知到任何人
查看案件的 **時間軸**，其中會顯示通知了誰。**新的安全案例** 通知會傳送給案件達到其所選優先順序的人，因此 Medium 案件不會通知任何保留預設 **高和嚴重** 的人。請檢查應收到通知的人能否檢視安全案件（具有某個 Security 角色，或是 Project Owner 或 Project Admin），以及他們在 **使用者設定 → 通知設定 → 安全性** 下是否開啟了該通知。
:::

:::details 劇本沒有執行
檢查劇本是否已啟用、它的 **觸發器** 設定是否合適（Case Opened 只在案件開啟時執行一次），以及案件是否符合它的 **For Cases At Least**、**Only For Detections From** 和 **Only For These Detection Rules** 設定。手動開啟的案件沒有偵測，因此限定了來源或規則的劇本不會在它上面執行。
:::

:::details 圍堵類步驟失敗
在案件上開啟這次執行：該步驟會針對每個使用者或主機說明產品是拒絕了操作、找不到它，還是無法連線。請檢查連線的認證資訊是否有權進行此變更，並使用連線所在列中的 **測試連線**。
:::

:::details 圍堵類步驟被略過
案件不涉及任何使用者或主機，例如只涉及一個位址，或者它涉及的每個使用者或主機都受到保護。在案件上開啟這次執行：該步驟會說明是哪一種情況。
:::

## 後續步驟

:::cards
- [安全性事件](/docs/telemetry/security-events): 傳送事件、撰寫偵測規則並連線安全性產品。
- [威脅情資](/docs/telemetry/threat-intelligence): 將你的事件與 STIX/TAXII 情資來源比對。
- [安全性中的 Status200 AI](/docs/telemetry/security-ai): 用 AI 研判案件、草擬偵測規則，並詢問安全性問題。
- [權限參考](/docs/permissions/reference): Security 角色以及每個角色能做什麼。
:::
