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


posted on 2023-02-08 22:52  运维开发玄德公  阅读(54)  评论(0编辑  收藏  举报  来源

导航