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

1 问题现状

当前我们公司里服务器上百台,各个服务器上的管理人员很多(开发+运维+架构+DBA+产品+市场),在大家登录使用Linux服务器时,不同职能的员工水平不同,因此导致操作很不规范,root权限泛滥(几个所有员工都有root权限),经常导致文件等莫名其妙的丢失,老手和新手员工对服务器的熟知度不同,这样使得公司服务器安全存在很大的不稳定性、及操作安全隐患,据调查企业服务器环境,50%以上的安全问题都来源于内部,而不是外部。为了解决以上问题,单个用户管理权限过大现状,现提出针对Linux服务器用户权限集中管理的解决方案。

2 项目需求

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

最小化:1)安装软件最小化

2)目录文件权限最小化

3)用户权限最小化

那么,如何解决多个系统管理员都能管理系统而又不让超级权限泛滥呢?这就需要sudo管理来替代或者结合su命令来完成这样的苛刻且必要的企业服务器用户管理需求。

3 具体实现

针对公司不同部门,根据员工的具体工作职能(例如:开发,运维,数据库管理员)等级、分层次的实现对linux服务器的权限最小化、规范化。这样即减少了运维管理成本,消除了安全隐患,又提高了工作效率,实现了高质量的、快速化的完成项目进度,以及日常系统维护。

4 实施方案

说明:实施方案一般都是由积极主动发现问题的运维员工提出的问题,然后写好方案,在召集大家讨论可行性,最后确定方案,实施部署,最后后期总结维护。

思想:在提出问题之前,一定要想到如何解决,一并发出来解决方案。

4.1 信息采集(含整个方案流程)

1.1 召集相关各部门领导通过会议讨论或是与各组领导沟通权限管理方案的可行性。需要支持的人员:运维经理或者总监、CTO支持、各个部门组的领导。我们做运维人员,拿着类似老师这个项目方案,给大家讲解这个文档,通过会议形式做演讲,慷慨激昻的演说,取得大佬们的支持和认可,才是项目能够得以最终实施的前提,当然,即使不实施,那么,你的能力也得到了锻炼,老大对你的积极主动思考网站架构问题也会另眼看待的。

1.2确定方案可行性后,会议负责人汇总、提交、审核所有相关员工对linx服务器的权限需求。

取得大佬们的支持后,通过发邮件或者相关人员取得需要的相关员工权限信息。比如说,请各个部门经理整理归类部门需要登录Linxu权限的人员名单、职位、及负责的业务及权限,如果说不清楚权限细节,就说负责的业务细节,这样运维人员就可以确定需要啥权限了。

1.3 按照需要执行的linux命令程序及公司业务服务来规划权限和人员对应配置。主要是运维人员根据上面手机的人员名单,需要的业务及权限角色,对应帐号配置权限,实际就是配置sudo配置文件。

1.4 权限方案一旦实施后,所有员工必须通过《员工Linux服务器管理权限申请表》来申请对应的权限,确定审批流程,规范化管理。这里实施后把为权限申请流程很重要,否则,大家不听话,方案实施完也会泡汤的。

1.5 写操作说明,对各部门人员进行操作讲解。sudo执行命令后,涉及到path变量问题,运维提前处理好。

4.2收集员工职能和对应权限

此过程是召集大家开会确定,或者请各领导安排人员进行统计汇总,员工及对应的职责,交给运维人员,由运维人员优化职位所对应的系统权限。

命令用全路径,命令与命令之间用逗号隔开。

/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route

/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/etc/rc.d/init.d/network,/bin/nice,/bin/kill,/usr/bin/killall,/bin/rpm,/usr/bin/yum,/sbin/fdisk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount

初级开发:/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls

高级开发:/sbin/service,/sbin/chkconfig,/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls,/bin/sh  ~/scripts/deploy.sh

开发经理:

ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/bin/vi,

!/usr/sbin/vim

ALL,/usr/bin/passwd [A-Za-z]* , !/usr/bin/passwd root , !/usr/sbin/visudo, !/usr/bin/vim,

!/bin/vi, !/bin/su , !/user/bin/sudo

