首页 > 解决方案 > 芹菜不应该以root身份运行的原因是什么?

问题描述

我在 shell 中看到我不应该以 root 身份运行 celery 的建议,它是“绝对不推荐的!”。

有人可以解释一下吗?

标签: pythondjangocelerydjango-celery

解决方案


这是最小特权原则(PoLP) [wiki]的一个具体案例:

(...) 最小特权原则(PoLP,也称为最小特权原则或最小权限原则)要求在计算环境的特定抽象层中,每个模块(如进程、用户,或程序,取决于主题)必须能够仅访问其合法目的所必需的信息和资源。

如果您授予 celery 根访问权限,则意味着它可以访问许多强大的工具:它可以删除系统配置、擦除整个文件系统、安装新软件,甚至操作硬件等。

以 root 身份运行 celery 可能会导致几种不安全的情况。例如,如果黑客因此设法在某处“注入”代码,它可以等到 celery 运行该代码,例如创建一个具有预定义密码的用户,然后它就可以访问机器。当然设法将代码存储在某个位置以便 celery 运行是另一个挑战,但通常最好总是假设所有系统在某种程度上都是不安全的,因此给予这些 root 访问权限肯定不会有利于安全性。这在维基百科文章中也有说明:

(...) 例如,微软表示“在标准用户模式下运行可以让客户更好地防止由“粉碎攻击”和恶意软件(如根工具包、间谍软件和无法检测的病毒)造成的意外系统级损坏。

当然,如果黑客设法注入代码,这仍然会造成很大的破坏,因此以非 root 用户身份运行 celery 进程是不够的。通常,与仅有权访问文件和它真正需要的其他资源的用户一起运行进程也很有用。例如,只有用于它必须执行的进程的 python 文件。


推荐阅读