我在shell中看到一些建议,即我不应该以root身份运行celery,这是“绝对不推荐!”。
有人可以解释吗?
答案 0 :(得分:1)
这是Principle of least privilege (PoLP) [wiki]的特定情况:
(...)最小特权原则(PoLP,也称为最小特权原则或最小权限原则)要求在计算环境的特定抽象层中,每个模块(例如进程,用户或程序,取决于主题)必须只能访问出于其合法目的必要的信息和资源。
如果您授予芹菜根访问权限,则意味着它可以使用许多强大的工具:它可以删除系统配置,擦除整个文件系统,安装新软件,甚至操纵硬件等。
将芹菜作为根运行可能会导致几种不安全的情况。例如,如果黑客设法将代码“注入”到某个地方,则它可以等到celery运行该代码后,例如创建具有预定义密码的用户,然后才能访问该计算机。确保设法将代码存储在某个位置,以使celery运行是另一个挑战,但是通常最好总是假设所有系统在某种程度上都是不安全的,因此授予这些根访问权限绝对不会使安全性受益。维基百科文章中也对此进行了说明:
(...)例如,Microsoft声明“在标准用户模式下运行,可以为客户提供保护,以防止由于”粉碎攻击”和恶意软件(例如根工具包,间谍软件和不可检测的病毒)造成的系统级意外损坏”。
当然,如果黑客设法注入代码,仍然会造成很多损害,因此,以非root用户身份运行celery进程是不够的。通常,与只能访问文件及其真正需要的其他资源的用户一起运行进程也很有用。例如,仅用于其必须执行的过程的python文件。