15.2.4 项目实施过程
您可以在百度里搜索“Linux/Unix技术丛书·跟老男孩学Linux运维:核心基础篇(上)(第2版) 艾草文学(www.321553.xyz)”查找最新章节!
15.2.4 项目实施过程
说明:实施方案一般是由积极主动发现问题的运维人员提出问题,然后写好解决方案,再召集大家讨论可行性,最后确定方案,实施部署,之后就是后期的总结维护了。
老男孩思想:在提出问题之前,一定要想到如何解决,并给出解决方案。
假设现在你已经写完了权限规划文档(见附录A和附录B)。
做项目,相当于一次变法:变法是有代价的,取得“老大”(运维总监、技术总监)的支持极其重要。
1. 信息采集(含整个方案流程)
1)召集相关各部门的领导,通过会议讨论,或者是与各组领导沟通以确定权限管理方案的可行性。
需要支持的人员:运维经理或总监、CTO、各部门组的领导。作为运维人员,拿着类似本书介绍的项目方案(本章内容),通过会议形式为大家讲解文档,以期取得各部门组领导的支持和认可,这才是项目能够得以最终实施的前提。当然,即使实施不了,你的能力也得到了锻炼,各部门组领导对你积极主动思考问题的态度也会另眼相看的。
2)确定方案的可行性之后,会议负责人汇总、提交、审核所有相关员工对Linux服务器的权限需求。
取得各部门组领导的支持后,通过发邮件或者联系相关人员取得相应的权限信息。比如说,请各个部门的经理整理归类本部门需要登录Linux权限的人员名单、职位,以及负责的业务及权限等,如果无法清楚描述权限细节,就描述所负责的业务细节,这样,运维人员就可以确定各相关人员具体需要的权限了(见表15-2)。
3)按照需要执行的Linux命令程序及公司业务服务来规划权限和人员的对应配置。
主要是运维人员根据上面收集的人员名单、需要的业务及权限角色,并根据对应的账号配置权限,实际上就是配置sudo配置文件。
4)权限方案一旦实施之后,所有的员工都必须通过《员工Linux服务器管理权限申请表》来申请对应的权限,确定审批流程,规范化管理。这里实施权限方案之后一定要控制住后期的权限申请流程,否则,大家不按要求来,即使方案实施完也会半途而废的。
5)撰写操作说明,对各部门人员进行操作讲解。通过sudo执行命令,若会涉及PATH变量问题,则运维需要提前处理好。
表15-2 信息采集表格
2. 收集员工职能和对应的权限
收集员工职能和对应权限的过程需要召集大家开会确定,或者请各组领导安排人员进行统计汇总。将需要权限的人员及对应的工作职责交给运维人员,由运维人员优化职位所对应的系统权限,具体见表15-3至表15-7。
表15-3 运维组的级别和权限
表15-4 开发组的级别和权限
表15-5 架构组的级别和权限
表15-6 DBA组的级别和权限
提示:如果授权ALL,那么在进行故障排除时,有时会让我们防不胜防。这种先开后关的策略并不是好的策略。比较好的策略,是白名单机制,即只写授权的命令,不用ALL。
表15-7 网络组的级别和权限
3. 模拟创建用户角色
1)建立3个初级运维,一个高级运维,一个网络工程师,一个运维经理,密码统一是111111。示例代码如下:
for user in chuji001 chuji002 chuji003 net001 senior001 manager001
do
useradd $user
echo "111111"|passwd --stdin $user
done
2)建立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
3)根据前面的表格配置sudoer文件对应的内容。示例代码如下:
##各种别名定义
##Cmnd_Alias by oldboy##2012
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, /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
Cmnd_Alias CK_CMD_1 = /usr/bin/tail /app/log*, /bin/grep /app/log*,
/bin/cat, /bin/ls
Cmnd_Alias GK_CMD_1 = /sbin/service, /sbin/chkconfig, /bin/tail /app/log*, /bin/grep /app/log*, /bin/cat, /bin/ls, /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/iwconfig, /sbin/mii-tool,/bin/cat /var/log/*
###########################################################################
## User_Alias by oldboy##2012
User_Alias CHUJIADMINS = chuji001,chuji002,chuji003
User_Alias GWNETADMINS = net001
User_Alias CHUJI_KAIFA = %phpers
##Runas_Alias by old_boy##2012/11/30
Runas_Alias OP = root
#pri config
senior001 ALL=(OP) GY_CMD_1
manager001 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*
kaifamanager001 ALL=(ALL)ALL, /usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root, !/usr/sbin/visudo, !/usr/bin/vim,!/bin/vi, !/usr/bin/sudo su -,!/bin/su
#授权规则
seniorphpers ALL=(OP) GK_CMD_1
CHUJIADMINS ALL=(OP) CY_CMD_1
GWNETADMINS ALL=(OP) GW_CMD_1
CHUJI_KAIFA ALL=(OP) CK_CMD_1
#注意:
1)别名名字要大写。
2)所有命令的路径均要使用全路径,每个命令之间用逗号进行分隔。
3)超过一行用“”换行。
4)!号表示排除。
5)无法控制Linux Bash内置命令。
4. 项目结束其他扫尾工作
1)配置完毕后,需要使用不同的用户登录实战调试测试。
2)调试成功后发邮件周知所有人权限配置生效,并附带操作说明。
3)尽快给参与使用的人,进行培训讲解,以确保大家都能熟练操作。
4)制定新的权限申请流程及申请表(见附录B)。
5. 项目结束后的后期维护规则
• 项目结束后,后期的维护不再是特别紧急的需求,一律走权限申请流程。
• 服务器多了,可以通过ansible分发软件批量分发/etc/sudoers文件(注意权限和语法检查)。
• 除了进行权限上的控制,在账户有效时间上也要进行限制,这样才能让安全最大化。
• 将所有应用服务降权到用普通用户运行,并将所有的程序都放在对应的用户家目录下面。启动的时候也是通过这个账户运行,这样就可以用普通用户权限启动和停止对应服务了。 Linux/Unix技术丛书·跟老男孩学Linux运维:核心基础篇(上)(第2版)