04-生产环境linux服务器权限控制实例
@
目录
1. 权限规划
1.1 root 组
- 用户名:root
- 用户说明:服务器管理员
- 可用场景:部署环境初始化
- 账号分发和回收:
- 默认管理员账号
- 由服务器管理员保管,非必要不使用该账号
- 环境初始化完成后,服务器管理员必须将该账号收回
1.2 docker组
- 用户名:deploy
- 用户说明:服务管理员
- 敏感权限或风险操作:无
- 可用场景:
- 服务的部署和更新
- 服务配置更改和日常管理
- 容器的生命周期管理
- sudo控制:无
- 账号分发和回收
- 由服务器管理员创建
- 环境初始化完成后分发给交付或运维负责人。
- 该账号不回收,使用人员变更时必须更改密码或更换秘钥。
- 如使用密码,建议定期更换
1.3 运维组
1.3.1 项目运维负责人
- 用户名:建议以用户名字命名
- 用户说明:项目运维负责人
- 敏感权限或风险操作:所有权限
- 可用场景:
- 系统和环境维护
- 服务器巡检和安全检查
- sudo控制:ALL
- 账号分发和回收
- 由服务器管理员创建
- 分发给该项目运维负责人使用
- 如果使用密码登录,首次登录必须更改密码。
- 更换项目运维负责人时回收该账号
1.3.2 高级运维人员
- 用户名:建议以用户名字命名
- 用户说明:高级运维人员
- 敏感权限或风险操作:
- 磁盘挂载/卸载
- 可用场景:
- 系统和环境日常维护
- 服务器巡检和安全检查
- sudo控制:
/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostnaem,/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,/usr/bin/docker,/usr/bin/docker-compose - 账号分发和回收
- 由项目运维负责人创建
- 分发给该项目高级运维人员使用
- 如果使用密码登录,首次登录必须更改密码。
- 使用者离开项目,回收该账号。
1.3.3 初级运维人员
- 用户名:建议以用户名字命名
- 用户说明:初级运维人员
- 敏感权限或风险操作:
- 无
- 可用场景:
- 服务器巡检和安全检查
- sudo控制:
- /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/sbin/ifconfig,/bin/netstat,/sbin/route,/usr/bin/cat,/usr/bin/docker-compose
- 账号分发和回收
- 由项目运维负责人创建
- 分发给该项目初级运维人员使用
- 如果使用密码登录,首次登录必须更改密码
- 使用者离开项目,回收该账号。
1.4 开发组
1.4.1 开发负责人
- 用户名:建议以用户名字命名
- 用户说明:开发负责人
- 敏感权限或风险操作:
- 可见生产数据库密码
- 可用场景:
- 查看服务配置
- 查看服务日志
- sudo控制:
- /sbin/chkconfig,/usr/bin/tail /app/log,/bin/grep /app/log,/bin/cat,/bin/ls,/usr/bin/docker-compose
- 账号分发和回收
- 由服务器管理员或项目运维负责人创建
- 分发给该项目开发负责人使用
- 更换项目运维负责人时回收该账号
1.4.1 开发人员
- 用户名:建议以用户名字命名
- 用户说明:开发人员
- 敏感权限或风险操作:
- 无
- 可用场景:
- 查看服务日志
- sudo控制:
- /usr/bin/tail /app/log,/bin/grep /app/log,/bin/ls,/usr/bin/docker-compose ps,/usr/bin/docker-compose logs
- 账号分发和回收
- 由项目运维负责人创建
- 分发给该项目开发人员使用。
- 使用者离开项目,回收该账号。
2. 实施
2.1 deploy用户
- 创建docker用户组
[root@liubei-dev ~]# groupadd docker
- 将
deploy
用户加入docker
组
[root@liubei-dev ~]# gpasswd -a deploy docker
- 更新组信息
[root@liubei-dev ~]# newgrp docker
- 重启docker
2.2 创建运维组
- 创建
opers
组
[root@liubei-dev ~]# groupadd opers
- 创建用户账号
- 运维负责人:liubei
- 高级运维:guanyu zhangfei
- 初级运维:zhoucang
[root@liubei-dev ~]# for i in liubei guanyu zhangfei zhoucang;do useradd $i;done
- 设置默认密码
[root@liubei-dev ~]# for i in liubei guanyu zhangfei zhoucang; do echo '123456' | passwd $i --stdin;done
如果报令牌错误可以改为:
[root@liubei-dev ~]# for i in liubei guanyu zhangfei zhoucang; do echo "$i:123456" | chpasswd;done
- 将人员加入oper组
[root@liubei-dev ~]# gpasswd -M liubei,guanyu,zhangfei,zhoucang opers
2.2 创建开发组
- 创建
opers
组
[root@liubei-dev ~]# groupadd devs
- 创建用户账号
- 开发负责人:zhugeliang
- 开发人员:pangtong fazheng
[root@liubei-dev ~]# for i in zhugeliang pangtong fazheng;do useradd $i;done
- 设置默认密码
[root@liubei-dev ~]# for i in zhugeliang pangtong fazheng; do echo '123456' | passwd $i --stdin;done
如果报令牌错误可以改为:
[root@liubei-dev ~]# for i in zhugeliang pangtong fazheng; do echo "$i:123456" | chpasswd;done
- 将人员加入devs组
[root@liubei-dev ~]# gpasswd -M zhugeliang pangtong fazheng devs
2.4 修改sudo权限
[root@liubei-dev ~]# visudo
修改如下
################################################################
# 定义用户组 #
################################################################
################### 运维组 ###################
User_Alias OPER_ADMIN = liubei
User_Alias OPER_SENIORS = guanyu,zhangfei
User_Alias OPER_JUNIORS = zhoucang
################### 开发组 ###################
User_Alias DEV_ADMIN = zhugeliang
User_Alias DEV_GENERALS = pangtong,fazheng
################################################################
# 定义权限 #
################################################################
################### 运维组 ###################
Cmnd_Alias OPER_SENIOR = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostnaem,/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,/usr/bin/docker,/usr/bin/docker-compose
Cmnd_Alias OPER_JUNIOR = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/sbin/ifconfig,/bin/netstat,/sbin/route,/usr/bin/cat
################## 开发组 ###################
Cmnd_Alias DEV_ADMIN = /sbin/chkconfig,/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls,/usr/bin/docker-compose
Cmnd_Alias DEV_GENERAL = /sbin/chkconfig,/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/ls,/usr/bin/docker-compose ps,/usr/bin/docker-compose logs
################################################################
# 设置用户权限 #
################################################################
#################### 运维组 ###################
OPER_ADMIN ALL=(ALL) NOPASSWD:ALL
OPER_SENIORS ALL=(root) OPER_SENIOR
OPER_JUNIORS ALL=(root) OPER_JUNIOR
################### 开发组 ###################
DEV_ADMIN ALL=(root) DEV_ADMIN
DEV_GENERALS ALL=(root) DEV_GENERAL