我是否应该使用系统用户帐户而不是普通用户帐户来在应用服务器中部署代码?

我是否应该使用系统用户帐户而不是普通用户帐户来在应用服务器中部署代码?

我有一个 Tornado 应用服务器,运行在 Nginx Web 服务器后面。应用服务器包含用于处理客户端请求、数据库调用、运行业务逻辑等任务的 Python 脚本。

当然,代码必须通过操作系统用户帐户执行。现在我发现在 Linux 中,有两种类型的操作系统帐户:普通用户帐户和系统帐户(后者使用 --system 选项创建,使用 /usr/false 并且没有主目录)。

我的问题是:

[1] 我应该使用系统用户帐户而不是普通用户帐户来部署和运行代码吗?

[2] 系统用户账户比普通用户账户更安全吗?

[3] 我应该将代码文件保存在哪个目录中(从安全角度来看)?

信息:

1)我不打算将运行python代码的帐户用于任何其他目的。

2)我在生产环境中使用supervisord和virtualenv。

3)我打算对日志文件进行详细的监控。

作为系统管理员,我从安全的角度提出这个问题。很乐意向你们学习。提前致谢。

答案1

如果您可以使用帐户进行部署,则意味着该帐户具有一些远程访问功能 - 这对于“系统帐户”来说毫无意义 - 系统帐户将代码放入文件系统的唯一方法是将其拉到服务器上。这并非不可能,但需要一点思考。

运行代码则是另一回事。大多数服务器以特定的非 root uid 运行 - 但通常由 root 启动,然后调用 setuid()(这也意味着它们可以打开特权端口) - 但包装启动脚本以便由 root 运行但以不同用户身份创建守护进程是微不足道的。

系统用户账户是否更安全

取决于 - 安全对于很多不同的事情来说是一个非常广泛的标志。但就运行守护进程而言,它确实提供了一些保护。

我应该将我的代码文件保存在哪个目录中(从安全角度来看)?

您的安全模型是什么?您的日志在哪里?谁应该有合法的系统访问权限?这台机器是专门用来运行您的代码还是用来做其他事情?

相关内容