跳到主要内容
安全

详解安全模型。

TelegramOS 围绕租户隔离、最小权限和纵深防御构建。本页面是平台如何保护运营者及其数据的权威参考。

最后更新:2026-09-29

租户隔离

每个查询都绑定到一个租户;跨租户访问在结构上不可能实现。

静态加密

Telegram 会话数据在存储时使用平台密钥以 Fernet(AES)加密。消息内容和文件应用层不加密。

强身份验证

为每位运营者提供双因素认证(TOTP加备用码)。采用bcrypt密码哈希。

权限防护

对每个成员变更端点进行角色等级检查。

审计日志记录

针对特权操作的仅追加日志,包含IP和user-agent。

朴实无华的基础设施

Postgres、Redis、NATS、FastAPI、Next.js。经过运营,而非临时拼凑。

架构

该平台是一组通过内部网络通信的FastAPI服务,底层由PostgreSQL、Redis和NATS支撑。Next.js仪表板严格作为外部运营者会调用的同一套API的消费者。不存在任何绕过授权的特权仪表板路径。

网络

  • 所有公开端点仅支持TLS。已启用HSTS。
  • 内部服务间流量运行于私有网络之上;服务身份被强制校验。
  • Webhook投递使用带有每个工作区专属密钥的签名负载。

租户隔离

租户隔离是一项核心不变量。每个经过身份验证的请求都绑定到一个从访问令牌派生的租户ID。数据层在查询构建器中强制执行租户范围限定;端点不会意外跨租户读取数据,因为获取任何数据的API都要求带有租户谓词。

  • 数据库查询通过绑定到请求租户的SQLAlchemy会话进行范围限定。
  • 后台作业继承发起请求的租户身份。
  • 分析汇总数据按租户计算;我们在第二轮审计中发现的跨租户泄漏已在v0.6.0中封堵(参见 更新日志)。

身份验证

  • 账户密码使用bcrypt(成本因子12)并配以独立盐值进行哈希处理。Argon2id仅用于从可选的会话保险库口令派生密钥。
  • 通过 TOTP(Google Authenticator、Authy、1Password)进行双重验证。注册时会发放备份码,运营者必须妥善保存。
  • 会话令牌是短期有效的JWT,与轮换的刷新令牌配对;刷新轮换会使先前的令牌失效。
  • API密钥在静态时经过哈希处理,并在创建时向运营者仅显示一次。

授权和团队

授权基于角色,并支持按成员覆盖。四种角色(owner, admin, operator, viewer)被分级,且每个变更成员身份的端点都强制执行以下规则:非所有者的操作者只能分配严格低于自身的角色,且不得修改与自己同级或更高级别的成员。

  • 角色等级守卫同时出现在POST /teams/{id}/members 和 PATCH /teams/{id}/members/{user}。对称性正是v0.4.0审计所修复的漏洞。
  • 所有者无法通过移除端点被移除;必须先转移所有权。
  • 针对每个成员的权限覆盖无法授予高于操作者自身等级的能力。

加密

  • 传输中: 处处使用TLS 1.2或更新版本。公共端点提供严格的TLS配置;旧协议版本已禁用。
  • 静态时: Telegram 会话和两步验证密码在存储时使用 Fernet(AES)加密。基础密钥是保存在部署环境中的服务机密。对于你拥有的账号,可选的保险库模式会用 Argon2id 从只有你掌握的口令派生密钥——在保险库模式下,没有该口令,存储中的会话无法被读取。 消息文本、联系人和附件在存储时应用层不加密,也没有端到端加密。
  • 密钥轮换: 每租户密钥可通过用新密钥重新封装来轮换,无需重新加密每条记录。

审计日志

每一项特权操作都会记录在审计日志中。条目包括操作者、操作动词、资源类型和ID、结构化元数据(旧值和新值)、IP、user-agent以及时间戳(UTC)。日志在存储层为仅追加。

  • 成员邀请、角色变更、移除。
  • 工作区的创建、删除、所有权转移。
  • 敏感的自动化运行。
  • API密钥的创建和撤销。
  • 影响计费的变更。

运营安全

  • 生产访问仅限于一个使用硬件支持双因素验证的小团队。所有访问均可审计。
  • 任何员工都无法以明文读取租户密钥;按租户的密钥访问受范围限制并被记录。
  • 数据库备份包括保留 7 天的每日转储和最多保留 3 天的时间点恢复备份。备份不加密,存储在数据库所在的同一台主机上,没有异地副本。
  • 版本发布经过标记和签名;发布流水线支持即时回滚。
  • 依赖项被持续扫描;高危通告在7天内修补,严重通告在24小时内修补。

滥用处理

平台对自动化活动进行封号风险评分,并拒绝派发看起来像垃圾信息的任务。第三方的滥用举报会通过信任与安全团队处理;我们配合合法请求,但不会屈从于要求披露的非正式压力。

事件响应

  • 任何影响用户的事件都会呼叫值班工程师。
  • 对于影响不止单个租户的任何事故,我们力求在博客上发布事故后总结。
  • 无论对客户的影响如何,安全事件都被视为P1级别。

负责任的漏洞披露

通过应用内支持报告

我们会在24小时内确认收到报告,并力求在14天内修复已核实的高危问题。我们不会追究在范围内善意行事的研究人员。

范围: telegramos.app 上的服务及其公开 API。
范围之外: 针对员工的社会工程学、拒绝服务,以及我们所依赖的第三方服务上的发现(请向该第三方报告)。

合规和问卷

我们签署数据处理协议,并在保密协议下完成合理的安全问卷。请参阅数据处理附录。如需SOC 2就绪评估、供应商审查和问卷请求,请联系 联系页面。

保障

有保障

租户隔离

在查询层强制执行,每次 PR 都通过测试验证。

有保障

静态加密

每个账号独立的 Fernet(AES)密钥;对你拥有的账号还提供仅凭口令的可选保险库。

有保障

角色等级防护

在任何端点中,没有任何主体可以提升到高于自身的级别。

有保障

仅追加审计

特权操作会连同IP和用户代理一起记录,并在工作区存续期间保留。

有保障

每位运营者均启用双重验证

带备用码的TOTP;密码重置需要两种因素。

有保障

已签名的版本发布

每个发布标签都经过签名;回滚只需一条命令。

关于完美的说明

没有任何平台是坚不可摧的。我们的承诺是:我们从构造上就为隔离而设计,我们审计自己的工作,并且当确实出现问题时,我们会告知您。更新日志 会为每一项与安全相关的更改打标签,以便你能随时间审计我们的工作。

安全 | TelegramOS