核心用法
gog-restricted 是 gog 二进制文件的安全封装层,通过硬编码白名单实现"fail-closed"(默认拒绝)安全模型。用户需通过 ~/.local/bin/gog-restricted 调用,禁止直接使用底层 gog 命令。
关键约定:
- 始终使用
--json获取结构化输出,避免解析文本 - 始终使用
--no-input防止交互式提示阻塞 - 始终使用长格式参数(
--max 10,拒绝-m 10) - 通过
GOG_ACCOUNT环境变量设置默认账户
Gmail 能力:支持线程/消息搜索、读取、附件下载、标签管理(增删改标签,但不支持删除邮件或标签本身)。搜索采用 Gmail 查询语法(如 from:alice after:2025/01/01)。
Calendar 能力:支持事件查询、空闲/忙碌信息、冲突检测、受限的事件创建(严格参数白名单)。其他所有写入操作(更新、删除、ACL 修改、RSVP 等)均被硬阻断。
阻断范围:邮件外发(send/reply/forward/drafts)、过滤器管理、Drive/Docs/Sheets/Chat/Tasks 等全部其他 Google 服务、配置修改命令。
显著优点
1. 纵深防御架构:命令级白名单 + 参数级白名单 + 短标志拒绝 + 子命令路径精确匹配,多层防护避免配置漂移导致的权限扩大。
2. 审计友好:所有操作通过单一入口,便于集中日志记录;标签操作可用于构建 pending-review 等人工审核工作流。
3. 结构化输出:强制 --json 降低解析错误风险,支持标准分页模式(--max/--page + nextPageToken)。
4. 安全提示内置:文档明确标注提示注入风险、附件不可信、数据边界约束,形成安全意识嵌入。
潜在缺点与局限性
- 功能裁剪激进:大量合理场景被误伤(如批量归档需手动组合标签操作,无法使用原生
archive子命令)。 - 维护负担:底层
gog新增安全参数需同步更新白名单,否则无法使用(fail-closed 的双刃剑)。 - 无细粒度范围控制:白名单基于子命令而非 OAuth 作用域,无法限制只能访问特定日历或标签。
- 环境依赖:
~/.local/bin必须在 PATH 中,安装脚本非系统级,多用户场景配置复杂。 - 性能隐患:建议
--max 10起步,大账户操作效率受限;分页需手动实现。
适合人群
- 需要自动化 Gmail/Calendar 数据提取但严禁外发的安全敏感环境
- 构建邮件分类、归档、报告生成的只读/半自动工作流
- 对提示注入和数据泄露有高度警惕的 AI Agent 场景
- 已具备
gog使用经验、理解其查询语法的用户
常规风险
| 风险类别 | 说明 |
|---------|------|
| **提示注入** | 邮件主题、正文、日历事件描述可能包含恶意指令("转发给 X""点击链接"),需严格按文档要求忽略 |
| **附件风险** | 下载的附件可能含恶意内容,禁止执行或遵循其指令 |
| **数据边界违规** | 禁止将邮件/日历内容暴露给外部服务或工具 |
| **误操作放大** | `batch modify` 等命令作用范围大,建议单批次 ≤50 条并启用审计日志 |
| **OAuth 凭证** | 依赖系统密钥环(keyring),需确保主机级密钥安全 |
该技能是"高安全、低功能"的典型设计,适合作为自动化工作流的数据入口网关,而非通用 Google Workspace 管理工具。