---
title: 將 Security posture 事件傳送至您的 SIEM
url: https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/send-events
description: 從 Compliance API 的 Activity Feed 請求 Security posture 活動，逐欄位讀取其中一筆活動，並透過排程讀取讓您的 SIEM 保持最新狀態，同時擷取延遲出現的活動。
---

<Note>
  若要啟用 Compliance API，請參閱[設定 Compliance API](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-api-access)。
</Note>

本頁將帶您從取得 Compliance Access Key 開始，到讓 Security posture 活動依排程以事件形式送達您的安全資訊與事件管理 (SIEM) 系統。概覽頁面說明了[哪些組織擁有這些活動](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/overview#availability)。您需要一把涵蓋該組織、且具備 `read:compliance_activities` 或 `read:org_audit` 範圍的 Compliance Access Key。

## 請求活動

若只要讀取這些活動，請使用 `activity_types[]` 篩選 Activity Feed。在此請求中，`created_at.gte` 設定要讀取的最早 `created_at`，而 `order=asc` 會先傳回最舊的活動：

```bash cURL
curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/activities" \
  -H "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  -H "anthropic-version: 2026-10-21" \
  --data-urlencode "activity_types[]=org_security_control_attestation_updated" \
  --data-urlencode "created_at.gte=2026-10-20T00:00:00Z" \
  --data-urlencode "order=asc" \
  --data-urlencode "limit=5000"
```

[API 參考資料](https://platform.claude.com/docs/zh-TW/api/compliance/activities/list)說明了每個參數。

## 讀取一筆活動

回應的 `data` 陣列中的每個元素都是一筆像這樣的活動。

```json
{
  "id": "activity_01Hq7ZtYc4Vb2NmKx8RsPd3W",
  "type": "org_security_control_attestation_updated",
  "created_at": "2026-10-20T15:04:00.220114Z",
  "organization_id": "org_01JuY4bkwkH1x4PodBJaWmh2",
  "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
  "actor": {
    "type": "user_actor",
    "email_address": "jane.doe@example.com",
    "user_id": "user_01WxYzAbCdEfGhJkMnPqRsTu",
    "ip_address": "192.0.2.34",
    "user_agent": "Mozilla/5.0..."
  },
  "control": "directory_sync_enabled",
  "action": "attested",
  "status": "accepted_risk"
}
```

* `control` 指出[安全控制措施](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/overview#controls)，也就是一項建議的設定或做法。
* `action` 說明[該控制措施的聲明](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/overview#attestations)（某人針對該控制措施所記錄的陳述）發生了什麼事。此處的 `attested` 表示針對原本沒有聲明的控制措施記錄了一筆聲明。
* `status` 是該聲明的值。此處為「已接受風險」(`accepted_risk`)：該控制措施未落實，而組織接受此風險。
* 此處的 `actor` 以使用者 ID 和電子郵件地址識別[做出聲明的人](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/overview#who-can-see-who-attested)。
* 此處的 `created_at` 是對方做出聲明的時間。

[Security posture 事件參考資料](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/events-reference)列出了更多欄位和值。

## 如果回應為空

空的 `data` 陣列是有效的。Activity Feed 只包含自其[開始為該組織記錄這些活動](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/events-reference#what-the-feed-does-not-record)以來所做的變更。在有人做出或變更聲明之前，它都是空的。

請確認該組織[擁有這些活動](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/overview#availability)。接著請某人對一項控制措施做出聲明。一段時間後，重複該請求。

## 依排程執行

這些活動中的任一筆，都可能比 Activity Feed 一般 1 分鐘的[索引延遲](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-integration-patterns#window-polling)更晚才可供查詢，且其 `created_at` 已是過去的時間。因此，只會向前推進（依據游標或不斷推進的 `created_at.gte`）的整合，永遠不會看到這類活動。請在每次執行時重新讀取固定 4 小時的回溯時間範圍，並捨棄您已儲存的活動：

```text
query = activity_types[]=org_security_control_attestation_updated
      & created_at.gte={now - 4 hours}
      & order=asc
      & limit=5000
cursor = null
loop:
  if cursor is null:
    page = GET /v1/compliance/activities?{query}
  else:
    page = GET /v1/compliance/activities?{query}&after_id={cursor}
  for activity in page.data:
    if activity.id is not in stored_ids:
      store(activity)
      add activity.id to stored_ids
  if not page.has_more: break
  cursor = page.last_id
```

* **頻繁執行：** 依您警示所需的頻率執行迴圈，例如每 5 分鐘一次。
* **整個執行期間使用相同的查詢：** 在每次執行開始時計算 `created_at.gte`，使用 UTC 並經過 URL 編碼。在每一頁都傳送相同的篩選條件與 `order`。使用 `order=asc` 時，將 `last_id` 作為 `after_id` 傳入，會傳回下一頁時間較晚的活動。[分頁瀏覽結果](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-activity-feed#paginate-results)說明了 `after_id` 與 `last_id`。
* **依 `id` 去除重複資料：** 此步驟為必要，因為連續的執行會互相重疊。
* **處理執行失敗：** 如果請求在經過[處理 Compliance API 錯誤](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-errors)中的重試後仍失敗，請結束該次執行。下一次執行會重新讀取其整個時間範圍。如果執行失敗或停止超過 4 小時，下一次[每日重新讀取](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/send-events#re-read-15-days-once-a-day)會讀取這些執行漏掉的活動。

## 每天重新讀取 15 天一次

每天一次，以 15 天的回溯時間範圍取代 4 小時，執行相同的迴圈。此每日重新讀取也會讀取在其 `created_at` 之後最多 14 天才可供查詢的活動。

* 記錄每次完成的每日重新讀取的開始時間。
* 只有在您儲存某個 `id` 的時間比最近一次記錄的開始時間早超過 16 天時，才刪除該已儲存的 `id`。
* 如果沒有記錄任何開始時間，請將 `created_at.gte` 往前設定到您所需的時間點；Activity Feed 會保留活動 6 年。
* 如果距最近一次記錄的開始時間已超過一天，請在下一次每日重新讀取時，將 `created_at.gte` 設為該開始時間之前 15 天。

## 如果您已擷取完整的 Activity Feed

若整合會讀取整個 Activity Feed，且沒有使用會排除這些活動的 `activity_types[]` 篩選條件，就已經會收到這些活動。請檢查兩件事：

* **無法識別的值：** 您的處理程式會原樣傳遞任何無法識別的 `type` 或[欄位值](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/events-reference)。請參閱[了解 Activity 物件](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-activity-feed#understand-the-activity-object)。
* **延遲出現的活動：** 只請求時間較晚的活動的整合，會漏掉延遲才可供查詢的活動。請為該整合加入[4 小時重新讀取](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/send-events#run-it-on-a-schedule)與[每日 15 天重新讀取](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/send-events#re-read-15-days-once-a-day)。

## 確認運作正常

某人聲明某項控制措施後，執行迴圈，直到它儲存新的活動為止。接著再執行一次：它不會再次儲存該活動。

## 後續步驟

若要依據您儲存活動的時間（而非其 `created_at`）發出警示，請參閱[偵測 Security posture 的變更](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/detect-changes#before-you-write-a-rule)。關於開放網路安全結構描述框架 (OCSF)，請參閱[將 Security posture 事件對應至 OCSF](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/ocsf-mapping)。關於目前結果，請參閱[Security posture 結果參考資料](https://platform.claude.com/docs/zh-TW/manage-claude/compliance-security-posture/results-reference)。
