当前位置: 首页 > Linux

gitlab与ldap整合

时间:2023-04-06 07:08:35 Linux

背景:继rocky8上的gitlab15.8之后,我们计划将gitlab与ldap进行对接,后续jenkins也会。便于用户的统一管理。现在的用户管理是分开的,用户的离职和管理很麻烦。就趁着这个监管过程,想办法全部打通,统一管理吧!ldap的搭建可以参考:KubernetesbuildopenLDAPgitlabldapintegrationgitlabopenandconfigureldapeditgitlab.rbconfigurationfileopenandeditgitlab.rbconfigurationfile:vi/etc/gitlab/gitlab.rb按住ctrl+v进入VISUALBLOCK模式选择要注释的行的#,按d键删除注释符号(secondaryx相关其实不需要去掉...具体参考下面的代码块配置!)gitlab_rails['ldap_enabled']=true开启ldapgitlab_rails['ldap_enabled']=true#gitlab_rails['prevent_ldap_sign_in']=falsegitlab_rails['ldap_servers']=YAML.load<<-'EOS'EOS是ldap相关配置,请相关配置参考个人ldapserver。具体参数请参考官方文档https://docs.gitlab.com/ee/administration/auth/ldap/注:图片只截取了一部分,详见文档!###!**记得用下面的'EOS'关闭这个块**gitlab_rails['ldap_servers']=YAML.load<<-'EOS'main:#'main'是这个LDAP服务器标签的GitLab'providerID':'LDAP'###可以自定义gitlab登录状态显示的名词host:'10.0.4.25'###ldap服务器地址端口:xxxx###ldap端口(我在k8s里建的所以不是默认的389)uid:'cn'###ldap登录用户名bind_dn:'cn=admin,dc=xxxx,dc=com'#绑定用户的完整DNpassword:'xxxxxxxx'##绑定用户加密的密码:'plain'#"start_tls"or"simple_tls"or"plain"verify_certificates:falsesmartcard_auth:falseactive_directory:flaseallow_username_or_email_login:false###Email用户不允许登录lowercase_usernames:falseblock_auto_created_##:false注册基地:'ou=devops,dc=xxxx,dc=com'###用户搜索域user_filter:''##EEonly#group_base:''#admin_group:''#sync_ssh_keys:false##secondary:#'secondary'是第二个LDAP服务器的GitLab'providerID'#label:'LDAP'#host:'_your_ldap_server'#port:389#uid:'sAMAccountName'#bind_dn:'_the_full_dn_of_the_user_you_will_bind_with'#password:'_the_password_of_the_bind_user'#encryption:'plain'#"start_tls"or"simple_tls"or"plain"#verify_certificates:true#smartcard_auth:false#active_directory:true#allow_username_or_email_login:false#lowercase_usernames:false#block_user_created:false#base:''#user_filter:''###EEonly#group_base:''#admin_group:''#sync_ssh_keys:falseEOS特别强调EOF去掉注释加载配置文件重置加载配置:sudogitlab-ctlreconfigurerestartgitlbservice:sudogitlab-ctlrestart来自百度的小彩蛋命令:sudogitlab-rakegitlab:ldap:checkldap用户登录gitlab浏览器登录gitlab地址,出现如下ldap登录框用户登录进入用户配置页面:貌似强制要求输入邮箱地址。。。傻了我以为登录管理员root可以关闭邮件通知?事实并非如此老老实实配置smtp吧...gitlab集成邮件配置编辑gitlab.rb打开smtp配置编辑/etc/gitlab/gitlab.rb文件vi/etc/gitlab/gitlab。rb当然,因为你这里使用qq邮箱登录邮箱设置-账户,POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务生成授权码,替换密码参数进入配置文件,如下:gitlab_rails['smtp_enable']=truegitlab_rails['smtp_address']="smtp.qq.com"gitlab_rails['smtp_port']=465gitlab_rails['smtp_user_name']="75430361@qq.com"gitlab_rails['smtp_password']="xxxxxx"gitlab_rails['smtp_domain']="smtp.qq.com"gitlab_rails['smtp_authentication']="login"gitlab_rails['smtp_enable_starttls_auto']=truegitlab_rails['smtp_tls']=truegitlab_rails['smtp_pool']=假###!**可以是:'none'、'peer'、'client_once'、'fail_if_no_peer_cert'**###!文档:http://api.rubyonrails.org/classes/ActionMailer/Base.html#gitlab_rails['smtp_openssl_verify_mode']='none'#gitlab_rails['smtp_ca_path']="/etc/ssl/certs"#gitlab_rails['smtp_ca_file']="/etc/ssl/certs/ca-certificates.crt"###EmailSettings#gitlab_rails['gitlab_email_enabled']=true##!如果你的SMTP服务器不喜欢默认的'From:gitlab@gitlab.example.com'##!可以改变'from'以此设置.gitlab_rails['gitlab_email_from']='75430361@qq.com'加载配置并重启服务sudogitlab-ctlreconfiguresudogitlab-ctlrestart测试邮件发送功能进入控制台console[root@gitlabgitlab]#gitlab-railsconsole发送测试邮件:Notify.test_email('820042728@qq.com','zhangpengnihao','张鹏').deliver_now邮箱收到测试邮件,测试通过!en成功,继续试试用户登录ldap用户登录绑定的邮箱,由于zhangpeng用户之前进入过820042728@qq.com邮箱,这里只能刷新,点击邮件下方的重发!弹出如下界面,重发activationemail邮箱已激活点击激活:重新登录zhangpeng用户或刷新setting配置页面继续进入gitlab控制台:试试huuzhonghao用户:gitlab登录进入邮箱邮箱475602333@qq.com(邮箱不能和之前的用户一样,貌似一个邮箱只能绑定一个用户)登录邮箱激活用户:登录hozhonghao用户如下:嗯,我也修改了头像该用户的!综上,到这里就完成了gitlab和ldapmail的集成,ldap没有更严格的匹配方式,mail也没有自定义配置。接下来考虑Gitlab项目组权限?各种配置以及如何导入其他gitlab仓库?常用命令:sudogitlab-ctlreconfiguresudogitlab-ctlrestartgitlab-railsconsolesudogitlab-rakegitlab:ldap:check等。