基於 LDAP 的使用者管理
在前面一章中有提到 基於Kerberos的大資料安全方案 在這裡呢我們跟隨上一章的腳步繼續往下探索大資料安全問題;大資料安全呢我們簡單大致分為四個方面:使用者管理、認證、授權以及審計,前面已經介紹了認證,那麼下面我們開啟對使用者管理的認識與實現。
基於Kerberos的大資料安全方案 地址:[https://mp.weixin.qq.com/s/UehY8pqmJzsRurMTJY9Cgw]
1. 什麼是LDAP/">LDAP?
LDAP是輕量目錄訪問協議,英文全稱是Lightweight Directory Access Protocol,一般都簡稱為LDAP。它是基於X.500標準的,但是簡單多了並且可以根據需要定製。與X.500不同,LDAP支援TCP/IP,這對訪問Internet是必須的。LDAP的核心規範在RFC中都有定義,所有與LDAP相關的RFC都可以在LDAPman RFC網頁中找到。
LDAP目錄以樹狀的層次結構來儲存資料。如果你對自頂向下的DNS樹或UNIX檔案的目錄樹比較熟悉,也就很容易掌握LDAP目錄樹這個概念了。就象DNS的主機名那樣,LDAP目錄記錄的標識名(Distinguished Name,簡稱DN)是用來讀取單個記錄,以及回溯到樹的頂部。後面會做詳細地介紹。
理論的東西理解起來總是非常的難懂,我們用一句話來表達一下吧;LDAP 是以樹形來儲存資料,每條資料我們稱之為條目,條目之中定義了很多屬性可以儲存較為資料型別,因為是這種特殊的儲存模式非常適合大量的讀操作,所以被廣泛應用在企業內部使用者管理,大名鼎鼎的微軟的AD域就是其中之一,不過我們今天的主角是OpenLDAP 。
這裡我們為什麼選擇OpenLDAP呢?開源,適合部署到Linux,而AD需要系統微軟系統,這點我們管理增大了難度。
2. 為什麼使用LDAP?
雖然Kerberos 提供了可靠的身份驗證提供支援,但它對高階身份特徵使用者組幾乎沒有提供任何支援。特別是Kerberos 只將身份表現為簡單的分為兩部分的字串(對於服務來說是分為三部分的字串),這兩部分分別為短名稱和域。當賦予每位使用者一個唯一的身份標識時,這種身份表現法雖然有用,但對於實現可靠的身份驗證協議來說仍然不夠。
Hadoop 使用一個名為hadoop.security.group.mapping 的配置引數,以控制使用者到使用者組的對映。預設的實現方法使用標準UNIX 介面進行本地呼叫,或者使用shell 命令查詢使用者到組的對映。這意味著,只有配置在呼叫對映的那臺伺服器上的使用者組才對Hadoop 可見。在實際操作中,這不是個大問題,因為Hadoop 叢集對訪問叢集的使用者和使用者組會有一致的檢視。
而我們可以通過系統使用者進行對映到HDFS中,但是考慮到我們和系統使用者結合同時為了擴充套件性我們採用系統對映LDAP使用者,從而間接對映到HDFS中,這樣非常方便以後的管理及擴充套件。
不光對於HDFS元件來說,其他元件也是如此。
3. 快速部署OpenLDAP服務端
開始部署之前,我先約定一下我們的環境及排版。這裡使用的環境CentOS7.X系列,OpenLDAP採用yum進行安裝而版本是2.4.X,如果在程式碼中看到$
開頭是shell命令。
安裝依賴及OpenLDAP Server:
配置後端儲存配置並啟動服務:
我們在正式使用前我們需要做一些初始化的工作,比如:增加管理員、初始化域;好了接下來我們繼續。
初始化一個密碼,方便我們後面使用:
下面我們配置到系統系統之中:
初始化域,增加系統管理員:
我們前面還提到構成條目的還需要屬性,自然不能缺了屬性,我們匯入常用屬性:
建立Base域,基礎域:
為了測試這裡我們通過系統新增一些測試資料,方便我們驗證後面的結果:。
我們這裡建立兩個使用者來測試:
修改migrationtools檔案的配置域 /usr/share/migrationtools/migrate_common.ph:
匯出需要轉換的條目:
轉換並匯入系統:
我們通常希望使用者可以修改自身的密碼,所以在這裡我們增加這樣的許可權:
這裡推薦三款管理工具:
-
LAM: Web UI型別功能豐富多樣化目前還在更新;
-
LDAP Admin:Windows中的桌面工具,基本夠用,我常用;
-
apache directory studio: 高階功能必備產品。
使用方法這裡不再闡述了。
4. 客戶端對映使用者
這裡我們的客戶端的環境同樣是CentOS7.X, 但是經過測試同類型機器基本都支援,但建議使用CentOS7的環境。
安裝系統基礎依賴:
這裡我們通過authconfig可以進行一鍵配置方便簡單,但是我們遵循一個原則,操作前備份,操作後檢查。
我們這裡還不能進行認證,因為我們為了安全,前面講匿名使用者的訪問許可權給禁止了,所以這邊我們需要使用binddn使用者,這裡我們修改配置檔案,增加如下內容:
重啟服務使其生效:
測試一下,是不是滿足我們的需求了:
OK,這裡已經實現了使用者的對映。
這裡你就可以通過SSH進行連線這個使用者了,但是如果你不想使用者被登入,那麼可以通過SSH的限制進行控制那些使用者可以登陸連線。
5. 總結
在整個篇幅中我們講述了LDAP的作用,同時配合Kerberos可以彌補組 管理的難度,以及後面我們做了一個demo來安裝LDAP Server,做客戶端認證;使用者管理遠遠不止於此,後面還有更多,這裡我只是圍繞LDAP來做基礎Demo,那麼如何和其他元件進行結合呢?