Cer*_*ler 2 permissions node.js
我的服务器上运行了几个应用程序;它们内置在meteor.js 中,所以它们是nodejs 进程,我使用forever npm 模块运行它们;
我目前使用相同的用户为他们所有人永久启动,该用户的组拥有所有网站目录;现在这将成为生产服务器,我想更好地了解这可能导致的安全问题;是否有一些通用的安全规则来启动 nodejs 进程?我目前的方法可能危险吗?
假设您的应用程序不需要对应用程序数据的写访问权限(它确实不应该),我们执行以下操作:
我们将用户分为两类 -node-<app>-runtime和node-<app>-data. <app>作为应用程序名称。他们都是一个团体的一部分node-<app>。这些不是我们用来称呼那些爱管闲事的人的实际名字。
我们执行以下操作:
1) 为了构建应用程序,我们总是在单独的机器上构建,然后有一个 npmdist脚本,该脚本仅将运行应用程序所需的文件放入一个/dist目录中,并将该目录的 tarred 副本传送到我们的部署服务器。这样做的好处是双重的 - 我们确切地知道部署中的内容,并且我们可以确保node_modules、.git目录和其他数据中的任何开发人员不会被添加到生产机器中。这也意味着当 GitHub/Npm/etc. 出现故障,它不会破坏自动缩放等 - 我们的部署服务器只提供预构建的 tarball。
2) 我们使用我们的配置管理系统在一个标准化的位置创建一个日志目录,该目录可以被node-<app>-runtime640 权限写入。该路径由一个标准的环境变量提供给应用程序。我们的日志处理守护进程会自动选择这些并将它们发送到远程服务器。
3) 我们的部署系统将应用程序文件放置在特定位置,并将它们设置为拥有node-<app>-data权限 640。该路径由标准环境变量提供给应用程序。
我唯一的其他建议是始终确保您正在设置NODE_ENV=production. 许多节点模块使用此约定来关闭调试符号,或提高性能(express想到)。
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |