第二部 · 第 16 章

安全測試矩陣與證據分級

用可審核分類區分安全、隔離測試、需核准與永不自動化。

已撰寫

本章概覽

先說結論:任何事情都先分類,這一章不執行測試。你會把提案分成安全、隔離測試、需核准、永不自動化四類;閘門不完整就停在紙上。

目的
在任何動作發生前,用四類矩陣判斷提案能否繼續。
準備
一張空白分類票與提案的無實值文字描述;不需要測試環境。
時間
約 20 分鐘。
系統變更
不執行現場測試;只把測試案例離線分成證據與安全類別。
預期結果
能分辨安全、隔離測試、需核准與永不自動化四類,並把所有環境成果保持為未證實。
停止條件
  • 不得連接 KNX bus;不得傳送 telegram;不得群組讀寫;不得實體控制。
  • 隔離、書面核准、停損或回復證據不完整。

範圍與安全界線

分類票不是執行許可。本章不連線、不啟動、不重新載入、不變更,也不收集現場結果。提案含多個動作時,必須拆開,並採其中最嚴格的類別。

  • 安全:只限離線唯讀固定來源,或完全不存取執行環境的占位工作;不得啟動 daemon、接觸端點或裝置,也不得傳送 KNX telegram。
  • 隔離測試:只可在另案已有明確書面核准、非正式測試環境、管理員在場、有限網路暴露與已驗證停損還原計畫時評估。實體隔離測試 bus 僅限另行核准且確實需要它的演練;只做生命週期演練時,所有 KNX 介面、USB/裝置映射、實體 bus、正式 KNX 網路、ETS 專案與實體負載都必須斷開。缺一項就不能進入。
  • 需核准:任何查看或變更執行中環境的提案,都要先有明確書面核准、限定維護範圍與資料去識別。即使只對 live/running 環境做唯讀查看,也屬需核准,不會自動成為安全;此類不得傳送 KNX telegram,不得執行 ETS 動作,也不得實體控制。
  • 永不自動化:教材或自動化在任何情況下都不得群組讀取,不得群組寫入,不得傳送 telegram,不得執行 ETS programming/download,不得連接 KNX 介面或 bus,不得收集或發布環境識別資料,也不得實體控制;測試 bus 也不例外。沒有任何閘門可改變此分類。

加入 repository、安裝或啟動還必須同時具備隔離測試全部閘門,以及核准的 immutable artifact/image digest 與 source-to-build attestation。條件不完整就停止;本章不執行這些動作。

核心概念

先拆開,再分類。一個好聽的提案名稱,不能遮住裡面的高風險動作。

四個安檢托盤

先這樣想:你把提案中的每個動作分別放進四個托盤。安全托盤可留在紙上處理;隔離測試托盤要先滿足完整閘門;需核准托盤要先取得限定許可;永不自動化托盤直接封存,不能交給工具執行。

正式名稱:safe 安全、isolated-test 隔離測試、approval-required 需核准、never-automate 永不自動化的動作矩陣。

分類看的是原子動作,不是提案標題。只要一項工作混入更嚴格的動作,整項工作就先停下來拆分。無法判斷時,不得放進安全類。

證據也有上限。文件只證明文件內容;核准只證明範圍獲准;隔離計畫只證明準備條件。它們都不證明 daemon、listener、KNX bus、ETS 或 Home Assistant 整合有成果。

準備與前置條件

先做一張完全離線的分類票。任何欄位不明,就寫「未知並停止」。

  • 目的與非目標:用一句話寫要回答什麼,以及明確不碰哪些系統。
  • 原子動作:每列只能有一個離線閱讀、live/running 環境查看、變更或傳送類動作;不可把兩種閱讀混為安全。
  • 環境邊界:寫離線、隔離候選或執行中環境,不填識別資料。
  • 核准證據:寫核准角色、範圍與期限;口頭同意不算。
  • 隔離證據:寫實體隔離、非正式設備、無實體負載與正式環境斷開。
  • 停損與還原:先寫觸發條件、基準、責任角色與升級方式。
  • 證據上限:先寫完成後最多能說什麼,以及一定不能說什麼。

