安全模型
Walis 會執行任意 shell。下面每一個決定都源自這件事。
誰能做什麼
| 層級 | 控制 |
|---|---|
| 登入 | 預設關閉;對外之前一定要開 |
| 角色 | admin、operator、viewer |
| 任務層級 | 每個任務各有檢視角色與執行角色 |
| 外掛 | 安裝需要 admin——外掛是程式碼 |
看不到的任務回 404 而不是 403,不透露它存在。
建置隔離
建置以服務帳號執行,這表示它原本讀得到 Walis 自己的資料庫——裡面有密碼雜湊、 API 金鑰雜湊與雲端憑證。所以在 macOS 上每個步驟預設都用 sandbox-exec 包住,禁止讀寫資料目錄(Windows 與 Linux 沒有這一層), 建置環境也會移除 ConnectionStrings__*。
你可以再加禁止路徑,也可以限制任務只能在白名單的工作目錄底下執行。
這不是完整隔離——同一個使用者、同一台機器。它擋的是實際會發生的問題 (建置腳本順手把資料庫讀走),而不是已經能以你的身分執行程式碼的攻擊者。
外掛
外掛回傳字串,由 Walis 執行。沙箱(Jint、沒有 I/O、四道資源上限)有其意義, 但真正的控制點是:你在安裝前讀得到它產生的腳本,而且能力必須宣告並經過核准。
備份
壓縮檔裡有密碼雜湊與雲端金鑰,所以只要設了任何遠端目的地就強制要有通關密語。 加密格式與 OpenSSL 相容,還原時完全不依賴 Walis。