將已儲存的 Security posture 事件與目前結果核對
每天一次,將您的 SIEM 已儲存的聲明活動與端點的目前結果進行比較,並判斷哪些不符需要由人員處理。
Activity Feed 可能會延遲傳送活動,而端點不會保留任何歷史記錄,因此每個來源都可能顯示另一個來源沒有的變更。每日比較可以找出您的安全資訊與事件管理 (SIEM) 儲存區所缺少的內容。並非每一項變更都會被 Activity Feed 記錄,因此某項聲明可能早於 Activity Feed 中該安全控制措施的第一筆活動,且在少數情況下,某項變更完全沒有對應的活動。如果您只回報目前結果,就不需要進行此核對。
您需要一個涵蓋該組織的 Compliance Access Key,其中端點需要 read:compliance_org_data,Activity Feed 需要 read:compliance_activities,或以 read:org_audit 同時涵蓋兩者。
執行核對
請在當天的每日重新讀取完成後再開始每次執行,以便延遲送達的活動都已儲存。
- 使用列出組織列出已連結的組織。您會取得每個組織的
uuid。 - 對每個組織呼叫端點一次。您會取得 200;對於端點不提供服務的組織(請參閱Security posture 可用性),則每次執行都會取得 404。404 表示本次執行未讀取該組織。請保存一份回傳 200 的組織清單,並為每個組織記錄其第一次回傳 200 時的
evaluated_at:即您對該組織的第一次執行。 - 排除排除規則所列的項目。
- 將該組織其餘已儲存的聲明活動依安全控制措施分組,並依
created_at取每組中最新的一筆。每個控制措施會得到一筆活動,或沒有活動。 - 針對剩下的每個控制措施,在判定表中找出其所屬的列。您會得到「相符」、「符合預期」或「需調查」。
- 僅在下一次讀取該組織的執行再次顯示某項「需調查」時,才對其採取行動;對第 6 列則應立即採取行動,而對於第 10 列和第 11 列,則改為依循佔位記錄規則。未讀取該組織的執行既不計入,也不會重新開始等待。
請控制呼叫頻率,並依照429 Too Many Requests的說明處理 429;若某組織的呼叫在您重試後仍失敗,則本次執行視為未讀取該組織,且失敗的呼叫並不代表變更。
比對欄位
請使用下列欄位,將回應中的項目與已儲存的活動進行比對。
| 在回應中 | 在活動中 | 兩者的關係 |
|---|---|---|
organization_id | organization_uuid | 相同的值;活動本身的 organization_id 帶有 org_ 前綴。 |
controls[].id | control | 相同的識別碼,但規則 S2 的情況除外。 |
attestation.attested_at | 最新一筆 attested、changed 或 renewed 活動的 created_at | 在回應中包含該聲明時為相同時間;請以時間而非字串進行比較。 |
status | status | 在聲明生效中期間,attested_completed 與 completed 配對,attested_accepted_risk 和 failed_check_accepted_risk 與 accepted_risk 配對;沒有任何值與 control_failed 配對。 |
排除無法比較的項目
比較之前,請先排除下列項目。
| # | 項目 | 規則 |
|---|---|---|
| S1 | 其 action 不是 attested、changed、renewed、cleared 或 lapsed 的已儲存聲明活動 | 將其完全排除於核對之外;每個新的 action 值標記以供審查一次。 |
| S2 | 提及 mdm_cowork_required_organization 的已儲存聲明活動 | 將其視為 mdm_chat_required_organization 的活動。 |
| S3 | 其控制措施在回應中沒有對應項目的已儲存聲明活動 | 無可比較的內容;將該控制措施回報為不在回應中,絕不可回報為「通過」(passed)。 |
| S4 | status 為 descriptive、not_applicable 或 not_evaluated 的項目 | 略過該項目;該項目為 not_evaluated 的執行不計入該控制措施。 |
判定每項不符的意義
剩下的每個控制措施都恰好符合一列。
| # | 最新的已儲存活動 | 回應中的項目 | 判定 | 處理方式 |
|---|---|---|---|---|
| 1 | attested、changed 或 renewed | attested_at 等於其 created_at;state 為 in_force;status 與其值配對。 | 相符 | 無需處理。 |
| 2 | cleared | attestation 為 null,但第 11 列的情況除外。 | 相符 | 無需處理。 |
| 3 | lapsed,且為「已接受風險」(accepted_risk) | attestation 為 null,或帶有前一筆活動的時間且 state 為 check_passing 或 setting_changed。 | 相符 | 無需處理。 |
| 4 | lapsed,且為 completed 或 control_failed | attestation 為 null。 | 相符 | 無需處理。 |
| 5 | attested、changed 或 renewed | attested_at 等於其 created_at;state 為 review_due、check_passing 或 setting_changed。 | 符合預期 | 未生效:針對每個新的狀態採取一次行動,無需等待活動;回到 in_force 時會重設此情況。 |
| 6 | attested、changed 或 renewed,且為「已完成」(completed),且 created_at 晚於您的第一次執行 | 在第一次比較該活動的執行中,attestation 為 null,且 status 為 failed 並帶有 current_value。 | 需調查 | Security posture 頁面可能會將自動檢查不符合要求的項目顯示為「通過」:標記以供審查,無需等待。 |
| 7 | attested、changed 或 renewed,且為 completed | attestation 為 null;status 既不是 not_attested,也不是 current_value 為 null 的 failed;且不符合第 6 列。 | 符合預期 | 無可比較的內容;回應中永遠不會包含此聲明。 |
| 8 | attested、changed 或 renewed,且被聲明為「未通過」(control_failed) | attestation 為 null;status 為下列三者之一:failed;自動檢查給出的任何狀態;或自結束日期(review_date,以 UTC 計)起為 not_attested。 | 符合預期 | 無可比較的內容;當 status 自結束日期起離開 failed 時,採取一次行動。 |
| 9 | attested、changed 或 renewed,且為 accepted_risk | attestation 為 null,且 status 為 passed、matches_profile 或 exceeds_baseline。 | 符合預期 | 儲存一筆佔位記錄(佔位記錄規則 7)。 |
| 10 | 無,或所有已儲存活動都早於 attested_at | attestation 存在。 | 需調查 | 依循佔位記錄規則。 |
| 11 | 無,或有一筆其值不是 control_failed 的活動 | current_value 為 null,且 status 為 failed。 | 需調查 | 您的儲存區缺少一筆聲明為「未通過」(control_failed)的聲明:依循佔位記錄規則,並在 status 離開 failed 時採取一次行動。 |
| 12 | attested、changed、renewed 或 cleared,時間較 attested_at 晚,且有另一筆幾乎同時的活動 | attestation 存在。 | 符合預期 | 幾乎同時進行的變更可能以任一順序儲存。 |
| 13 | 同上,但沒有這類第二筆活動 | attestation 存在。 | 需調查 | 聯絡 Anthropic 支援團隊,只需聯絡一次。 |
| 14 | attested、changed 或 renewed | attested_at 等於其 created_at;state 為 in_force;status 未與其值配對。 | 需調查 | 聯絡 Anthropic 支援團隊一次。 |
| 15 | attested、changed 或 renewed;先前各列皆不符合 | attestation 為 null。 | 需調查 | 很可能已清除聲明:儲存一筆佔位記錄(佔位記錄規則 7)並標記以供審查(僅需一次)。 |
| 16 | 無 | attestation 為 null,且不符合第 11 列。 | 相符 | 無需處理。 |
| 17 | 任何其他情況 | 任何其他情況。 | 需調查 | 標記以供審查一次。 |
在兩個來源無法比對時保留佔位記錄
佔位記錄代表兩個來源之一所缺少的內容,您應將其與已儲存的活動分開保存。對於第 10 列和第 11 列,請再次讀取 Activity Feed,且只有在 15 天內(即每日重新讀取所涵蓋的範圍)沒有任何活動送達時,才儲存並標記佔位記錄。在您的第一次執行中,請立即儲存,無需審查。
第 10 列的佔位記錄,以控制措施和 attested_at 作為唯一識別:
- 從該控制措施最新的已儲存活動開始再次讀取;若您尚未儲存任何活動,則從
attested_at(含)開始;15 天自attested_at起算。根據該項目建立佔位記錄,並標示為沒有活動;在判定表中,將其視為一筆時間為該attested_at、其值與其status(如有)配對的attested活動。 - 在每次顯示該聲明的執行中,更新其
status和state。 - 當有
created_at等於該attested_at的活動送達時,以該活動取代佔位記錄。 - 當連續兩次執行都未顯示該聲明時,解決該佔位記錄;除非有時間較晚的已儲存活動或該控制措施尚未解決的第 10 列不符可以解釋,或兩次執行都顯示
descriptive,否則將此標記以供審查。 - 未讀取該組織或顯示
not_evaluated的執行,既不計入這兩次執行,也不會重新開始計算。 - 如果該聲明再次出現,重新開啟同一筆佔位記錄。
第 9、11 和 15 列的佔位記錄,僅以控制措施作為唯一識別:
- 對於第 11 列,15 天自第一次顯示該
status的執行起算。在佔位記錄尚未解決期間,不再針對該控制措施標記任何項目;當有時間較晚的活動送達、該聲明出現,或連續兩次執行符合其他列時,解決該佔位記錄。 - 當第 9 列的佔位記錄因聲明顯示為
failed_check_accepted_risk而解決時,將其標記以供審查一次:該風險處於生效中。
實作範例
以下兩次執行讀取的是 Security posture 結果參考資料中回應範例所示的組織;執行 1 是您的第一次執行。
- 執行 1,
directory_sync_enabled。已儲存:attested、accepted_risk,建立於2026-10-20T15:04:00.220114Z。回應:failed_check_accepted_risk、in_force,相同的attested_at。第 1 列:相符。 - 執行 1,
allowed_invite_domains。已儲存:無。回應:descriptive,attestation為null。規則 S4:排除。 - 執行 1,
oauth_conditional_access。已儲存:無。回應:一筆state為review_due的attestation。第 10 列:需調查。在您的第一次執行時,立即儲存一筆佔位記錄,不加審查。 - 執行 2,
oauth_conditional_access。佔位記錄:執行 1 中的那一筆。回應:相同。第 5 列:符合預期。針對review_due採取一次行動。
核對無法發現的情況
對於自動控制措施上回應中省略的聲明,每日核對無法發現其遺失的活動。回應中不會有此類聲明的任何跡象,或只有 status 為 failed,而這看起來就像自動檢查給出的狀態。
當組織停止回應時
曾回傳 200、之後連續多次執行都回傳 404 的組織,需要有人處理一次。請詢問可存取 Security posture 頁面的人員,Security posture 頁面是否已針對該組織被關閉(請參閱Security posture 可用性)。若 Security posture 頁面並未被關閉,請聯絡您的 Anthropic 代表。該組織可能已被刪除,或您對該組織的存取權、Security posture 或端點可能已終止。無論原因為何,都請在不審查的情況下解決該組織的佔位記錄和尚未解決的不符,持續呼叫該組織,並在該組織回傳 200 時重新開啟這些項目。
這個頁面有幫助嗎?