跳转到正文
Automic Vault
GitHub 下载 macOS 版

Max Howell

macOS 保护你的应用。 我们保护你的命令行。

自从我创建 Homebrew 以来,Apple 大幅提升了 Mac 应用的安全性。现在,我正以同样的用心保护命令行。

Automic Vault 为受支持的 CLI 工具补充 macOS 安全保护:保护凭据,逐项授权操作,同时保留你熟悉的命令。

免费且开源。继续使用熟悉的命令,无需代理插件。

Automic Vault 概览,显示已加固的 Tool 和需要处理的项目

已检查 15,000+ 个软件包的凭据暴露情况

以 macOS 安全机制为基础

补上终端中的凭据保护。

多年来,Apple 通过 Gatekeeper、公证、恶意软件检查和敏感数据访问权限,不断加强 Mac 应用的安全性。

命令行工具仍常将凭据保存在其他以你的用户权限运行的代码能够读取的文件或辅助程序中。智能体或依赖项可能因此无需询问你,就能发布版本或修改云基础设施。

Automic Vault 基于 macOS 代码签名、Hardened Runtime 和钥匙串,保护开发者凭据,并授权受支持的命令行操作。

对于 GitHub,av harden gh 会安装我们签名并修改过的 CLI,将现有凭据迁移到 Automic Vault 管理之下。你仍然运行 gh,需要身份验证的操作则会经过它的 Authorization Gate。

了解工具加固方式

秘密管理器应该知道秘密用来做什么。

读取 Issue、发布版本和显示令牌需要不同的权限。AV 会检查完整操作,再应用凭据。

一个令牌,三种决策。
GitHub · 使用 Read Only 策略的 Verified Launcher
命令决策
gh issue list读取议题已授权Read Only
gh issue create创建议题需要批准Remote Write
gh auth token显示令牌需要批准Secret Disclosure

即使不会更改远程资源,披露凭据也需要单独决策。

Homebrew

允许更新索引,安装需要批准。

Homebrew 加固可防止其他以你的用户权限运行的代码修改 /opt/homebrew。在 Read & Update 下,已识别的查询命令和 brew update 可以运行;安装和升级需要你的 Approval。该功能适用于 Apple Silicon 上的 Homebrew。加固期间不支持服务和 shell 补全。

Homebrew 加固原理

AWS

每次调用使用短期凭据。

普通 AWS 命令使用短期会话凭据。长期密钥从共享凭据文件中移除。AV 为每个 AWS 进程单独获取会话凭据。

AWS 加固原理

Docker

进程和注册表都要检查。

在释放注册表凭据之前,AV 会验证正在运行的 Docker Desktop 进程及其签名、运行时保护、进程祖先链、参数和请求的注册表。

Docker 加固原理
常规操作由策略处理,其余由你决定。

保护你的命令行

从 Mac 上已有的凭据开始。

找出工具、依赖项和智能体能够从文件或凭据辅助程序中读取的凭据。每项 Finding 都会说明暴露情况和可采取的措施。

为 Finding 选择支持的 Hardener,再用 av doctor 验证已安装的保护措施。

查看支持的工具
无需安装即可扫描
curl -fsSL https://www.automicvault.com/scanner.sh | bash

下载基于最新发布版本源码构建的小型独立扫描器,验证签名后,在只读且无法访问网络的沙盒中运行。

干净的 Scan 仅表示支持的检查没有发现问题,并不保证整台 Mac 安全。

查看 Detector 的检查内容和可用的 Hardener。
查看 Detector 的检查内容和可用的 Hardener。

决定工具和智能体能做什么

让智能体读取 GitHub,写入前先请求审批。

将智能体的 GitHub Gate 设为 Read Only,也可以为终端选择不同的策略。AV 会验证每个 Launcher 正在运行的软件身份,再应用相应策略。

AV 不会将智能体放入沙箱,也不会阻止任意本地文件修改。

在 Write Access 下,凭据披露和使用权限更高的凭据仍需 Approval。Unknown 操作始终需要人工决定。

对于符合条件的智能体任务,可以在一个 Gate 上授予十分钟有效时间的 Write Access。通过可见的控件,你可以延长、暂停或结束授权。

设置授权范围

代码签名证明身份和完整性,而非意图。任务标识符缩小临时授权范围,并不证明身份。

同一个 Tool,可为每个 Verified Launcher 设置不同规则。
同一个 Tool,可为每个 Verified Launcher 设置不同规则。

给智能体所需的能力

审核一次发布脚本。

让代理准备发布说明,由审核过的脚本发布到 GitHub 并更新 CDN。Blessed Script 将审核绑定到确切内容和声明的能力。可重入脚本通过固定入口提供上下文,等待代理输入后继续执行。AV 对每次调用分别授权;修改脚本会使 Blessing 失效。

构建经过审核的工作流

使用代理输出前必须验证。让 Secret Values 留在脚本执行范围内。Blessing 本身并不让代码变得可信。

ChatGPT 调用发布脚本。AV 在 Approval 前展示声明的能力,并将 ChatGPT 识别为 Verified Launcher。
ChatGPT 调用发布脚本。AV 在 Approval 前展示声明的能力,并将 ChatGPT 识别为 Verified Launcher。

让项目密钥远离明文文件

多个项目可以使用相同 Secret Name,但各自保存不同的 Project Value。AV 选择最近匹配的物理目录对应的值;没有匹配项时使用 Global Value。对于兼容的 HTTP 客户端,Secret Proxy 向应用提供临时引用,并仅向获批目的地应用真实凭据。

了解 Project Values 了解凭据代理

目录选择 Values,不授予权限。同一 Secret Name 下的所有 Values 受相同策略约束。代理引用属于持有者凭据,可以使用会话已获准的访问权限。

一个 Secret Name,包含一个 Global Value 和两个 Project Value。Secret Values 保持隐藏。
一个 Secret Name,包含一个 Global Value 和两个 Project Value。Secret Values 保持隐藏。

审批多台 Mac 上的操作

在同一 iCloud 钥匙串账户下符合条件的 iPhone 上查看已登记 Mac 的请求。每台 Mac 保留自己的 Secrets、策略和 Authorization History,并在本机执行决定。你也可以在某台 Mac 上启用 Touch ID Approval,通过生物识别允许操作。

设置 iPhone 和 Touch ID Approval 通过 TestFlight 加入 iPhone 公测

iPhone Approval 会移除 Mac 上通过鼠标和键盘允许操作的入口。请关闭 iPhone Mirroring 和 Show on Mac,或要求每台符合条件的 iPhone 使用 Face ID 或 Touch ID。中继不可用不会启用替代方式。

在一部 iPhone 上查看来自 Maliwan 和 Pangolin 的两个待处理请求。
在一部 iPhone 上查看来自 Maliwan 和 Pangolin 的两个待处理请求。

保护的边界

AV 针对以你的用户权限运行的代码,保护支持的凭据,并控制支持的 Tool 操作。包装程序不会拦截每条命令,安装软件包也不意味着它是安全的。root 或内核被攻破、任意本地破坏,以及 Target 收到 Secret 后的行为,均不在保护范围内。

阅读安全模型

查看凭据的使用情况

Authorization History 在本地保存允许和拒绝的请求。AV 在释放 Secret 前保存并验证获准 Secret Use 的记录。历史记录有容量限制,不保证防篡改,也不是完整的取证日志。

规范术语定义

免费。开源。macOS。

Mac 应用免费,并采用 Apache-2.0 许可证。可选的 iPhone Approval 需要有效订阅才能发送允许响应。拒绝请求不需要订阅。