企业生产环境用户权限集中管理项目方案

携程事故,是偶然还是必然?老板,你公司的服务器权限需要重规划了!!

当前问题:

进入公司以后,发现一个比较严重的问题,那就是服务器上的管理人员太多,其中包括开发、运维、架构、DBA、产品、市场,在大家登陆使用Linux服务器的时候,不同岗位的员工水准不同,因此导致操作很不规范,基本上都是在使用root权限,导致的问题是:有时候文件莫名的丢失,以及服务器的安全存在很大的不稳定性和操作安全隐患,还查不出是谁干的,据调查企业服务器环境,50%的安全事故来源于内部,也就是员工的误操作导致。携程就是一个很好的例子,因此,权限集中管理迫在眉睫!!

项目需求:

超级用户root和密码掌握在少数人或唯一的管理员手里,同时多个系统管理员或相关有权限的人源,能够完成更多更复杂的自身职能相关的工作,又不至于越权操作导致系统安全隐患。

解决思路:

使用sudo 管理来代替

方案流程:

第一步:跟我的老大沟通,确定这个方案的可行性,然后把各部门的领导召集起来一起开个会议,因为很多事情是需要各部门领导的支持,包括:统计各个部门需要的权限需求。

第二步:请各个部门的领导归类各自部门需要登入Linux的权限:人员名单、职位、及负责的业务及权限。

第三步:以后的员工必须通过《员工Linux服务器管理权限审计表》来申请对应的权限,确定审批流程来规范化管理。

第四步:写好操作说明,对各部门的人员进行操作培训。

具体实施:

权限对应表

1.运维组

级别 权限
初级运维a,b,c,d 查看系统个信息,查看网络状态
/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route
高级运维 d,e,f 查看系统信息,查看和修改网络配置,进程管理,软件包安装,存储管理
/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/nestat,/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/unmount
运维经理 超级用户所有权限(all)

2.开发组

级别 权限
初级开发 root的查看权限,对应查看日志的权限
/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls
高级开发 root查看的权限,对应服务查看日志的权限,重启对应服务的权限
/sbin/service,/sbin/chkconfig,/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls
开发经理 项目所在服务器的ALL权限,不能修改root密码
ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/bin/su,!/usr/bin/vi *sudoer*,/usr/bin/vim *sudoer*

3.架构组

级别 权限
架构工程师 普通用户权限
不加人sudo 列表

4.DBA组

级别 权限
初级DBA 普通用户权限
不加入sudo列表
高级DBA 项目所在数据库服务器的all权限
ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/bin/su,!/usr/bin/vi *sudoer*,/usr/bin/vim *sudoer*

5.网络工程师

级别 权限
初级网络 普通用户权限
不加入sudo列表
高级网络 项目所在数据库服务器的all权限
ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/bin/su,!/usr/bin/vi *sudoer*,/usr/bin/vim *sudoer*

模拟创建用户角色

首先创建3个初级运维,1个高级运维,1个网络工程师,1个运维经理,密码统一是123456

[[email protected] ~]# for user in chuji1 chuji2 chuji3 net1 senior1 manager1

> do

> useradd $user

> echo "123456"|passwd --stdin $user

> done

Changing password for user chuji1.

passwd: all authentication tokens updated successfully.

Changing password for user chuji2.

passwd: all authentication tokens updated successfully.

Changing password for user chuji3.

passwd: all authentication tokens updated successfully.

Changing password for user net1.

passwd: all authentication tokens updated successfully.

Changing password for user senior1.

passwd: all authentication tokens updated successfully.

Changing password for user manager1.

passwd: all authentication tokens updated successfully.

建立5个开发人员,属于phpers 组

[[email protected] ~]# groupadd -g 999 phpers

[[email protected] ~]# for n in `seq 5`

> do

> useradd -g phpers php$n

> echo "123456"|passwd --stdin php$n

> done

Changing password for user php1.

passwd: all authentication tokens updated successfully.

Changing password for user php2.

passwd: all authentication tokens updated successfully.

Changing password for user php3.

passwd: all authentication tokens updated successfully.

