zoukankan      html  css  js  c++  java
  • (转)企业生产环境用户权限集中管理方案案例

    https://wenku.baidu.com/view/0acd163d4a73f242336c1eb91a37f111f1850d94.html

    http://blog.51cto.com/youngboy/1660551

    https://www.cnblogs.com/redball/articles/6992236.html

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

    1问题现状

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

    2项目需求

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

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

    3具体实现

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

    4实施方案

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

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

    到此为止:你应该写完权限规划文档了。

    4.1信息采集

    4.1.1通过会议讲述方案思想

    召集相关部门的领导通过会议讨论或者组织领导沟通确定权限管理方案的可行性。需要支持的人员:运维经理或者总监,CTO的支持、各部门领导的支持。我们作为运维人员,通过会议的形式做演讲,慷慨激昂的演说,取得老大们的认可。才是项目可以实施的前提。当然,如果不实施,你也得到了锻炼,老大对你积极主动的思想网站架构问题也是另眼看待的。

    4.1.2收集各部门负责人权限信息

    确定方案的可行性以后,会议负责汇总,提交、审核所有相关人员对Linux服务器的权限需要问题。

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

    4.1.3设计具体方案

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

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

    4.1.4具体执行

    写操作说明,对各部门人员进行操作讲解,sudu执行命令,设计的PATH变量问题。运维提前处理好。

           信息采集的结果如下:

    某部门IDC权限细化方案:

    目前IDC系统账号所有的权限都是超级权限,在安全方面存在着隐患,本着“给用户尽可能少的权限但仍允许他们完成任务”的宗旨,如今对常用命令进行分类细化:

    用户分组表:

    PRIMARYOM
    net001
    %phpers
    primaryom01、primaryom02、primaryom03
    PRIMARYKAIFA php01、php02、php03、php04、php05
    GWNETADMINS net01

    权限对照表格:

    初级运维

     CY_CMD_1

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

    高级运维

    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

    初级开发

    CK_CMD_1

    /usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls

    高级开发

    GK_CMD_1

    /sbin/service,/sbin/chkconfig,/bin/tail /app/log*,/bin/cat,/bin/grep /app/log*,/bin/ls,/bin/sh ~/scripts/deploy.sh

    高级网管

    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 

    不同级别人员权限分配表:

    拥有权限

    简要说明

    普通开发权限

    NOPASSWD:FCMD_1,FCMD_3,PROCESSES

    无需密码切换到分用户杀死进程重启服务,查看等权限

    开发sudo权限

    NOPASSWD:!/bin/sudo su - root,FCMD_0

    除了可以切到root,苏可以执行除重启机器外的所有权限

    运维上线权

    NOPASSWD:FCMD_1,FCMD_2,FCMD_3,PROCESSCE

    无密码切换到分用户,切换到负载均衡,重启服务

    运维超级权

    NOPASSWD:ALL

    所有权限

    分用户权限

    NOPASSWD:PROCESSER,

    /run/apache/bin/apachectl -k start

    分用户杀死和启动进程

     

    5. 权限集中管理方案具体实施

    5.1 创建用户

     

    复制代码
    [root@jumpserver-01-150 ~]# for user in primaryom01 primaryom02 primaryom03 net01 senior01 manager01
    > do
    > useradd $user
    > echo "123456"|passwd --stdin $user
    > done
    Changing password for user primaryom01.
    passwd: all authentication tokens updated successfully.
    Changing password for user primaryom02.
    passwd: all authentication tokens updated successfully.
    Changing password for user primaryom03.
    passwd: all authentication tokens updated successfully.
    Changing password for user net01.
    passwd: all authentication tokens updated successfully.
    Changing password for user senior01.
    passwd: all authentication tokens updated successfully.
    Changing password for user manager01.
    passwd: all authentication tokens updated successfully.
    复制代码

     

    5.2 创建5个开发和一个开发经理

    复制代码
    [root@jumpserver-01-150 ~]# for i in `seq 5`
    > do
    > useradd php0$i -g phpers
    > echo "123456"|passwd --stdin php0$i
    > done
    Changing password for user php01.
    passwd: all authentication tokens updated successfully.
    Changing password for user php02.
    passwd: all authentication tokens updated successfully.
    Changing password for user php03.
    passwd: all authentication tokens updated successfully.
    Changing password for user php04.
    passwd: all authentication tokens updated successfully.
    Changing password for user php05.
    passwd: all authentication tokens updated successfully.
    [root@jumpserver-01-150 ~]# for user in kaifamanager001 seniorphpers
    > do
    > useradd $user
    > echo "123456"|passwd --stdin $user
    > done
    Changing password for user kaifamanager001.
    passwd: all authentication tokens updated successfully.
    Changing password for user seniorphpers.
    passwd: all authentication tokens updated successfully.
    复制代码

    5.3 给用户添加权限

    复制代码
    [root@jumpserver-01-150 ~]# visudo  #shift+g切换至末尾
    ......
    #Cmnd_Alias by redball in 2017 Cmnd_Alias CY_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname, /sbin/ifconfig 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/cat,/bin/grep /app/log*,/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 greymouster##2017 User_Alias PRIMARYOM = primaryom01,primaryom02,primaryom03 User_Alias GWNETADMINS = net01 User_Alias PRIMARYKAIFA = %phpers ##Runas_Alias by greymouster##2017 Runas_Alias OP=root #pri config senior01 ALL=(OP) GY_CMD_1 manager01 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* seniorphpers ALL=(OP) GK_CMD_1 PRIMARYOM ALL=(OP) CY_CMD_1 GWNETADMINS ALL=(OP) GW_CMD_1 PRIMARYKAIFA ALL=(OP) CK_CMD_1
    复制代码

    6.测试

    6.1检查添加用户

    复制代码
    [root@jumpserver-01-150 ~]# tail -13 /etc/passwd
    primaryom01:x:501:501::/home/primaryom01:/bin/bash
    primaryom02:x:502:502::/home/primaryom02:/bin/bash
    primaryom03:x:503:503::/home/primaryom03:/bin/bash
    net01:x:504:504::/home/net01:/bin/bash
    senior01:x:505:505::/home/senior01:/bin/bash
    manager01:x:506:506::/home/manager01:/bin/bash
    php01:x:507:999::/home/php01:/bin/bash
    php02:x:508:999::/home/php02:/bin/bash
    php03:x:509:999::/home/php03:/bin/bash
    php04:x:510:999::/home/php04:/bin/bash
    php05:x:511:999::/home/php05:/bin/bash
    kaifamanager001:x:512:512::/home/kaifamanager001:/bin/bash
    seniorphpers:x:513:513::/home/seniorphpers:/bin/bash
    复制代码

    6.2查看primaryom01的sudo权限并测试

    复制代码
    [root@jumpserver-01-150 ~]# su - primaryom01
    [primaryom01@jumpserver-01-150 ~]$ whoami
    primaryom01
    [primaryom01@jumpserver-01-150 ~]$ 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 primaryom01: #此处需要输入primaryom01的密码
    Matching Defaults entries for primaryom01 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
    
    User primaryom01 may run the following commands on this host:  #查看这里是重点
        (root) /usr/bin/free, /usr/bin/iostat, /usr/bin/top, /bin/hostname, /sbin/ifconfig
    [primaryom01@jumpserver-01-150 ~]$ hostname
    jumpserver-01-150
    [primaryom01@jumpserver-01-150 ~]$ cd /home/redball/
    -bash: cd: /home/redball/: Permission denied
    复制代码

     经验总结:

    1、在了解公司业务流程后,踢出权限管理改造方案与实施项目。

    2、我首先撰写了方案后,给老大看,取得老大的支持后,召集大家开会讨论。

    3、讨论确定可行后,有我负责推进实施。

    4、实施后效果,公司的服务器权限管理更加清晰了(总结维护) 

    5、制定了账号权限申请流程及权限申请表格。 

    QQ:741390503 NAME:redball 一点一滴的积累,一点一滴的沉淀! blog:http://www.cnblogs.com/redball/
  • 相关阅读:
    【hibernate】自定义转换器
    【hibernate】存储图片
    【hibernate】映射可嵌入式组件
    【hibernate】应用程序级别的视图
    adb shell模拟点击事件(input tap)
    Android UIAutomator 定位
    adb devices连接不上设备
    获取元素属性get_attribute
    wait_activity
    webview定位 & native和webview切换
  • 原文地址:https://www.cnblogs.com/liujiacai/p/8186041.html
Copyright © 2011-2022 走看看