跳轉到主要內容

安全性模型

UPP 使用**「首次批准 + 預先共用金鑰」**安全性模型,平衡了安全性和易用性。

關鍵原則

  1. 需要使用者批准 - 新執行節點需要明確的使用者批准
  2. 基於金鑰的認證 - 已知執行節點使用預先共用金鑰進行認證
  3. 僅限內部網路 - 專為區域網路部署設計,不暴露到公共網際網路
  4. 金鑰持久化 - 金鑰安全保存以供未來連接使用

認證流程

UPP 認證流程:展示執行節點註冊和金鑰驗證過程的決策樹

首次連接

執行節點首次連接時(不使用金鑰):

1. 執行節點傳送登錄

2. Qaptly 顯示批准對話框

Qaptly Desktop 中出現對話框:

3. 使用者決定

如果使用者批准:
如果使用者拒絕:

4. 執行節點儲存金鑰

重要: 為了將來的連接,請保存 assignedKey!

後續連接

對於具有有效金鑰的已知執行節點:

1. 執行節點透過金鑰傳送登錄

2. Qaptly 驗證金鑰

金鑰對已保存的雜湊進行驗證。不需要使用者互動。

3. 自動批准


預先共用金鑰(進階)

對於生產部署,您可以在首次連接之前預先配置金鑰。

使用情境

  • 嵌入式設備: 使用預先配置的金鑰部署
  • CI/CD 管道: 自動化測試執行節點
  • 群集管理: 一次部署多個執行節點

實作

1. 手動生成金鑰

在 Qaptly Desktop 的執行節點擴展設定檔中新增:

2. 將金鑰部署到執行節點設備

3. 執行節點連接

執行節點將自動獲得批准,無需使用者互動。
預先共用金鑰適用於:
  • 生產環境
  • 自動化測試
  • 無頭部署
  • 群集管理

安全性最佳實踐

1. 僅限內部網路

UPP 專為區域網路部署而設計: ✅ 正確: ws://<qaptly_desktop_ip>:18765/upp(如 192.168.1.100 的區域網路 IP) ❌ 禁止: 暴露到公共網際網路或綁定到公共 IP 位址 安全性指南:
  • 僅部署在受信任的內部網路上
  • 如有需要,使用防火牆規則限制存取
  • 考慮使用 VPN 進行遠端執行節點存取
  • 請勿將連接埠 18765 轉發到網際網路

2. 金鑰儲存

不要:
  • 將金鑰提交到版本控制
  • 公開共用金鑰
  • 為多個執行節點使用相同金鑰
  • 在生產環境中以純文字儲存金鑰
要:
  • 使用環境變數或設定檔
  • 設定適當的檔案權限 (chmod 600)
  • 為開發/生產環境使用不同的金鑰
  • 定期輪換金鑰(選項)

3. 執行節點 ID 唯一性

選擇唯一的執行節點 ID:

4. 版本資訊

始終包含準確的版本號:
這可協助使用者識別過時的執行節點。

金鑰管理

金鑰生成

Qaptly 使用以下方式生成金鑰:
  • 256 位隨機位元組
  • 十六進位編碼
  • 密碼隨機數生成器

金鑰儲存

金鑰透過以下方式儲存:
  • SHA-256 雜湊(不是純文字)
  • 安全的檔案權限
  • 備份機制

金鑰輪換(選項)

輪換金鑰:
  1. 使用者: 在 Qaptly Desktop 中撤銷舊執行節點
  2. 執行節點: 不使用金鑰連接(首次流程)
  3. 使用者: 批准並接收新金鑰
  4. 執行節點: 儲存並使用新金鑰

錯誤代碼

認證錯誤

處理 AUTH_FAILED


斷開後重新連接

如果執行節點斷開連接(網路問題、重新啟動等):

5 分鐘內

  • 使用相同金鑰重新連接
  • Qaptly 記得您的登錄
  • 無需使用者批准
  • 事件訂閱已恢復

5 分鐘後

  • 執行節點未登錄
  • 必須再次使用金鑰登錄
  • 與「後續連接」流程相同
  • 如果金鑰無效,可能需要使用者批准

測試認證

測試 1: 首次連接

預期:
  1. 「等待使用者批准…」
  2. Qaptly 中出現對話框
  3. 批准後:「已收到 assignedKey」

測試 2: 重新連接

預期:
  1. 立即成功
  2. 無使用者互動

測試 3: 無效金鑰

預期:
  1. AUTH_FAILED 錯誤
  2. 執行節點應妥善處理

例: 完整認證流程


下一步

協議參考

完整的訊息規範

功能

使用 JSON Schema 定義功能

快速入門

構建您的第一個執行節點

範例

完整的實作範例