天天看點

盡可能通用的運維CMDB的設計與實踐(III) - 權限管理

作者:運維雜談

GitHub - veops/cmdb: CMDB: configuration and management of IT resources

權限管理對運維系統來說是極其重要的,因為運維人員是擁有比較高權限的角色,是以運維系統的權限嚴格管控是至關重要的。比如自動化運維系統要從執行作業、執行目标機器、執行使用者3個方面同時去控制權限。

維易開源的CMDB的權限管理經曆了3個階段:

按CI來控制增删改的權限,比如實體機的增删改,這個階段沒有控制CI的讀權限,因為CI一般不涉及到敏感資料。

增加CI的讀權限,因為有些類型的CI隻能開放給部分人看;增加關系權限的控制。

CI權限精細到屬性級,用實體機舉例,可以對使用者A進行這樣的授權:開發負責人是使用者A,且屬性是a、b、c、d的實體機可以被A檢視,文章後面會舉例說明。

為什麼會經曆這3個階段呢?首先當然是場景驅動,其次恰恰與筆者從業經曆相關,筆者先後剛好經曆了網際網路、網際網路金融、金融3家不同類型的公司,尤其是金融公司對安全和權限的管控是極其嚴格的,是以我們做到了屬性級的權限控制,這個也許在商業的CMDB裡也不一定去實作!

為什麼要細粒度到屬性級呢?可能很多人認為沒必要,因為CMDB裡的資料可以不存放敏感的資料,這個也是能在早期建設CMDB可以被将就的一個理由!但是如果從使用者側來講,可能使用者本身都隻想看到自己負責的CI,其他的CI對他來講可能就是備援的、沒有任何意義的髒資料。是以細粒度的權限控制,一個是為了滿足需求,另外一個反而是提升了使用者體驗。總之,隻有利沒有弊,大不了不用就行了嘛!

講了這麼多,那麼下面我們就以維易開源CMDB的權限控制做個簡單實踐。如下圖所示,在每個模型配置的頁面裡有權限設定的tab,這個頁面裡明顯可以看到分為:

1.模型權限

配置權限表示的是模型可以被編輯,授權權限則是這個模型和執行個體可以被授權,一般是給管理者才會配置設定授權的權限。

2.執行個體權限

包括檢視字段,即上面所講的屬性級别的控制;檢視執行個體是指執行個體的權限控制,增删改這個比較容易了解。

盡可能通用的運維CMDB的設計與實踐(III) - 權限管理

檢視字段的權限設定如下圖所示,預設是全部字段可以被檢視,當然可以自定義字段給使用者授權,圖中授權了8個字段給demo使用者角色。

盡可能通用的運維CMDB的設計與實踐(III) - 權限管理

檢視執行個體的權限如下圖所示,預設也是可以檢視所有的CI執行個體,當然也可以自定義,比如定義實體機裡開發負責人是使用者自己的,我們可以用雙大括号來引用變量,目前支援的變量有user對象。

{{引用變量}}            
盡可能通用的運維CMDB的設計與實踐(III) - 權限管理

3.關系權限

在模型關聯裡可以對CI關系進行授權,主要包括新增、删除和授權的權限控制,這裡很容易了解,就不再贅述了。

盡可能通用的運維CMDB的設計與實踐(III) - 權限管理

經過上面的權限設定,以demo使用者登入CMDB系統,在資源資料視圖裡檢視實體機,結果呈現如下圖所示。首先CI清單僅包含了開發負責人是demo的執行個體,字段僅展示了上面定義的8個屬性。

盡可能通用的運維CMDB的設計與實踐(III) - 權限管理

END

繼續閱讀