多网站共用一台服务器,确实能减少维护对象,但也会让一个网站的漏洞或误操作波及其他站点。规划多网站矩阵的主机隔离与账号权限规划,关键不是把所有资源一律拆开,而是明确哪些网站可以共用、哪些权限必须分离,以及出了问题能否及时止损。
先按风险决定主机隔离到什么程度
如果网站由不同团队维护、保存不同敏感程度的数据,或需要独立发布和回滚,优先考虑分到不同虚拟机或不同主机。它们有各自的操作系统和系统账号,故障与权限边界更清晰,代价是补丁、监控和备份也要分别管理。
同一团队维护、风险相近的网站,可以先在一台主机上分开运行服务进程和目录。以常见的 Linux 与 Nginx、PHP-FPM 组合为例,可为不同站点设置独立系统用户和 PHP-FPM 池,限制各自只能读取本站文件。相比之下,容器便于分别部署应用,但容器共享宿主机内核,不能简单视为与独立主机等强度的隔离。
因此,多网站矩阵的主机隔离与账号权限规划应按数据敏感度、故障影响范围和维护成本取舍:网站之间风险差异明显时拆主机;资源需要共享但代码、数据库不应互通时,可先拆进程、目录和账号。
把权限拆成可核对的几层
| 权限层 | 建议边界 | 容易出错的做法 |
|---|---|---|
| 主机登录 | 按人员分配个人账号,使用 SSH 密钥;日常工作不直接使用 root | 多人共用 root,无法确认操作来源 |
| 文件与进程 | 每个站点使用独立系统用户,目录只开放必要读写 | 所有站点共用可写目录或同一运行账号 |
| 数据库 | 每个网站使用独立数据库账号,只授予对应库所需操作 | 多个网站共用数据库管理员账号 |
| 发布与管理后台 | 按网站、角色分配权限,人员使用各自账号 | 编辑人员拥有主机登录或全站管理员权限 |
这里的最小权限原则不是口号:例如网站运行进程通常不需要修改系统服务配置,内容编辑人员通常也不需要读取其他网站的配置文件。网站若需要上传文件,可只开放指定上传目录的写入权限,而不是让整个程序目录都可写。
按步骤建立隔离边界
- 列清资产和责任人。记录每个网站对应的主机、运行服务、数据存储、维护人员和恢复责任人。先找出共用的系统账号、数据库账号和发布密钥。
- 设计网站身份。为站点分别创建 Linux 用户、运行进程身份和数据库账号;确有共享组件时,单独记录共享范围与原因,不让“方便维护”变成默认放权。
- 收紧登录入口。为维护人员建立个人账号,使用密钥登录,限制管理入口可访问的人员和来源。确需提权时采用 sudo 授权具体管理命令,避免日常使用 root。
- 检查目录与密钥。确认站点进程无法写入其他站点目录;数据库密码和部署凭据分别保管,避免放进公开代码仓库或多个网站共用。
- 用实际身份验证。以每个站点的运行账号检查文件读写和数据库连接,再确认它无法读取其他站点的配置、修改系统关键设置。测试后记录预期权限,便于复核。
- 定期回收变更。人员离职、外包结束或职责变化时,撤销对应账号、密钥和会话;权限调整后再检查网站发布、备份和恢复流程是否仍可正常执行。
最容易踩坑的配置
共享账号看似省事,出了问题却难追踪
多人共用 SSH 账号、数据库管理员账号或网站后台账号,会让操作记录无法对应到个人,也使离职回收变得困难。应为人员建立独立身份;应用连接数据库则使用单独的数据库账号,不复用人工管理账号。
权限给得过宽,或收紧后没有验证
把网站目录设为所有人可写、给普通维护人员完整 sudo 权限,都会扩大误操作和入侵后的影响范围。反过来,权限改得过严也可能让上传、缓存或发布失败。应先明确哪些目录需要写入,再按实际运行身份测试,不要只凭目录名称推断。
只隔离网站,不隔离备份和发布凭据
网站目录分开,不代表账号体系也分开。如果一个部署密钥能发布所有站点,或备份文件集中存放且所有运维账号都可读取,隔离效果会被削弱。发布权限应按网站拆分;备份访问权限则只授予确有恢复职责的人员,并验证恢复所需的账号仍然可用。
常见问题
多个低风险网站能否共用一台主机?
可以,但应分别设置运行用户、目录和数据库账号,并接受它们仍共享主机内核、资源和部分运维风险。风险不同的网站不宜仅因节省维护成本而强行合并。
容器能否替代独立主机?
不一定。容器适合拆分部署与依赖环境,但共享宿主机内核。若隔离要求高、故障影响面必须严格受控,应评估独立虚拟机或主机。
网站管理员需要 SSH 权限吗?
通常不需要。网站内容和后台管理可通过站点自身的角色权限完成;只有承担服务器维护的人才应获得经过限制的主机登录权限。
多久复核一次账号权限?
没有适用于所有环境的固定周期。至少在人员或职责变更、系统调整及安全事件后复核;日常还应按组织的风险和审计要求安排定期检查。落实多网站矩阵的主机隔离与账号权限规划,最终要让每个账号只做必要的事,并能在变更时及时验证和撤权。