分段步驟

走完流程仍然不會執行任何動作。

  1. 寫下最小問題。移除預設現場成果的句子,只留下要審閱的問題。
  2. 拆成原子動作。把閱讀、查看、變更、啟動與傳送分列;沒有拆清楚就停止。
  3. 先抓永不自動化。不得群組讀寫,不得傳送 telegram,不得執行 ETS programming/download,也不得實體控制;任何一項出現時,都標記永不自動化並移除。
  4. 判斷需核准。凡是查看或變更 live/running 環境,都標成需核准;唯讀查看也不例外。缺少明確書面核准、限定範圍或去識別計畫就停止。
  5. 檢查隔離測試閘門。逐項核對明確書面核准、非正式測試環境、管理員在場、有限網路暴露與已驗證停損還原計畫。只做生命週期演練時,所有 KNX 介面、裝置映射、實體 bus、正式網路、ETS 專案與實體負載均列為保持斷開;加入、安裝或啟動另需核准的 immutable provenance。
  6. 確認安全類。只有離線唯讀固定來源,或完全不存取執行環境且沒有副作用的占位工作,才可標成安全。
  7. 封存分類票。記下停止理由、證據上限與未決項目,並標明「尚未執行」。

驗證與證據

合格的分類票能在執行前阻止錯誤動作。它不包含命令、測試程序或執行結果。

  • 每個原子動作只有一個四類標籤,衝突時採更嚴格類別。
  • 安全類全部是離線唯讀固定來源,或完全不存取執行環境且無副作用的占位工作。
  • 隔離測試的明確核准、非正式環境、管理員、有限網路暴露、斷開條件、停損與還原閘門逐項可見。
  • 需核准類有明確書面核准、限定範圍與去識別要求;live/running 環境的唯讀查看也列在此類。
  • 永不自動化事項已移除,沒有指令或替代測試方法。
  • 所有環境、bus、ETS 與 Home Assistant 整合成果都維持未證實。

下一步:前往第 17 章,整理備份與還原的紙上治理界線。

故障排除

  • 一列同時像兩種類別:拆成更小動作,並先套用較嚴格類別。
  • 只有口頭同意:視為沒有核准,保持停止。
  • 只有邏輯隔離:不能算隔離測試;必須符合 canonical 隔離閘門。只做生命週期演練時,所有 KNX 介面、裝置映射、實體 bus、正式網路、ETS 專案與負載都要斷開。
  • 沒有還原基準:不得進入任何變更候選,先補紙上計畫。
  • 加入或安裝缺少 provenance:停止,不加入 repository、不安裝、不啟動。
  • 有人想把禁止動作改成手動腳本:拒絕。換工具不會改變永不自動化分類。
  • 分類票開始出現測試結果:移除結果。本章只做執行前分類。

常見問題

進階補充:固定來源支持的是診斷概念,不是現場結果

鎖定的 knxd 文件可支持文件化的驅動診斷與啟動失敗概念;Add-on 文件可支持公開證據與截圖去識別邊界。兩者都不能授權執行,也不能證明 adapter、daemon、listener、KNX bus、ETS 或 Home Assistant 整合的狀態。

取得核准後,永不自動化會變成需核准嗎?

不會。核准不能改變永不自動化的固定意義。

非正式設備就算隔離測試嗎?

不算。所有隔離、核准、範圍、停損與還原閘門都必須齊全。

安全類可以開啟 daemon 或唯讀查看執行中環境嗎?

不可以。安全類只限離線唯讀固定來源,或完全不存取執行環境的占位工作;live/running 環境即使唯讀查看也屬需核准。

分類完成是否表示可以開始?

不表示。分類票不是執行授權。

可以先跑一下再補停損計畫嗎?

不可以。所有閘門都必須在任何動作前完成。

本章會產生任何測試證據嗎?

不會。它只產生尚未執行的分類與停止紀錄。

證據與來源

證據類別:source-bounded

功能對照:documented-driver-diagnostic-states、screenshot-evidence-boundary

固定來源只支持文件所述範圍;本頁不代表任何本機、硬體、網路或 KNX 匯流排驗證結果。