雲控開關
發出去還能收回來的產物——在入口網站一鍵停用或恢復,在它下一次檢查時生效。
MagicLock 預設加密出來的一切都完全離線、永遠能跑。這是一個承諾,而承諾是雙向的:離線產物一旦發出去,你就再也搆不著它了。雲控開關是為那些你確實需要搆得著的場景準備的選用項目。
保護時加上 --web-gate,產物在解密之前會先去取一份由你掌控的簽章許可。你在入口網站把開關撥到關,它就會停——所有執行它的地方,在各自下一次檢查時。撥回來它又能跑,不用重新發佈。
| 離線產物(預設) | 雲控產物(--web-gate) | |
|---|---|---|
| 承諾 | 永遠能跑——訂閱到期、席位變動都不影響 | 你說了算——入口網站一鍵停用/恢復 |
| 執行時連網 | 從不 | 許可有效期內不連網;過期後更新 |
| 發出去之後還能停嗎 | 不能——這是刻意的設計 | 能,在它下一次檢查時 |
適合租賃與訂閱、必須到期即停的試用評估、尾款交付保險、以及外洩止損。其餘情況用預設的離線產物就好。這個選擇是按產物而不是按帳號的——同一個產品裡兩種可以混用。
開啟它
magiclock protect app.py --web-gate
magiclock protect-model weights.bin --web-gate
magiclock build app.py --web-gate登記發生在加密的那一刻,需要連網並已登入。生產一個雲控產物沒有離線後備——一個從未被登記過的產物根本不可能被控制,MagicLock 不會假裝可以。
執行時會發生什麼
- 產物向伺服器索取一份簽章的允許或拒絕。
- 在這份許可仍然有效期間,它完全不連網執行——不是每次執行都要回連。
- 許可過期後它會去更新。收到拒絕就立即停止——沒有寬限。
- 如果更新因為斷網而失敗,它會在寬限視窗內繼續執行,視窗過後 fail-closed。
有兩個細節值得知道。拒絕是黏著的:在一台斷網機器上重放一份舊的允許快取,無法讓已停用的產物復活。以及首次執行必須連網——此時還沒有任何快取許可,也就沒有東西可以後備。
寬限視窗
--gate-grace 決定產物在最後一次取得許可之後還能離線工作多久:
magiclock protect app.py --web-gate --gate-grace 24h
magiclock protect app.py --web-gate --gate-grace 7d可設 1h 到 30d,預設 12h。設得越短控制越緊,但也越依賴你客戶那邊的網路——按實際部署情境來定,而不是按緊張程度。--gate-grace 只能與 --web-gate 一起使用。
管理已經發出去的東西
在客戶入口網站的 產物 頁面,可以看到你登記過的全部產物、它們的狀態與近期活動。停用會在該產物下一次檢查時生效,恢復同樣快。
命令列:
magiclock artifacts # id、標籤、狀態與閘門活動刪除產物是永久的:此後它會一直回答拒絕,且無法恢復。除非你要的正是這個效果,否則請用停用。
讓停用更快生效
雲控產物按它自己的檢查點複查,所以一個長駐行程(伺服器、worker)可能一直靠啟動時取到的那份許可在跑。如果你需要入口網站裡的停用盡快落到這類行程上,讓它定時呼叫 magiclock.revalidate() —— 那會當場強制取一份新許可。這就是「幾秒內停」與「最終會停」的差別。
雲控不是什麼
它不是授權檢查。訂閱到期只會讓你無法打包新產物——不會反過來停掉你已經發出去的東西,無論那是不是雲控產物。入口網站裡那個開關是你的,也是唯一能停下雲控產物的東西。
它也不改變預設行為。沒有加 --web-gate 保護的產物永遠保持離線,無法被遠端停止——包括我們也不能。
可用性
雲控開關包含在每一個付費方案中。它不屬於免費試用——免費試用提供的是完整的離線保護。
為什麼繞不過去
閘門參數是放在加密信封的認證資料內部的,而不是附在旁邊——剝掉它、改掉它、或者移植到另一個產物上,都會直接讓解密失敗。編譯產物則把同樣的參數作為逐模組編譯進去的常數攜帶。
許可由固定在你的 MagicLock 套件內的廠商金鑰簽章,因此偽造或重放的判決無法通過驗章。用於判斷過期與寬限的時鐘,取的是系統時鐘與持久化高水位標記之中較晚的那個,所以把機器時鐘往回撥並不能延長任何東西。