一、基礎介紹
Gitlab是一個開源的Git代碼倉庫管理系統,它允許開發團隊進行版本控制、代碼協同工作、構建CI/CD流程等操作。Gitlab支持使用LDAP(輕量目錄訪問協議)進行用戶認證,從而將現有用戶管理系統集成到Gitlab中,方便團隊管理。
二、Gitlab LDAP配置
Gitlab LDAP的配置需要在Gitlab的配置文件`/etc/gitlab/gitlab.rb`中進行。為了開啟LDAP認證,需要做以下配置:
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main: #參考名稱,以自己喜好命名
label: 'LDAP'
host: 'your.ldap.server.com' #LDAP服務主機名/IP地址
port: 636 #LDAP服務埠號
uid: 'sAMAccountName'
method: 'ssl' #使用ssl加密方式,可選tls
bind_dn: 'CN=BindUser,OU=ServiceAccounts,DC=example,DC=com' #LDAP管理員用戶名
password: '******' #LDAP管理員密碼
active_directory: true #是否使用Active Directory認證,可選false
allow_username_or_email_login: false #是否允許用戶名或郵箱登錄,可選true
block_auto_created_users: true #是否允許自動創建用戶,可選false
base: 'ou=Users,dc=example,dc=com' #LDAP用戶信息查詢Base DN
user_filter: '(objectClass=person)' #用戶Filter,所有person類型的用戶均可登錄
EOS
三、Gitlab LDAP測試
配置完成後,可以通過測試來檢查LDAP的配置是否正確,並確保Gitlab伺服器能夠與LDAP伺服器通信。測試命令如下:
sudo gitlab-rake gitlab:ldap:check RAILS_ENV=production
測試結果將根據您的LDAP伺服器返回。如果測試成功,您可以通過Gitlab的Web界面驗證LDAP設置是否正確。在Gitlab的Web界面,單擊頭像 -> Settings -> LDAP -> LDAP Users,輸入一個有效的LDAP用戶名進行測試。
四、Gitlab LDAP登錄無效用戶
1、無效用戶訪問Gitlab
當LDAP用戶訪問Gitlab時,如果用戶的LDAP信息與Gitlab用戶的信息不匹配,則該用戶將被視為無效用戶並無法登錄。無效用戶可以根據Gitlab配置中的參數進行定製化處理。以下是較為常用的設置:
### Gitlab配置文件中定義無效用戶處理方式 gitlab_rails['ldap_sync_username_blacklist'] = ['user1', 'user2'] #黑名單 gitlab_rails['ldap_sync_username_whitelist'] = ['user3', 'user4'] #白名單 gitlab_rails['allow_local_users'] = false #禁止本地用戶登錄 gitlab_rails['allow_local_requests_from_db'] = true #啟用資料庫用戶驗證
2、無效用戶解除
如果用戶的LDAP信息與Gitlab信息不匹配,可以通過以下步驟解除用戶的無效狀態。首先,進入Gitlab的Web界面,單擊頭像 -> Admin Area -> Users,查找與LDAP用戶匹配的Gitlab用戶。選擇該用戶,單擊「外部用戶」下拉菜單,再點擊「解除外部用戶狀態」按鈕,然後單擊「Save changes」保存更改。
Gitlab Web頁面解除無效用戶狀態
3、無效用戶解除的代碼示例
下面是解除無效用戶狀態的代碼示例:
### Gitlab Rails Console中解除外部用戶狀態
#查詢LDAP/AD用戶信息
ldap_user = Net::LDAP.new :host => "your.ldap.server.com",
:port => 636,
:encryption => :simple_tls,
:auth => {
:method => :simple,
:username => "CN=Admin,DC=example,DC=com", #LDAP管理員賬戶
:password => "***" #LDAP管理員密碼
}
ldap_user.bind #綁定LDAP賬號
search_result = ldap_user.search(:base => "ou=users,dc=example,dc=com",
:filter => Net::LDAP::Filter.eq("mail", "user_email@domain.com"))
#用戶信息確認
search_result.each do |entry|
puts "DN: #{entry.dn}"
puts "First Name: #{entry.givenname.first}"
puts "Last Name: #{entry.sn.first}"
puts "Full Name: #{entry.displayname.first}"
end
#查找Gitlab用戶
user = User.find_by_email('user_email@domain.com')
puts user
#
#解除外部用戶狀態
user.identities.map(&:destroy)
五、Gitlab LDAP Group Sync
Gitlab還允許您根據LDAP groups同步自動組分配。這意味著LDAP中定義的組將自動分配給與其相關聯的Gitlab組。以下是實現該功能的步驟:
- 在配置文件`/etc/gitlab/gitlab.rb`中添加以下配置:
- 轉到Gitlab的Web界面,單擊頭像 -> Settings -> LDAP -> LDAP Groups,單擊「讓我們開始」
- 創建組之後,Group Sync將自動同步。
gitlab_rails['ldap_sync_groups'] = false #是否啟用同步 gitlab_rails['ldap_group_base'] = 'ou=groups,dc=example,dc=com' #LDAP查詢基礎DN gitlab_rails['ldap_group_filter'] = '(objectClass=group)' #組查詢過濾器 gitlab_rails['ldap_sync_attrs'] = ['member'] #同步屬性
六、總結
本文詳細介紹了Gitlab LDAP的基礎、配置、測試、無效用戶、Group Sync等方面。通過這些信息,您可以更好地使用Gitlab與LDAP集成,提高您的代碼管理效率。
原創文章,作者:MWEP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131783.html
微信掃一掃
支付寶掃一掃