探索

怎么管理服务器上用户的访问权限

时间:2010-12-5 17:23:32  作者:焦点   来源:焦点  查看:  评论:0
内容摘要:服务器权限管理最怕的就是“一刀切”。我见过一个团队,给所有开发人员开了root权限,理由是“方便调试”。结果某天凌晨,一个哥们儿误删了生产环境的数据库配置文件,整个服务瘫了四小时。事后复盘,没人能说清

服务器权限管理最怕的管理就是“一刀切”。我见过一个团队,服务给所有开发人员开了root权限,器上理由是用户“方便调试”。结果某天凌晨,问权一个哥们儿误删了生产环境的管理数据库配置文件,整个服务瘫了四小时。服务事后复盘,器上没人能说清到底是用户谁、在哪个时间点动了什么。问权这就是管理权限失控的典型代价。

先搞清楚谁需要碰服务器。服务运维、器上开发、用户测试、问权甚至偶尔介入的DBA,角色不同,能做的事天差地别。我的做法是列一张表:左边写人名,右边写他必须执行的命令和必须访问的目录。比如前端开发只需要读/var/log/nginx和重启nginx,后端开发要能看应用日志和操作数据库连接池,但绝不该碰系统内核参数。这张表不是走形式,每季度要重新过一遍——人员会流动,项目会变。

最小权限原则听起来像口号,落地时得靠具体机制。Linux下别直接给sudo ALL,用/etc/sudoers.d/下的独立文件按用户或组分配命令白名单。比如:

devops ALL=(root) /bin/systemctl restart nginx, /usr/bin/journalctl -u nginx

这样他只能重启nginx和看它的日志,想改防火墙?门都没有。Windows服务器同理,用组策略把用户塞进对应的本地组,别直接给Administrator。

SSH密钥比密码靠谱,但很多人只做了一半——允许密钥登录,却忘了禁用密码认证。我习惯在/etc/ssh/sshd_config里写死PasswordAuthentication no,同时用AllowUsers限定哪些账号能连。有个客户之前被暴力破解,就是因为测试账号没删、密码还是test123。后来我给他加了fail2ban,三次失败封IP,世界清净了。

权限不是静态的。新员工入职、老员工转岗、外包人员临时接入,每个节点都得有动作。我们内部用Ansible playbook管理用户生命周期:创建时自动生成密钥对、分配sudo规则、加入对应监控组;离职时一个命令禁用账号、回收密钥、从所有组里移除。人容易忘,脚本不会。

审计日志必须开。别只看/var/log/auth.log,那只是冰山一角。用auditd监控关键文件(比如/etc/passwd、/etc/sudoers)的写操作,记录谁在什么时候改了啥。有一次我们发现某个账号半夜频繁读取数据库备份目录,查下来是离职员工偷偷留了密钥。没日志的话,这事永远发现不了。

最后说个反直觉的点:别追求零信任到变态的程度。有些公司给每个操作都加二次审批,结果运维为了重启一个服务得等半小时,最后大家集体用后门脚本绕过流程。权限管理的目标是“可控”,不是“锁死”。留一条紧急通道,但这条通道必须触发告警、记录操作、事后强制复盘。平衡点在哪?看你的业务能承受多长的故障恢复时间。核心库的写权限,多等十分钟值得;边缘服务的读权限,卡太死就是自找麻烦。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap