環境安裝
隨著資安意識抬頭,許多公司都開始使用 RedHat 作為系統 OS,而 LDAP 這種最常出現在公司內的東西,當然也是建在 RedHat 環境最主流,但因 RedHat OS 其實是要錢的,所以我們改用開源的 CentOS 作為示範,以下使用 CentOS 7。
1. 安裝 Docker
首先參考官方文件,把程式碼逐一貼上執行安裝,先確認當前環境沒有安裝任何 Docker:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
接下來設定安裝來源:
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
開始安裝Docker:
sudo yum install docker-ce docker-ce-cli containerd.io
接下來使用以下語法,啟動 Docker:
sudo systemctl start docker
啟動後就可以開始用 Docker 功能了,如果會跳出權限問題,可以用下面語法將當前使用者加入 Docker 的使用群組,重新登入即可:
sudo usermod -aG docker $USER
其他 Docker 相關操作可以參考之前的文章。
2. 安裝 LDAP
LDAP 除了 Windows 的 AD (Active Directory) 最常見,另外就是開源的 OpenLDAP ,下面選擇 OpenLDAP 作為示範,首先使用 Docker 搜尋相關的 image 看一下:
再來我們希望 LDAP 可以透過瀏覽器直接管理,不用每次都要進 CLI 操作,所以使用 phpLDAPadmin 這個工具,輔助我們後續開發,一樣搜尋一下相關 image 看一下:
聰明的你一定發現到,兩個的第一個來源都是 osixia,代表相容性沒問題。這樣我們可以寫一個 docker-compose 把兩個 image 一次抓下來安裝,我們先在目錄下建立一個叫 ldap 的資料夾,並撰寫程式碼:
mkdir ldap
cd ldap
vim docker-compose.yml
然後安裝一下 docker-compose:
sudo yum install docker-compose
執行安裝,如果想背景執行請最後面 -d:
docker-compose up
打開瀏覽器打上 URL 及設定好的 port,就可以看到安裝好的管理畫面:
第一次登入的資訊如下:使用者名稱:cn=admin,dc=example,dc=org
密碼:admin
系統說明
LDAP 基本上就是個樹狀目錄系統,可以根據需求增加節點,例如公司叫「example」,下面有兩個部門人資「People」及IT「Servers」,人資下面有個員工,如下圖示意:
相關詳細說明可以參考鳥哥的網站,講的內容非常詳細。下面就用最簡單方式簡述:
> DN(Distinguished Name):識別名稱,絕對位置
> RDN(Relative Distinguished Name):相對識別名稱,相對位置
> CN(Common Name) :名稱
> OU(Organizational Unit Name):組織名稱
> O (Organizational Unit ):組織
> DC(Domain Componet):網域元件
值得注意的是,LDAP表示方式都是由小到大,如剛剛登入的帳號,就是先說他是誰,後面才描述其他屬性。
如果要新增節點非常簡單,只要在要新增節點的上一層,點擊下面的 Create a child entry,就可以新增節點。
節點的種類很多,最常使用的為左邊的 Generic 的類別,我們可以根據需求建立多個
例如我在數據團隊 DataTeam 的組織中,裡面有兩個部門,分別是數據分析師 DataUser 及數據管理者 DatrAdmin,然後我在兩個單位內分別建立兩個角色,Chris Lee 及 Jack Wu。
為了確認有沒有成功,我們可以另外建一台機器,安裝 openldap-clients 來測試,安裝語法如下:
yum install openldap-clients
然後我們使用語法來查詢,詳細可以看這裡,下面用簡單示範,如果要看 DataTeam 下面有哪些資訊,可以打:
ldapsearch -x -H ldap://35.239.254.125:8389 -b ou=datateam,dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
如果有正常出現結果,代表成功囉,接下來就可以研究如何讓應用程式的登入系統對接 LDAP。
備份系統與還原
如果使用的是 Docker container 及 phpldapadmin 來管理的話,備份與還原可以說非常容易,首先是系統方面,因為使用 container 容器化處理,所以可以輕易地 export 成 image 並帶到任何地方。
資料方面因為有 phpldapadmin,可以使用上面的 import/export 功能,記得匯出時要讓所有子項一起匯出。
LDAP 是營運架構的一個基礎系統,未來將在其他文章說明怎麼對接熱門的數據產品。