企業生產環境用戶權限集中管理方案案例
建立中要添加如下的項目經驗:
- 在了解公司業務流程后,提出權限整改解決方案,改進公司超級用戶Root權限泛濫的問題。
- 我首先寫好方案后,給老大看,取得老大的支持后,召集大家開會討論。
- 討論確定可行后,由我負責推進實施
- 實施后結果,公司服務器權限管理更加清晰了。
- 制定賬號權限申請流程以及權限申請表格
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配置文件。
4.1.4
權限方案一旦實施以后,所有員工必須通過《員工Linux服務器管理權限申請表》來申請對應的權限,確定審批流程,規范化管理。這里實施后,把住權限申請流程很重要,否則大家不聽話,方案實施也會泡湯的。
4.1.5
寫操作說明,對各部門人員進行操作講解,sudu執行命令,設計的PATH變量問題。運維提前處理好。
信息采集的結果如下:
某部門IDC權限細化方案:
目前IDC系統賬號所有的權限都是超級權限,在安全方面存在着隱患,本着“給用戶盡可能少的權限但仍允許他們完成任務”的宗旨,如今對常用命令進行分類細化:
權限對照表格:
PROCESSES |
/bin/kill, /usr/bin/kill, /usr/bin/killall, /usr/bin/pkill, /bin/netstat, /bin/ps |
FCMD_0 |
/sbin/reboot, /sbin/shutdown, /sbin/init 0, /sbin/init 6 |
FCMD_1 |
/bin/su - adsystem,/bin/su - audit,/bin/su - huapi, /bin/su - searchcenter, /bin/su - swebNg |
FCMD_2 |
/server/script/rhy/shangxian, /server/script/rhy/shangxian/haShangxian/shangxian,
|
FCMD_3 |
/bin/cat,/bin/ls |
|
擁有權限 |
簡要說明 |
普通開發權限 |
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 |
分用戶殺死和啟動進程 |
做了如下的測試結果:
創建了三個普通分用戶t1,t2,t3, shell腳本如下:
#create three user t1 t2 and t3
for u in t1 t2 t3
do
useradd $u
echo "123"|passwd --stdin $u
done
創建了四個權限測試用戶,為普通開發權限、開發sudo權限,運維上線權限,運維超級權限
#create develope users and operators as test
for name in ordinary_develop sudo_develop ordinary_operator root_operator
do
useradd $name;
echo "123"|passwd --stdin $name;
done
先在文本文件中編輯visodu的設置:
#set command by option
Cmnd_Alias PROCESSER = /usr/sbin/useradd,/usr/sbin/userdel
Cmnd_Alias FCMD_0 = /sbin/reboot, /sbin/shutdown, /sbin/init 0, /sbin/init 6
Cmnd_Alias FCMD_1 = /bin/su - t1, /bin/su - t2, /bin/su - t3
Cmnd_Alias FCMD_2 = /server/script/rhy/shangxian, /server/script/rhy/shangxian/haShangxian/shangxiain
Cmnd_Alias FCMD_3 = /bin/cat, /bin/ls
#show HOST
#Host_Alias SERVICE = smtp, smtp2, moban
#set users
User_Alias ORDINARY_DEVELOP = ordinary_develop
User_Alias SUDO_DEVELOP = sudo_develop
User_Alias ORDINARY_USERS = t1, t2, t3
User_Alias ORDINARY_OPERATOR = ordinary_operator
User_Alias ROOT_OPERATOR = root_operator
#Runas_Alias OP = root
#set authority
ORDINARY_DEVELOP SERVICE=(OP) NOPASSWD:FCMD_1,FCMD_3,PROCESSER
SUDO_DEVELOP SERVICE=(OP) NOPASSWD:!/bin/sudo su - root,!/bin/sudo su -,FCMD_0
ORDINARY_OPERATOR SERVICE=(OP) NOPASSWD:FCMD_1,FCMD_2,FCMD_3,PROCESSER
ROOT_OPERATOR SERVICE=(OP) NOPASSWD:ALL
ORDINARY_USERS SERVICE=(OP) NOPASSWD:PROCESSER, /run/apache/bin/apachectl -k start
再使用visodu進行編輯配置
登錄sudo_develop測試權限:
測試結果很不錯,很好的控制住了用戶的權限。