GitLab 通過ldap完成帳號認證
阿新 • • 發佈:2020-09-15
gitlab安裝參考官網:https://about.gitlab.com/install/#centos-7
預設情況下,Gitlab沒有開啟ldap的認證,這個功能需要通過配置檔案來啟用,所以在現有Gitlab中,往配置檔案裡邊新增如下配置:
vi /etc/gitlab/gitlab.rb其中:
gitlab_rails['ldap_enabled'] = true gitlab_rails['prevent_ldap_sign_in'] = false gitlab_rails['ldap_servers'] = { 'main' => { 'label' => 'LDAP', # 隨便自定義'host' => '10.0.20.19', # ldap的server地址 'port' => 389, # ldap埠 'uid' => 'cn', # 配置為cn或者sn都可以,但要注意使用者名稱稱將會以此處配置為依據 'bind_dn' => 'cn=admin,dc=aihelp,dc=net', # 管理員賬號 'password' => '123456', # 管理員密碼 'encryption' => 'plain', # 加密 'allow_username_or_email_login' => false, # 是否啟用郵件作為使用者名稱登陸'block_auto_created_users' => false, 'base' => 'dc=aihelp,dc=net', # 核心配置,表示從哪一層讀取使用者資訊 'user_filter' => '(memberof=cn=jenkins,ou=group,dc=aihelp,dc=net)', # LDAP使用者進行過濾 'lowercase_usernames' => false, 'group_base' => '', 'admin_group' => '', 'external_groups' => [],'sync_ssh_keys' => false } }
label 是顯示在GitLab登入框的上方文字描述。
host 和 port 是 LDAP 服務的主機地址及埠
bind_dn 和 password 是一個管理 LDAP 的 dn 及密碼
base 表示 LDAP 將以該 dn 為 節點,向下查詢使用者
user_filter 表示以某種過濾條件篩選使用者,比如假設我們只希望所屬組為 java-platform 的使用者來訪問 GitLab,則可以在這裡設定 (memberOf=ou=java-platform,ou=people,dc=domain,dc=com)
配置新增之後,依舊像安裝時候那樣,過載一下配置:
gitlab-ctl reconfigure
過載過程如果不報錯,可以使用如下命令驗證功能是否可用:
$ gitlab-rake gitlab:ldap:check Checking LDAP ... LDAP: ... Server: ldapmain LDAP authentication... Success LDAP users with access to your GitLab server (only showing the first 100 results) DN: uid=test01,ou=people,dc=eryajf,dc=net cn: ceshi DN: uid=test02,ou=people,dc=eryajf,dc=net cn: test02 DN: uid=test03,ou=people,dc=eryajf,dc=net cn: test03 DN: uid=admin,ou=people,dc=eryajf,dc=net cn: Admin Checking LDAP ... Finished
使用ldap使用者名稱密碼進行登陸即可,此時登陸進去是沒有任何專案的許可權,如果需要某許可權,可以對使用者進行組或者單專案的授權。
關於老使用者的賬號許可權問題
在實際情況下,我們一般是先gitlab已有賬號,且運行了一段時日。後面的需求是接入LDAP,但是使用者和賬號是想保留,對於使用者來說是無感知的接入。