跳到正文

安全 ​

Zenavo 持有你自有伺服器的憑據,所以安全是它設計中的首要考慮。

你的伺服器 ​

  • 對於正常運作的伺服器,Zenavo 不保存任何 SSH 金鑰、密碼或叢集憑據。你輸入的 SSH 憑據由初始化任務使用,初始化成功後立即清除,失敗時加密保留一天以便重試,之後清除;不會向 authorized_keys 新增任何內容。
  • 初始化之後,伺服器上的 Zenavo agent 透過 HTTPS 主動向外連線控制面。伺服器不需要為 Zenavo 開放任何連接埠,Zenavo 只儲存 agent 權杖的雜湊值。
  • Agent 的 Kubernetes 權限只覆蓋專案名稱空間,這些名稱空間強制執行 Pod 安全標準的 baseline 級別:不允許特權容器、主機網路或主機目錄。這由准入策略強制執行,agent 無法修改它(防火牆與安全)。
  • 主機金鑰在第一次連線時被固定;伺服器的主機金鑰變化後,初始化會拒絕執行。
  • 每台伺服器只能從 Zenavo 的映像檔儲存區拉取自己團隊的映像檔:它會取得一個有效期五分鐘、僅限團隊儲存庫的權杖,並且映像檔儲存庫對所有人都是唯讀的。映像檔按服務儲存,所以刪除專案會刪除它的映像檔。

建置 ​

Git 建置在專用的建置機上執行,建置機沒有云身份、沒有公開網路位址,也沒有通往控制面或其他客戶的路由。建置步驟無法存取雲後設資料服務或私有網路。BuildKit 以非 root 方式執行,只接受 Zenavo 的用戶端憑證。儲存庫位址僅限公開網路位址上的 https:// 和 SSH,不跟隨重定向。

你的資料 ​

  • 變數和其他機密靜態加密儲存。變數值在日誌中被遮蓋,並對觀察者隱藏。
  • 控制面資料庫只接受加密且經過憑證驗證的連線。
  • GitHub 存取使用短期有效的安裝權杖,範圍僅限你選擇的儲存庫。

你的帳號 ​

  • 密碼以雜湊形式儲存;工作階段有效期 12 小時,可以在 帳號設定 中登出。
  • 工作階段 Cookie 設定了 HttpOnly、Secure 並且僅限當前主機(__Host-),每次修改都要求同源請求並帶有 Zenavo 的請求頭。
  • 基於驗證器 App的兩步驟驗證,以及一次性復原碼。金鑰用主金鑰加密;復原碼以雜湊形式儲存。驗證碼只能使用一次,輸錯的驗證碼按帳號限流。
  • 通行金鑰(WebAuthn),可以單獨使用,也可以和應用一起使用。只儲存公鑰;挑戰只能使用一次、有效期很短,並繫結到工作階段或進行中的登入;簽名計數器倒退的通行金鑰會被拒絕並記入稽核日誌。
  • 新註冊的密碼帳號需要先驗證電子郵件,才能新增伺服器、部署或邀請別人。修改電子郵件或密碼、刪除帳號時,需要輸入當前密碼。
  • 只追加的稽核日誌記錄登入、憑據、伺服器、部署和團隊變更,不記錄機密或變數值。資料庫拒絕修改或刪除其中的記錄。
  • 資料庫檢視透過 Kubernetes exec API 存取資料庫,從不開放資料庫連接埠,憑據始終留在容器中。成員只能讀取(唯讀 SQL 事務、允許列表中的 Redis 讀取指令、MongoDB 查詢);修改需要團隊管理員,影響整個伺服器的 Redis 指令和 MongoDB 中的伺服器端 JavaScript 始終會被拒絕。請求有時間和大小限制,並會被稽核,但不記錄其中的 SQL、鍵、值或文件。

報告漏洞 ​

發郵件到 info@zenavo.app。請在公開之前給我們修復問題的機會。

與 Zeabur 無關聯。