/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/*

5  模拟创建用户角色

建立3个初级运维,一个高级运维,一个网络工程师,一个运维经理,密码统一为111111。

批量创建用户

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

##Cmnd_Alias by sdr##2018

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/killall,/bin/rpm,/usr/bin/yum,/sbin/fdisk,/sbin/sfdiak,/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/rfcom,/usr/bin/wvdial,/sbin/iwconfig,/sbin/mii-tool,/bin/cat /var/log/*

通过visudo编辑/etc/sudoers,添加如下内容:

换行用“\”

##User_Alias by sdr##2018    (用户别名首字母大写)

User_Alias CHUJIADMINS =chuji001,chuji002,chuji003

User_Alias GWNETADMINS = net001

User_Alias CHUJI_KAIFA = %phpers   (phpers组)

##Runas_Alias by sdr ##2018

Runas_Alias OP=root   (用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,!/bin/vi,!/usr/sbin/vim

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)用“\”换行

6 实战调试测试

7 成功后发邮件周知所有人权限配置生效,并附带操作说明

有必要的话,培训讲解

8  制定权限申请流程及申请表

见单独文档

9 后期维护:不是特别紧急的需求,一律走申请流程

服务器多了,可以通过分发软件批量分发/etc/sudoers(注意权限和语法检查)。

除了权限上的控制,在账户有效时间上也进行了限制,

让线上用户的权限为永久权限可以使用以下方式进行时间上的控制,这样才能让安全最大化:

提示:授权ALL在进行排除时会让我们防不胜防,这种先开后关的策略并不是好的策略

10  sudo配置注意事项:

清醒时做事,糊涂时读书,大怒时睡觉,独处时思考;做一个幸福的人,读书,旅行,努力工作,关心身体和心情。

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

  1. sudo实例--企业生产环境用户权限集中管理方案实例

    根据角色的不同,给不同的用户分配不同的角色1.创建初级工程师3个,网络工程师1个,中级工程师1个,经理1个      #  批量创建用户 for user in chuji{01..03} net01 ...

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

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  3. Linux 服务器用户权限管理改造方案与实施项目

    Linux 服务器用户权限管理改造方案与实施项目 在了解公司业务流程后,提出权限整改方案改进公司超级权限root泛滥的现状. 我首先撰写方案后,给boss看,取得boss的支持后,召集大家开会讨论. ...

  4. Istio 生产环境用户流量接入方案

    总结Istio 生产环境用户流量接入方案 方案1 Client -> istioGateway域名(微服务) -> VritualService匹配路由并绑定网关 -> Destin ...

  5. Linux用户权限集中管理方案

    一.问题 服务器多,各个服务器上的管理人员多,ROOT权限泛滥,经常导致文件莫名其妙丢失,老手和新手对服务器的熟知程度不同,安全存在不稳定和操作安全隐患. 二.方案 利用sudo配置指定用户只能执行指 ...

  6. 企业生产环境中linux系统分区的几种方案

    方案1:针对网站集群架构中的某个节点服务器分区 该服务器上的数据有多份(其他节点也有)且数据不太重要,建议分区方案如下: /boot: 200MB swap: 物理内存的1.5倍,当内存大于或等于8G ...

  7. 数据仓库006 - MySQL 5.6.x - Linux最佳生产环境离线部署

    一.离线安装包 文件准备 这里以mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz为例,记一次MySQL 5.6.x 的生产环境离线部署过程.使用SecureCRT连接 ...

  8. linux --- 3 vim 网络 用户 权限 软连接 压缩 定时任务 yum源

    一.vi 和vim vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方. vim 则可以说是程序开发者的一项很好用的工具 ①命令模式 移动光标 w(e) 移动光标到下一个单词 b ...

  9. 企业生产环境集群稳定性-HA就行吗?

    在企业生产中,集群一旦运行,是要尽可能的将损失降到最低,现在所有的大数据技术都有HA,spark的.Hadoop的.HBase的等等, HA分冷备和热备,热备是集群自带的,冷备就是硬件的. 这样一种情 ...

随机推荐

  1. 【手撸一个ORM】第七步、SqlDataReader转实体

    说明 使用Expression(表达式目录树)转Entity的文章在园子里有很多,思路也大致也一样,我在前面有篇文章对解决思路有些说明,有兴趣的小伙伴可以看下 (传送门),刚接触表达式目录树时写的,不 ...

  2. Ubuntu apt-get update中断的时候会出现一个错误导致不能再apt-get update

    错误描述为:Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable) E: Un ...

  3. 海量日志收集利器 —— Flume

    Flume 是什么? Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的 ...

  4. 2019年我的nodejs项目选型

    选型项目比较激进.发现基于 go 语言的工具变多了.

  5. java+elipse安装及部分问题

    1. elipse下载.安装.jdk环境配置教程: https://www.cnblogs.com/ForestDeer/p/6647402.html 2.eclipse使用教程: https://j ...

  6. Morris.js-利用JavaScript生成时序图

    morris.js是一个轻量级的时间序列javascript类库,是网页显示图表的好工具.github项目地址:点击打开,使用起来很简单,但是需要你有一点网页设计的一些基本知识,对一个网页内容的结构要 ...

  7. juypter-notebook安装配置

    juypter-notebook安装配置 Table of Contents 1. jupyter notebook概述 2. jupyter notebook安装 3. 在jupyter noteb ...

  8. flask之jinja2模板语言

    一.jinja2简单介绍 Jinja2是Python里一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能.其中最显著的一个是增加了沙箱执行功能和可选的 ...

  9. JAVA中日期格式转换各个字母代表含义

    G  Era 标志符  Text  AD  y  年  Year  1996; 96  M  年中的月份  Month  July; Jul; 07  w  年中的周数  Number  27  W  ...

  10. cron 任务执行表达式

    1.来源 开始我还不知道cron到底来源于哪里,不求甚解的我也没做过多了解,现在突然用到所以写一下. cron计划任务  其实只是linux 一个执行计划的一个工具或者执行程序. 在Linux系统中, ...