机器人管理员安全:最小权限原则与令牌泄露防御
把机器人拉进群组,更像把钥匙交给别人。本文讲清机器人能读到什么、令牌为何等于机器人本身、如何评估与紧急切断,以及频道机器人的特殊风险。
把机器人拉进群组,更像把钥匙交给别人。本文讲清机器人能读到什么、令牌为何等于机器人本身、如何评估与紧急切断,以及频道机器人的特殊风险。

把机器人加入社区感觉像是安装了一个功能。其实更接近于把钥匙交给别人,因为机器人并不是在你的群组里运行的软件——它是在别人的电脑上运行的软件,持有一个能让它在你的房间里行动的凭证。
第058步确立了权限规则:绝不要授予机器人添加管理员的权限。本步讲的是这条规则底下的部分——另一端究竟是谁、这个凭证是什么,以及出事那天该怎么办。
完成本步后你将能够
- 解释机器人在默认状态下和作为管理员时分别能读到什么。
- 在添加机器人之前,用你真正能核查的东西来评估它。
- 说明令牌是什么,以及为什么它就是机器人的全部。
- 从两端立即切断一个机器人。
机器人实际住在哪里
你群组里的机器人在 Telegram 内部没有任何代码。某个地方有一台服务器持有凭证——也就是令牌——并用它来接收消息和采取行动。你看到的账号只是那台服务器的一张脸。
由此产生三个后果,而它们在群组里全都看不见。
谁持有令牌,谁就是机器人。 不是构建它的人,不是推荐它的人——而是持有那串字符的人。如果它被提交到公开仓库,或者放在别人能读到的机器上的配置文件里,机器人就已经悄悄易主,而表面毫无差别。
它的行为随时可能改变。 运营者可以在一条消息和下一条消息之间改变行为。没有版本号,没有需要你批准的更新,也没有通知。一个一年来表现完美的机器人,只能证明过去。
它接收到的一切都会离开平台。 机器人能看到的内容都会被传输到那台服务器,并按那里适用的规则处理,而你无法检查那些规则。
你把一个普通机器人加入群组。它会收到什么?
群里发布的一切内容,从它加入的那一刻起
默认情况下,只有发给它的消息——命令、回复、提及
在成员单独授予它权限之前,什么都不会收到
默认范围很窄,而且这是一个真正不错的默认值。但它是默认值而非保证:机器人的所有者从他们那一端控制这个设置,而把机器人设为管理员会彻底改变局面。所以,告诉成员们的准确说法不是“机器人读不到群组”,而是“这一个会收到发给它的内容,而它由这些人运营”。第一句话是你没有资格做出的承诺。
当你把那个机器人设为管理员时,会发生什么变化?
与读取无关;它只是获得了执行操作的能力
它能看到整个对话,并且可以在其权限允许的范围内做任何事
它能看到整个对话,但必须先请求才能执行操作
这是社区管理中最大的一次单方面让步,而它只需两次点击。管理机器人无法过滤它看不到的内容,所以这项能力是内在必需的,而非过度——但这意味着整个对话现在会持续流向别人的服务器。对于你评估过的工具,这是合理的取舍;对于别人在评论里推荐的机器人,则是糟糕的取舍。这个决定应该在提升权限的那一刻做,而不是在添加的那一刻。
你怎么查明一个机器人在你的群组里实际做了什么?
向运营者索要日志
查看近期操作日志,它的每一次管理操作都记录在其中
无法得知;机器人操作不会被记录
拥有管理权限的机器人会像人一样出现在第059步的日志里,每一次删除、限制和设置更改都归到它名下。这是你对其行为唯一的独立记录,也正是那一步养成的习惯在这里最重要的原因:添加任何自动化之后第二天读一遍日志,之后每月读一次。一个每小时删除三条你本不会删除的消息的机器人,在其他任何方面都是看不见的。
你决定某个机器人必须走。真正能切断它的是什么?
移除它的管理员权限
从你的个人账号中屏蔽它
将它移出群组——如果它是你的,还要吊销令牌
把它从群组移除会立即终止它对该房间的访问,这是应当首先迅速采取的行动。只收回它的权限却把它留在原地,是人们会采取的折中办法,而这会留下一个仍然能收到其设置所允许内容的成员。从你自己的账号屏蔽它对群组毫无作用。如果这个机器人是你自己运行的,而担忧是凭证泄露,那么令牌也必须吊销——否则持有它的人仍然控制着这个机器人被添加过的所有其他地方。
用你能核查的东西评估机器人
没有审核流程,没有发布者验证,安装时也没有权限确认界面。你拥有的只是一些可观察的信号,而它们总比没有好。
它背后有真人吗? 一个链接到某个可识别之人的频道、网站或账号的机器人,押上了你可以损害的声誉。一个在任何地方都没有归属信息的机器人,什么都没押上,明天就能被替换。
它索要的东西和它做的事匹配吗? 一个发布每日摘要的机器人不需要限制成员。一个欢迎机器人不需要更改群组信息。任何索要超出其功能所需权限的东西,都是现有最清晰的警告信号。
它是开放的吗,有人自己运行它吗? 公开源代码不能证明服务器运行的就是那份代码,但它让行为可以被检查,也意味着除作者之外还有人读过它。
它在第一周表现如何? 用最低权限添加它,观察日志,只有当你能够说出它做不到的某件事时,才授予更多权限。
而贯穿这一切仍然成立的规则是:一个想要添加管理员权限的机器人,作为候选就已经出局了,无论它给出什么解释。没有任何正当的管理功能需要创建管理员的能力,而授予它的后果就是:控制这个机器人的人可以创建出一个把你移除的人。
现在试一试——五分钟
四个步骤,而第一步会让大多数运营着有一定年头社区的人感到意外。
- 列出你管理的每个房间里的每一个机器人 它们会和人一起出现在管理员列表里。大多数社区都会发现一个没人记得添加过的,以及一个一年来什么都没做的。
- 检查那项要紧的权限 看它们中是否有任何一个能添加管理员。如果有,现在就移除——在读完这一页之前。
- 读一读昨天关于剩余机器人的日志条目 第059步的界面,按每个机器人筛选。你要找的是你本不会采取的行动。
- 移除那些不配拥有其访问权限的 没人使用的机器人是一项没有附带任何好处的长期权限,也是最容易消除的一类风险。
频道里的机器人是另一种安排
以上一切都假设是群组。频道会改变两件值得在添加自动化之前了解的事。
第一,没有管理权限的机器人根本无法在频道里发帖,所以不存在低权限的起始位置——这个决定是立即做出的,而非逐步做出的。第二,也更重大:它发布的内容会以频道的身份出现,带着你的名字和头像,与你亲手写的任何内容无法区分。
订阅者无法分辨哪些帖子来自真人、哪些来自脚本。这对定时发布很方便,但也意味着一个行为异常或被入侵的机器人看起来不像机器人在乱来——而像是你的频道在说某些话。读第059步的日志,并在权限界面上把发帖权限与其他一切分开,就是全部的防御。
这个阶段的常见问题
成员能看出机器人能看到什么吗?
从群组里看不出来。机器人会显示为一名成员,如果被提升也会出现在管理员列表里——但决定它接收多少对话内容的设置属于它的所有者,且不会显示。既然成员会问,诚实的答案就是测验里的那个:描述谁在运营它、它是做什么的,而不是对它看不到什么做出断言。
带验证标记的机器人安全吗?
标记是关于身份的声明,而不是关于行为的——这与第063步关于冒充的观点相同。它告诉你这个账号确实是它自称的那个,这对防范仿冒确实有用,但对代码如何处理你的对话只字未提。把它当作上述评估中的一个信号,而不是一种认可。
如果机器人的服务器宕机,我的群组会怎样?
它原本在做的事会停止,悄无声息。群组里没有错误消息,也没有通知——欢迎消息就是不再出现,过滤器不再过滤,摘要不再送达。这是迄今为止最常见的机器人故障,也是不要把任何承重的东西建立在你无法控制的自动化之上的理由。偶尔检查一下它是否仍在工作,而不是想当然。
机器人能读到我发给别人的私信吗?
不能。机器人只接收它与你自己的聊天中发生的事,以及(受上述设置约束)它被添加进的群组中发生的事。它看不到你的其他对话、你的联系人或你的账号。暴露范围以你把它放在哪里为界——这正是上面步骤得出的清单值得保持简短的原因。
我应该自己写一个,而不是用别人的吗?
对于任何简单的东西,这比人们以为的更可行,第086步起就是这条路径。诚实的取舍是:你要接手令牌、服务器和宕机。对于依赖该自动化的社区,这值得;对于一个欢迎消息,则不值得,而更好的答案通常是需要更少的自动化,而不是运行更多的自动化。
有没有办法把机器人限制在一个话题里?
在论坛式群组里,从实际效果看是可以的——可以把机器人的输出指向某个特定话题,这正是第057步为自动化消息推荐的安排。这关乎它在哪里写,而非它能读什么,所以它整理了房间却没有减少访问权限。访问权限仍然由你授予的权限决定。