Changing password for user php4.

passwd: all authentication tokens updated successfully.

Changing password for user php5.

passwd: all authentication tokens updated successfully.

再添加一个开发经理和高级开发人员

[[email protected] ~]# for user in kaifamanager1 seniorphpers

> do

> useradd $user

> echo "123456"|passwd --stdin $user

> done

Changing password for user kaifamanager1.

passwd: all authentication tokens updated successfully.

Changing password for user seniorphpers.

passwd: all authentication tokens updated successfully.

sudo配置文件

## Command Aliases

Cmnd_Alias CY_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/nestat,/sbin/route

Cmnd_Alias GY_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/nestat,/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/sfd

isk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/unmount

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,/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls,/bin/sh ~/scripts/d

eploy.sh

Cmnd_Alias GW_CMD_1 = /sbin/route,/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/iptables,/usr/shin/rfcom,/usr/bin/wvdial,/sb

in/iwconfig,/sbin/mii-tool,/bin/cat var/log/*

############User_Alias ####################

User_Alias CHUJIADMINS = chuji1,chuji2,chuji3

User_Alias GWNETADMINS = net1

User_Alias CHUJI_KAIFA = %phper

############Runas_Alias####################

Runas_Alias OP = root

senior1    ALL=(OP)        GY_CMD_1

manager1    ALL=(ALL)    NOPASSWD:ALL

kaifamanager1    ALL=(ALL)    ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/bin/su,!/usr/bin/vi *sudoer*

,/usr/bin/vim *sudoer*

seniorphpers    ALL=(ALL)    GK_CMD_1

CHUJIADMINS    ALL=(OP)    CY_CMD_1

"/etc/sudoers.tmp" 139L, 5671C written

我们查看一下是否生效

初级运维登录查看可以执行的命令

[[email protected] ~]# tail -10 /etc/passwd

net1:x:905:905::/home/net1:/bin/bash

senior1:x:906:906::/home/senior1:/bin/bash

manager1:x:907:907::/home/manager1:/bin/bash

php1:x:908:999::/home/php1:/bin/bash

php2:x:909:999::/home/php2:/bin/bash

php3:x:910:999::/home/php3:/bin/bash

php4:x:911:999::/home/php4:/bin/bash

php5:x:912:999::/home/php5:/bin/bash

kaifamanager1:x:913:913::/home/kaifamanager1:/bin/bash

seniorphpers:x:914:914::/home/seniorphpers:/bin/bash

[[email protected] ~]# su - chuji1

[[email protected] ~]$ sudo -l

We trust you have received the usual lecture from the local System

Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.

#2) Think before you type.

#3) With great power comes great responsibility.

[sudo] password for chuji1:

Matching Defaults entries for chuji1 on this host:

requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS",

env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT

LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS

_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, logfile=/var/log/sudo.log

User chuji1 may run the following commands on this host:

(root) /usr/bin/free, /usr/bin/iostat, /usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/nestat, /sbin/route

调试成功以后,通知各部门配置生效,并将操作文件添加到/etc/skel目录下,并指定权限与权限申请表,后期维护基本上就是走流程了。

时间: 2024-10-11 17:17:04

企业生产环境用户权限集中管理项目方案的相关文章

企业生产环境用户权限集中管理项目方案案例

服务器用户权限管理改造方案与实施项目步骤: 1.在了解公司业务流程后,提出权限整改解决方案改进公司超级权限root泛滥在现状 2.我首先撰写了方案后,给老大看,取得老大的支持后,召集大家开会讨论 3.讨论确定可行后,由我负责推进实施 4.实施后结果,公司的服务器权限管理更加清晰了(总结维护) 5.制定了账号权限申请流程及权限申请表格 问题现状: 当前我们公司里服务器上百台,各个服务器上的管理人员很多(开发+运维+架构+DBA+产品+市场),在大家登陆使用Linux服务器时,不同职能的员工水平不同

(转)企业生产环境用户权限集中管理方案案例

https://wenku.baidu.com/view/0acd163d4a73f242336c1eb91a37f111f1850d94.html http://blog.51cto.com/youngboy/1660551 https://www.cnblogs.com/redball/articles/6992236.html 企业生产环境用户权限集中管理方案案例 1问题现状 当前我们公司服务器上百台,各个服务器上需要管理的人很多(开发+运维+架构+DBA+产品+市场),在大家同时登录Li

企业生产环境用户权限集中管理方案案例

建立中要添加如下的项目经验: 在了解公司业务流程后,提出权限整改解决方案,改进公司超级用户Root权限泛滥的问题. 我首先写好方案后,给老大看,取得老大的支持后,召集大家开会讨论. 讨论确定可行后,由我负责推进实施 实施后结果,公司服务器权限管理更加清晰了. 制定账号权限申请流程以及权限申请表格 1问题现状 当前我们公司服务器上百台,各个服务器上需要管理的人很多(开发+运维+架构+DBA+产品+市场),在大家同时登录Linux服务器的时候,不同职能员工的水平不同,因此导致很不规范,root权限泛

理解Docker(6):若干企业生产环境中的容器网络方案

本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 cgroups 限制容器使用的资源 (5)Docker 网络 (6)若干企业生产环境中的容器网络方案 Docker 在早期只有单机上的网络解决方案,在 1.19 版本引入了原生的 overlay 网络解决方案,但是它的性能损耗较大,可能无法适应一些生产环

企业生产环境不同业务的Linux分区方案

企业生产环境不同业务的Linux分区方案 1.常规分区 /boot   100M swap    内存的1.5倍(若内存大于16G,swap分配8-16G即可) /           剩余所有硬盘空间 2.DB及存储(有大量的重要数据) /boot   100M swap    内存的1.5倍(若内存大于16G,swap分配8-16G即可) /           50-200G /data    剩余所有硬盘空间 注:一般有重要数据的业务,要尽可能的把数据所在的分区单独分出来. 3.门户网站

企业生产环境不同业务,系统分区建议(自定义分区布局)

Linux系统对分区的要求 1.最少要有/分区 2.swap(交换分区)的作用:虚拟化内存,swap区分的大小=105*物理内存容量(mem<8G) 3.建议设置独立的/boot分区 #linux引导分区,存放系统引导文件,如果linux内核等,所有文件大小一般只有十几M,因此,该分区设置100-200M 企业生产环境不同业务linux系统分区建议(自定义分区布局) 1.常规分区方案 /分区:剩余硬盘大小 swap分区:内存的1.5倍(mem>8G) /boot分区:100M 2.DB及存储

企业生产环境NFS客户端挂载建议(八)

企业生产环境NFS客户端挂载建议: 一.把NFS rpc服务的启动命令和挂载命令均放到/etc/rc.local,然后通过nagios监控软件监控开机后的挂载情况.如: [[email protected] ~]# cat /etc/rc.local #!/bin/sh # # Thisscript will be executed *after* all the other init scripts. # You canput your own initialization stuff in 

linux用户权限集中管理

当公司服务器上千台,各个服务器管理人员很多,不同职能人员对linux熟悉程度也不同,因此导致操作很不规范,root权限泛滥,所以我们有必要将用户进行集中管理 思路:通过visudo(/etc/sudoers),编写用户相关的权限 Cmnd_Alias CF_CMD_1= /usr/bin/top #用户所拥有权限 User_Alias ADMINS = test1,test2 Host_Alias SERS = f1,f2 Runas_Alias OP = root ADMINS SERS=(O

企业生产环境数据库备份锁表问题

在MySQL数据库场景,使用mysqldump命令备份时,我们会遇到一个锁表的问题?如果进行锁表了,在备份期间用户就无法访问数,若是备份时长几个小时,那么就表示几个小时内,用户都无法访问数据,会对业务造成很大影响:如果不锁表,又会导致备份的数据不一致,因为在备份的过程中,有可能会有数据写入,这样无法保证备份后的备份文件中的数据是你想要的某个时间点的数据. 如何解决锁表问题?关于MySQL备份时,是否需要锁表,这要根据公司的业务场景进行分析.案例1:某金融咨询公司,公司客户都是以select为主,