建立中要添加如下的项目经验:
- 在了解公司业务流程后,提出权限整改解决方案,改进公司超级用户Root权限泛滥的问题。
- 我首先写好方案后,给老大看,取得老大的支持后,召集大家开会讨论。
- 讨论确定可行后,由我负责推进实施
- 实施后结果,公司服务器权限管理更加清晰了。
- 制定账号权限申请流程以及权限申请表格
1问题现状
当前我们公司服务器上百台,各个服务器上需要管理的人很多(开发+运维+架构+DBA+产品+市场),在大家同时登录Linux服务器的时候,不同职能员工的水平不同,因此导致很不规范,root权限泛滥(几乎大部分人都拥有root权限),经常导致文件莫名奇妙的丢失,老手和新手对服务器的熟知程度不同,这样使得公司服务器安全存在很大的不稳定性,以及操作的安全性。据企业调查,50%的以上的安全问题都来自于内部。而不是外部。为了解决以上问题,单个用户管理权限过大的现状,现提出用户权限集中管理的方案。
2项目需求
我们既希望超级用户root密码掌握在少数或者唯一人的手中,又希望多个系统管理员或者相关权限的的人员,可以完成更多更复杂的与自身职能相关的工作。不至于越权操作导致系统安全隐患。
那么如何解决多个管理员都能解决系统而且又不让超级权限泛滥呢?这就需要sudo管理来代替或者结合su命令来完成这样苛刻且必要的服务器用户管理需求。
3具体实现
针对公司里面不同部门,根据员工的具体工作职能(例如:开发,运维数据库管理员等),分等级、层次的的实现对Linux服务器管理权限的最小化和规范化。这样既减少了运维管理的成本,消除了安全隐患,也提高了工作效率,实现了高质量、快速化的完成项目进度以及日常的系统维护。
4实施方案
说明:实施方案一般由积极主动发现问题的运维人员提出问题的,然后写好方案,再召集大家讨论可行性,最后确定方案,实施部署,最后后期维护总结。
思想:在提出问题之前,一定要想到如何解决,一并发出来解决方案
到此为止:你应该写完权限规划文档了。
4.1信息采集
4,1.1
召集相关部门的领导通过会议讨论或者组织领导沟通确定权限管理方案的可行性。需要支持的人员:运维经理或者总监,CTO的支持、各部门领导的支持。我们作为运维人员,拿着老师这样类型的方案,给大家讲解这个文档。通过会议的形式做演讲,慷慨激昂的演说,取得老大们的认可。才是项目可以实施的前提。当然,如果不实施,你也得到了锻炼,老大对你积极主动的思想网站架构问题也是另眼看待的。
4.1.2
确定方案的可行性以后,会议负责汇总,提交、审核所有相关人员对Linux服务器的权限需要问题。
取得老大们的支持以后,通过发邮件或者联系相关人员取得需要的相关员工权限。比如说:请各部门经理整理归类本部门需要登录的Linux的权限人员名单、职位、以及负责的业务及权限。如果说不清楚权限细节,就说负责的业务细节。这样运维人员就可以确定需要是什么权限了。
4.1.3
按照需求执行Linux命令程序以及公司业务服务来规划权限和人员对应配置。
主要是运维人员根据上面搜集的人员名单,需要的业务以及权角色,对应账号的配置权限,实际上就是sudo配置文件。
4.1.4
权限方案一旦实施以后,所有员工必须通过《员工Linux服务器管理权限申请表》来申请对应的权限,确定审批流程,规范化管理。这里实施后,把住权限申请流程很重要,否则大家不听话,方案实施也会泡汤的。
4.1.5
写操作说明,对各部门人员进行操作讲解,sudu执行命令,设计的PATH变量问题。运维提前处理好。
信息采集的结果如下:
某部门IDC权限细化方案:
目前IDC系统账号所有的权限都是超级权限,在安全方面存在着隐患,本着“给用户尽可能少的权限但仍允许他们完成任务”的宗旨,如今对常用命令进行分类细化:
权限对照表格:
PROCESSES |
/bin/kill, /usr/bin/kill, /usr/bin/killall, /usr/bin/pkill, /bin/netstat, /bin/ps |
FCMD_0 |
/sbin/reboot, /sbin/shutdown, /sbin/init 0, /sbin/init 6 |
FCMD_1 |
/bin/su - adsystem,/bin/su - audit,/bin/su - huapi, /bin/su - searchcenter, /bin/su - swebNg |
FCMD_2 |
/server/script/rhy/shangxian, /server/script/rhy/shangxian/haShangxian/shangxian, |
FCMD_3 |
/bin/cat,/bin/ls |
拥有权限 |
简要说明 |
|
普通开发权限 |
NOPASSWD:FCMD_1,FCMD_3,PROCESSES |
无需密码切换到分用户杀死进程重启服务,查看等权限 |
开发sudo权限 |
NOPASSWD:!/bin/sudo su - root,FCMD_0 |
除了可以切到root,苏可以执行除重启机器外的所有权限 |
运维上线权 |
NOPASSWD:FCMD_1,FCMD_2,FCMD_3,PROCESSCE |
无密码切换到分用户,切换到负载均衡,重启服务 |
运维超级权 |
NOPASSWD:ALL |
所有权限 |
分用户权限 |
NOPASSWD:PROCESSER, /run/apache/bin/apachectl -k start |
分用户杀死和启动进程 |
做了如下的测试结果:
创建了三个普通分用户t1,t2,t3, shell脚本如下:
#create three user t1 t2 and t3
for u in t1 t2 t3
do
useradd $u
echo "123"|passwd --stdin $u
done
创建了四个权限测试用户,为普通开发权限、开发sudo权限,运维上线权限,运维超级权限
#create develope users and operators as test
for name in ordinary_develop sudo_develop ordinary_operator root_operator
do
useradd $name;
echo "123"|passwd --stdin $name;
done
先在文本文件中编辑visodu的设置:
#set command by option
Cmnd_Alias PROCESSER = /usr/sbin/useradd,/usr/sbin/userdel
Cmnd_Alias FCMD_0 = /sbin/reboot, /sbin/shutdown, /sbin/init 0, /sbin/init 6
Cmnd_Alias FCMD_1 = /bin/su - t1, /bin/su - t2, /bin/su - t3
Cmnd_Alias FCMD_2 = /server/script/rhy/shangxian, /server/script/rhy/shangxian/haShangxian/shangxiain
Cmnd_Alias FCMD_3 = /bin/cat, /bin/ls
#show HOST
#Host_Alias SERVICE = smtp, smtp2, moban
#set users
User_Alias ORDINARY_DEVELOP = ordinary_develop
User_Alias SUDO_DEVELOP = sudo_develop
User_Alias ORDINARY_USERS = t1, t2, t3
User_Alias ORDINARY_OPERATOR = ordinary_operator
User_Alias ROOT_OPERATOR = root_operator
#Runas_Alias OP = root
#set authority
ORDINARY_DEVELOP SERVICE=(OP) NOPASSWD:FCMD_1,FCMD_3,PROCESSER
SUDO_DEVELOP SERVICE=(OP) NOPASSWD:!/bin/sudo su - root,!/bin/sudo su -,FCMD_0
ORDINARY_OPERATOR SERVICE=(OP) NOPASSWD:FCMD_1,FCMD_2,FCMD_3,PROCESSER
ROOT_OPERATOR SERVICE=(OP) NOPASSWD:ALL
ORDINARY_USERS SERVICE=(OP) NOPASSWD:PROCESSER, /run/apache/bin/apachectl -k start
再使用visodu进行编辑配置
登录sudo_develop测试权限:
测试结果很不错,很好的控制住了用户的权限。