1. 程式人生 > >(轉)企業生產環境用戶權限集中管理方案案例

(轉)企業生產環境用戶權限集中管理方案案例

網管 pac 成本 local 6.2 whoami start blog 員工

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
技術分享圖片

(轉)企業生產環境用戶權限集中管理方案案例