核心功能
secretary 是一个面向 Microsoft 365 生态的数字行政助理,支持通过命令行工具管理 Outlook 邮件收发与 OneDrive 文件存取。用户需先在 Azure AD 注册应用,获取 Client ID 与 Tenant ID 完成身份认证,后续通过 MSAL 库实现 OAuth 2.0 设备流授权。
显著优点
- 原生集成:直接调用 Microsoft Graph API,无需中转服务,数据流转路径清晰
- 轻量部署:纯 Python 实现,依赖仅 msal/requests/python-dotenv 三个标准库
- 读写分离:邮件与文件操作均区分读(list)写(send/upload)权限,最小权限原则
潜在局限
- 配置门槛高:要求用户具备 Azure AD 应用注册经验,包括创建应用、配置 API 权限(Mail.ReadWrite / Files.ReadWrite)、开启公共客户端流等
- 无持久化安全存储:Client/Tenant ID 以明文形式写入 .env 文件,缺乏密钥管理服务(KMS)或硬件安全模块(HSM)保护
- 令牌生命周期管理:报告未提及 refresh_token 自动续期机制,存在授权过期导致服务中断风险
- 权限粒度粗:Microsoft Graph 的 Files.ReadWrite 为全驱动器读写,无法限制到特定文件夹
适合人群
- 具备 Azure/Entra ID 管理经验的开发者或 IT 管理员
- 需要在本地环境自动化 Office 365 工作流的企业用户
- 接受手动配置 OAuth 应用的技术型用户
常规风险
| 风险项 | 说明 |
|--------|------|
| 凭据泄露 | .env 文件若未加入 .gitignore 可能意外提交至版本控制 |
| 过度授权 | 默认申请 Mail.ReadWrite 与 Files.ReadWrite,实际可能仅需只读权限 |
| 设备码钓鱼 | 设备流授权需用户主动访问 microsoft.com/devicelogin,存在仿冒页面诱导输入凭证的社会工程学风险 |
| 审计盲区 | 本地脚本调用缺乏集中日志,企业环境下难以满足合规审计要求 |