账号与激活

零配置激活、CI 与无人值守机器、离线时会发生什么,以及吊销一台设备到底意味着什么。

激活会把一台机器纳入你的账号名下。正常使用中你几乎不会手动执行它——它已经折叠进了第一次加密的流程里。

零配置激活

新机器上第一次调用 protect / protect-model / build 会一步完成登录(打开浏览器)+ 激活,然后加密:

shell
magiclock protect app.py   # 第一次:登录 + 激活,然后加密
magiclock protect app.py   # 之后每次:立即加密,没有任何提示

显式命令

正常情况下你很少需要直接用到它们,但需要时它们都在:

shell
magiclock activate                  # 认证(打开浏览器)+ 把这台机器纳入账号
magiclock activate --no-browser     # 打印链接 + 验证码,而不是打开浏览器
magiclock status                    # 这台机器的账号与激活状态
magiclock status --offline          # 同上,但不与服务器做实时往返
magiclock deactivate                # 移除这台机器(默认同时在服务端释放席位)
magiclock deactivate --local-only   # 只在本地移除,不触碰服务器

CI 与无人值守机器

用一个门户铸造的令牌代替打开浏览器:

shell
export MAGICLOCK_TOKEN=<来自你账号门户的令牌>
magiclock protect app.py            # 非交互式完成配置,然后加密

正式发行版的 CLI 已经内置了授权服务器地址,只有当你要指向非默认地址时才需要设置 MAGICLOCK_SERVER

环境变量

变量用于作用
MAGICLOCK_TOKENactivate,以及首次加密时的自动激活非交互式登录用的 Bearer 令牌。
MAGICLOCK_SERVERactivate覆盖授权服务器地址(很少需要)。
MAGICLOCK_PASSPHRASEprotect/protect-model/run--lock-passphrase 或便携 --passphrase 产物的非交互式口令。
MAGICLOCK_DECRYPT_KEYrun便携 --emit-key 产物中 run --key 的替代方式。
MAGICLOCK_NO_BROWSER任何认证流程禁止自动打开浏览器(无图形界面的 Linux 也会自动检测到)。
MAGICLOCK_NO_OS_KEYRING所有命令跳过操作系统钥匙串对本地凭据存储的额外包裹——在没有钥匙串服务的精简容器里很有用。

离线时会发生什么

加密(protect/protect-model/build)每次都会与授权服务器做一次实时复核。复核通过就没问题。如果网络不通:

情况结果
服务器可达,授权有效正常加密。
服务器不可达,且最近一次成功复核在 12 小时以内借助离线宽限窗口继续加密。
服务器不可达,且还没有过成功复核(或宽限已用完)阻止,直到重新联网。
服务器可达但明确拒绝(设备被吊销、方案过期/取消)立即阻止——无论在线离线,这种情况都不给宽限。

解密与 magiclock run 完全不受以上任何情况影响。 它们只读取本地已经激活好的凭据——没有网络请求,不依赖服务器,永远如此。不管这台机器现在在线、离线,还是激活后就再也没联过网,都一样。

吊销与移除

magiclock deactivate(不加 --local-only)会通知服务器释放这台机器的席位,并阻止它加密任何新内容。它不会去追溯这台机器此前已经生成的产物——那些产物照常解密,因为解密从不查询服务器或任何吊销名单。如果一台机器丢失或被入侵,移除它能阻止它在你账号名下继续生成新的受保护产物;它不能追溯撤销这台机器之前已经生成的文件。

接下来看什么

  • 安全模型介绍运行时闸门到底检查了什么,以及为什么解密侧的吊销不在设计范围内。
  • CLI 速查列出了本页每条命令的完整参数。