在 Discord 服务器上遵循最小权限原则,意味着每个身份组只授予其工作所需的权限。能够管理工单的支持身份组,不需要同时拥有“封禁成员”权限;为验证身份组授予身份的机器人,也不需要位于服务器中的每个身份组之上,只需高于它所授予的那一个身份组即可。大多数服务器在这方面会以两种方式出错:要么因为省事,让所有负有职责的人都拥有管理员权限;要么谁都不给任何权限,结果所有者成了瓶颈。下面说明管理员身份组、员工身份组、机器人身份组的位置,以及受信任账号名单如何配合,并以 Noxyr 实际提供的设置为例。
两个不同的问题:“谁可以配置机器人”与“谁可以在 Discord 中运行管理命令”
这两者并不是一回事,混淆二者是最常见的困惑来源。打开某个服务器的网页控制面板,需要你是该服务器的所有者,或在该服务器中拥有管理员权限;每次加载页面时都会实时向 Discord 核对,而不是依据缓存的名单。而在 Discord 中运行管理斜杠命令,则是另一个可配置的名单:即你在控制面板的设置页面中选择的管理员访问身份组。一个人可能属于能够在 Discord 中运行 /security 的管理员身份组,却永远无法打开控制面板;反之亦然。
- 管理员访问身份组(设置页面):一旦 Discord 完成刷新后的命令权限注册,哪些人可以运行机器人的管理斜杠命令。
- 保留的员工身份组(设置页面):用于支持流程、工单分配等类似场景,本身并不授予管理命令的访问权限。
- 控制面板访问权限:服务器所有者,或拥有 Discord“管理员”权限的任何人。在机器人内配置的管理员身份组不会自动开启控制面板。
为什么“直接给管理员权限”对员工来说是错误的默认设置,而对机器人来说则是正确的默认设置
对于人类员工身份组来说,管理员权限几乎总是过度授权:处理工单的版主不需要删除频道,而赋予他们这种能力,只会扩大一个被钓鱼或不谨慎的账号所能造成的破坏范围。员工身份组应围绕其实际工作来设计,例如工单访问、评价审核、目录编辑;而完整的管理员权限,则只保留给那些即使账号明天被盗,你也愿意把整个服务器交给其处理的人。
机器人本身是唯一适合授予管理员权限的地方:Noxyr 需要创建工单频道、在验证期间管理身份组、对反大规模破坏的触发作出反应,并在为某个功能配置的任何频道中发帖。而管理员权限是确保这些操作不会在权限覆盖异常的频道中悄无声息地失败的最简单方法。如果你更希望只授予特定权限,Discord 权限参考列出了每项权限涵盖的具体内容。至少,机器人需要“管理身份组”“管理频道”“管理消息”“踢出成员”“封禁成员”“管理成员”和“查看审计日志”,其安全与管理功能才能正常运作。
身份组层级:悄无声息地破坏验证和反破坏功能的错误
Discord 不允许任何机器人(包括这个机器人)授予或移除位于该机器人自身最高身份组之上的身份组,也不允许其操作最高身份组高于该机器人的成员。这种情况特别会出现在以下两个地方:
- 验证:如果验证身份组在服务器的身份组列表中位于机器人身份组之上,点击验证将毫无反应,Discord 会悄悄拒绝授予。请将机器人身份组移到验证身份组之上。
- 反破坏和管理:如果某个账号的最高身份组高于机器人的身份组,机器人就无法对其进行禁言、踢出或封禁。这一点对于被盗用的联合所有者账号尤为重要,而这正是反破坏功能存在的意义所在。请确保机器人的身份组足够高,以便能够处理你真正需要它处理的账号。
每次调整身份组之后,可以快速检查一下:打开服务器设置 → 身份组,确认机器人的身份组仍然位于它需要授予或操作的任何身份组之上。这是“为什么机器人什么都不做”最常见的工单原因,而且 Discord 中从不会显示错误,操作只是悄无声息地失败了。
受信任的身份组和用户:反破坏功能的有意例外
反破坏功能会对任何超过你设定操作限制的账号进行禁言、踢出或封禁,但每个服务器有一份例外名单:受信任的身份组和受信任的用户 ID,在安全页面中设置。你可以添加那些有正当理由批量删除并重建频道的联合所有者,或是拥有较高权限的辅助机器人。需要坦诚说明的取舍是:每一个受信任的条目,都是反破坏功能无法阻止其被盗用的账号,因此这份名单应当只包含那些你会毫无保留地把服务器交给的人。关于检测机制本身的运作方式,请参阅反大规模破坏指南。
适合大多数服务器的身份组布局
- 所有者:反破坏功能永远不会对其采取行动,并且始终可以访问控制面板。只保留一个真实人物的账号,并开启两步验证。
- 联合所有者 / 高级管理员:在 Discord 中拥有管理员权限,加入机器人的管理员访问身份组;只有当其经常进行批量频道或身份组操作时,才将其加入反破坏的受信任名单。
- 版主 / 员工:一个仅限“踢出成员”“管理消息”和“管理成员”权限的身份组,而不是管理员权限;加入保留的员工身份组以便分配工单;只有当他们应当运行
/security、/module或类似命令时,才加入管理员访问身份组。 - 已验证成员:你的验证面板所授予的身份组,位于机器人自身身份组之下。
常见问题
在 Discord 中移除某人的管理员权限,也会移除其控制面板访问权限吗?会的,而且立即生效。控制面板每次都会实时向服务器核对,因此在 Discord 中撤销的权限,会在下一次加载控制面板页面时生效。
我的管理员身份组无法运行机器人的斜杠命令,为什么?在你更改管理员身份组列表后,Discord 需要一小段时间来注册刷新后的命令权限。如果几分钟后仍然失败,请再次确认该身份组确实已在设置页面中保存。
我可以设置多个管理员身份组或员工身份组吗?可以,两者都支持多选,请根据你的组织结构选择合适数量的身份组。
在反破坏中,我应该信任一个身份组还是某个具体用户?对于人数较少且稳定的群体(如联合所有者),信任身份组;对于特定的一次性例外(如某个具体的机器人账号),信任单个用户 ID。这样可以避免意外信任之后被晋升到该身份组的每一个人。
服务器在权限方面最大的错误是什么?为了“保险起见”,给每一位员工授予管理员权限。这恰恰与保险相反;它意味着一个被钓鱼的版主账号,就能做所有者能做的任何事,包括服务器大规模破坏所涵盖的全部操作。
请在服务器控制面板的设置页面中设置管理员和员工身份组;身份组布局正确之后,再查看你的安全设置。阈值只有在其下方的身份组层级确实稳固时,才能真正保护服务器。