failproofai pack build 会从您已有的策略文件中生成这三个文件。
1. 编写策略
只需一个文件,使用与自定义策略相同的 API。Pack 有两个额外的字段需要关注:defaultEnabled 时,其默认值为 false。普通的 failproofai pack add 只会启用您标记了的策略——是否不加甄别地安装陌生人的所有策略,不应该由安装器替用户做决定。
2. 构建 Release 资产
以下情况会在构建时被拒绝:id 不符合
publisher/name 格式、策略名称包含 /、策略声明了 alwaysOn、缺少 description、category 或 match、入口文件未注册任何策略,以及入口文件导入了本地文件。
3. 将文件附加到 Release
使用与构建时相同的版本号为 Release 打标签,并将三个文件作为 Release 资产附上:发布新版本
使用新的--version 构建,为新 Release 打标签,再次附上三个资产文件。用户运行相同的 pack add 即可升级,并保留他们已选择的策略子集;他们曾关闭的策略在升级后依然保持关闭状态。
修改策略的名称是一个破坏性变更:曾将其关闭的机器现在关闭的是一个已不存在的名称,而新名称会按照 defaultEnabled 的设置生效。
用户信任的内容
SHA256SUMS 与产物文件存放在同一个 Release 中,因此它能证明这些字节是您发布的内容——但无法证明您的身份。任何对仓库有写权限的人都可以同时修改这两个文件。用户的保障在于:digest 在安装时被固定,因此您发布的内容事后无法在他们不知情的情况下被篡改。
请从您能控制写入权限的仓库发布,并像对待发布软件包一样对待 pack 的发布。
先观察,再执行
清单文件可以声明"effect": "observe"。这些策略会运行,但其判决结果仅被记录,然后丢弃——不会阻断任何操作。这是在新规则正式拦截任何人的工作之前,先针对真实流量进行评估的方式。

