企业生产环境用户权限集中管理项目方案案例
1问题现状
当前我们公司里服务器上百台,各个服务器上的管理人员很多(开发+运维+架构+DBA+产品+市场),在大家登录使用Linux服务器时,不同职能的员工水平不同,因此导致操作很不规范,root权限泛滥(几乎大部分人员都有root权限),经常导致文件等莫名其妙的丢失,老手和新手员工对服务器的熟知度不也同,这样使得公司服务器安全存在很大的不稳定性、及操作安全隐患,据调查企业服务器环境,50%以上的安全问题都来自于内部,而不是外部。为了解决以上问题,单个用户管理权限过大现状,现提出针对Lnux服务器用户权限集中管理的解决方案。
2项目需求
我们既希望超级用户root密码掌握在少数或唯一的管理员手中,又希望多个系统管理员或相关有权限的人员,能够完成更多更复杂的自身职能相关的工作,又不至于越权操作导致系统安全隐患。那么,如何解决多个系统管理员都能管理系统而又不让超级权限泛滥的需求呢?这就需要sudo管理来替代或结合Su命令来完成这样的苛刻且必要的企业服务器用户管理需求。
3具体实现
针对公司里不同部门,根据员工的具体工作职能(例如:开发,运维,数据库管理员),分等级、分层次的实现对inux服务器管理的权限最小化、规范化。这样即减少了运维管理成本,消除了安全隐患,又提高了工作效率,实现了高质量的、快速化的完成项目进度,以及日常系统维护
4实施方案
说明:实施方案般是由积极主动发现问题的运维人员提出的呵题,然后写好方案,在召集大家讨论可行性,最后确定方案,实施部署,最后后期总结维护。思想:在提出问题之前,一定要想到如何解决,一并发出来解决方案。到此为止:你应该是已经写完了权限规划文档。
4.1信息采集(含整个方案流程)
1.1召集相关各部门领导通过会议讨论或是与各组领导沟通确定权限管理方案的可行性需要支持的人员:运维经理、CTO支持、各部门组的领导。我们作为运维人员,拿着类似老师这个项目方案,给大家讲解这个文档,通过会议形式做演讲,慷慨激昂的演说,取得大佬们的支持和认可,才是项目能够得以最终实施的前提,当然,即使不实施,那么,你的能力也得到了锻炼,老大对你的积极主动思考网站架构问题也会是另眼看待的
1.2确定方案可行性后,会议负责人汇总、提交、审核所有相关员工对 Linux服务器的权限需求。取得大佬们的支持后,通过发邮件或者联系相关人员取得需要的相关员工权限信息
比如说,请各个部门经理整理归类本部门需要登录 linux权限的人员名单、职位、及负责的业务及权限,如果说不清楚权限细节,就说负责的业务细节,这样运维人员就可以确定需要啥权限了
1.3按照需要执行的inuX命令程序及公司业务服务来规划权限和人员对应配置。主要是运维人员根据上面收集的人员名单,需要的业务及权限角色,对应账号配置权限,实际就是配置sudo配置文件。
1.4权限方案一旦实施后,所有员工必须通过《员工Linuⅹ服务器管理权限申请表》来申请对应的权限,确定审批流程,规范化管理。这里实施后把住权限申请流程很重要,否则,大家不听话,方案实施完也会泡汤的
1.5写操作说明,对各部门人员进行操作讲解。sudo执行命令,涉及到PATH变量问题,运维提前处理好。
4.2收集员工职能和对应权限
此过程是召集大家开会确定,或者请各组领导安排人员进行统计汇总,人员及对应作职责,交给运维人员,由运维人员优化职位所对应的系统权限。
1)运维组
级别 | 权限 |
初级运维 | /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route |
高级运维 | 查看系统信息,查看和修改网络配置,进程管理,软件包管理,存储管理 |
/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route,/sbin/iptables,/etc/init.d/network,/bin/nice,/bin/kill/usr/bin/kill,/usr/bin/killall,/bin/rpm,/usr/bin/up2date,/usr/bin/yum/sbin/fdisk,/sbin/sfdisk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount | |
运维经理 | 超级用户所有权限 ALL |
2)开发组
级别 | 权限 |
初级开发 | /usr/bin/tail /app/log*, /bin/grep /app/log*, /bin/cat, /bin/Is root的查看权限,对应服务查看日志的权限。 |
高级开发 | 高级开发lrot的查看权限,对应服务查看日志的权限,重启对应服务的权限。 |
/sbin/service, /sbin/chkconfig, tail /app/log*, grep/app/log,/ bin/cat, /bin/ls | |
开发经理 | ALL,/usr/bin/ passwd[A-Za-z]*,l/usr/bin/passwd,root,!/usr/sbin/visudo,!/usr/bin/vi *super* |
权限分配:普通用户人权限,对应服务的查看日志权限,重启对应服务权限
2)网络组
级别 | 权限 |
初级网络 | 不加入sudo列表 |
高级网络 | 高级开发lrot的查看权限,对应服务查看日志的权限,重启对应服务的权限。 |
/sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/ifconfig,/sbin/mii-tool,/bin/cat,/var/log/* |
5模拟创建用户角色
建立3个初级运维,一个高级运维,一个网络工程师,一个运维经理,密码统一是密码11111
for user in chuji001 chuji002 chuj1003 net001 senior001 manageroo001 do useradd $user echo "111111"|passwd --stdin $user done
建立5个开发人员属于phpers组
groupadd -g 999 phpers for n in `seq 5` do useradd -g phpers php00$n echo "111111"|passwd --stdin php00$n done for user in kaifamanager001 seniorphpers do useradd $user echo "111111"|passwd --stdin $user done
visudo配置
##Cmnd Alias by qzc ##2018 Cmnd_Alias CY_CMD_1 = /usr/bin/free, /usr/bin/iostat, /usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, /sbin/route Cmnd_Alias GY_CMD_1 = /usr/bin/free, /usr/bin/iostat, /usr/bin/top, /bin/hostname, /sbin/ifconfig,/bin/netstat, /sbin/route, /sbin/iptables,\ /etc/init.d/network, /sbin/nice, /bin/kill, \ /usr/bin/kill, /usr/bin/killall, /bin/rm, /usr/bin/up2date,\ /usr/bin/yum, /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount Cmnd_Alias CK_CMD_1 = /usr/bin/tail,/app/log*, /bin/grep,/app/logk, /bin/cat, /bin/ls Cmnd_Alias GK_CMD_1 = /sbin/service, /sbin/chkconfig, /bin/tail /app/log*, /bin/grep/app/log*, /bin/cat, /bin/Is, /bin/sh /scripts/deploy. sh Cmnd_Alias GW_CMD_1 = /sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/mii-tool,/bin/cat /var/log/* ##User_Alias by qzc#2018 User_Alias CHUJI_ADMINS = chuji001, chuji002, chuji003 User_Alias GWNET_ADMINS = net001 User_Alias CHUJI_KAIFA = %phpers ##Runas_Alias by qzc##2018/04 Runas_Alias OP = root #pri confi enior001 ALL=(OP) GY_CMD_1 anagerool ALL=(ALL) NOPASSWD:ALL kaifamanager001 ALL=(ALL) ALL, /usr/bin/passwd [a-za-z*,!/usr/bin/passwd root, \ !/usr/sbin/visudo, !/usr/bin/vi *sudoer*, !/bin/su* eniorphpers ALL=(OP) GK_CMD_1 CHUJI_ADMINS ALL=(OP) CY_CMD_1 GWNET_ADMINS ALL=(OP) GW_CMD_1 CHUJI_KAIFA ALL=(OP) CK_CMD_1
http://oldboy.blog.51cto.com/2561410/1289144
停留在世界边缘,与之惜别