SonarQube中文网站 > 热门推荐 > SonarQube怎么接入LDAP登录 SonarQube用户组映射关系怎么配置
教程中心分类
SonarQube怎么接入LDAP登录 SonarQube用户组映射关系怎么配置
发布时间:2026/06/01 13:10:06

  在企业想要统一账号体系的时候,有两件事是需要处理的,一件是怎么把SonarQube接入到LDAP的登录里去,另一件是用户和组的映射关系,又要怎么去配置好,SonarQube是可以把认证这件事,委托给LDAP或者是Active Directory去做的,当一个用户第一次登录成功了以后,SonarQube里面就会自动地给他建好一个账号,等到后面他再登录的时候,也都会去同步他的用户名、邮箱,还有一些可以选择的组的关系,按照官方文档给出的说明,去接入LDAP这件事,主要是靠在安装目录下面,去修改conf文件夹里面的配置文件来完成的,等改完了以后再去重启一下服务,然后通过看日志,来确认跟LDAP的连接是不是真的通了。

  一、怎么接入LDAP登录

 

  在动手去接入LDAP之前,是要先和IT那边的人,去把LDAP服务器的地址、端口、基础检索根、用来绑定的那个账号、用户的属性,还有登录的时候到底要用哪一个字段,这些东西都给确认清楚的,不要手里就只拿着一个域控的地址,便开始去配了,要不然等到了后面,就经常会冒出一些奇怪的现象,比如说明明连接是通着的,可就是搜不到用户的信息、每一次去校验密码都会失败,又或者是邮箱的信息,怎么都同步不过来。

 

  1、确认LDAP的连接信息

 

  首先得去搞明白,LDAP它用到的地址,到底是那种普通的ldap,还是那种加了密的ldaps,这两种协议,它们经常会用到的端口,一个是389,另一个是636,要是公司里用的,是全局编录那套东西,或者是有一些自己特殊的安全策略,那就要严格按照IT给出来的那个端口去配,在生产的那个环境下,要是你用的是那种简单的认证方式,官方的文档里面,也是专门提醒过一句的,在没有去用安全的LDAP协议的时候,是不建议去用这种简单方式的,因为这样做,你的密码,是会以明文的样子,被传输出去的。

 

  2、修改sonar.properties这个文件

 

  要先把SonarQube的服务给停下来,然后进到它被安装在的那个目录里面,去找到conf文件夹底下的那个配置文件,在里面,要先去把安全领域的配置,改成指向LDAP,然后再去接着把ldap的连接地址、用来做绑定的账号和密码、用户数据是放在哪个基础路径下面的、去查询用户的时候要用什么样的语句、用户的真实姓名要对应到哪个属性、还有他们的邮箱又要对应到哪个属性,这些项目全都给填上去,要是在Active Directory的那种环境里面,用来做登录的那个字段,比较常见的,是去用系统的登录名,或者是用户的主体名称,但是具体要用哪一个,这得看公司里面,账号那一块,自己定的规则是什么样的。

 

  3、重启服务并检查日志

 

  当这些配置全都写好了,并且也保存下来了以后,去把SonarQube的服务给重新启动一下,然后去找到logs这个目录,看一看底下那个web日志文件里面都记了些什么,按照官方文档给出的判断方法,要是你能在这个日志里面,找到“安全领域已经被设成了LDAP”,还有“测试LDAP连接的结果是OK的”,这样的提示信息,那就说明最底层的那个连接,它已经走通了,可要是就在这一步,日志里面便开始往外蹦错误了,那就要先回过头去,检查一下地址、端口、账号密码、数字证书,还有那个基础检索根,这几样东西是不是都对,不要一上来就去动手改,跟用户组映射有关的那部分配置。

 

  二、用户组映射关系要怎么配置

 

  在SonarQube这边,去同步LDAP里面的组,这个操作的意思,可不是要把LDAP里头的那些组,什么都不管地、直愣愣地就给搬到系统里面来,官方的文档里面,是把这件事讲得很清楚的,一旦你用上了组同步的这个功能,那就要先在SonarQube的系统里面,去把跟LDAP那边名字一模一样的组,给手动地创建出来,然后呢,等到用户再通过LDAP登录进来的时候,他跟组之间的关系,才会被系统自动地给同步好;而且,这个功能,它只能去支持同步组,还有那些静态的组,像角色,还有那种动态变化着的组,它是没有办法去同步的。

 

  1、先在SonarQube里把同名的组给建好

 

  要到后台管理功能的安全模块里面,去找到用来管理组的那个地方,然后比照着LDAP目录里面,那些组的名字,去在SonarQube这边,一个一个地,把名字完全一样的组给创建出来,在这个地方,组名的拼写是一定要非常小心的,它里面的大小写、有没有多出空格,或者是不是夹带着一些特殊的字符,这些细节都要看仔细了,有不少同步失败的情况,你去查到最后会发现,其实并不是LDAP做查询的时候,语句写错了,而是SonarQube本地这一边,根本就连一个能跟人家对上的、同名的组都还没有建,又或者是组的名字,在最前面或者是在最后面,不小心多粘上了一个,谁都看不见的空格。

  2、配置组查询的范围

 

  再回过头去,把那个配置文件给打开,要在里面,去把LDAP组的搜索基础路径给写好,这个地方需要你填进去的,是LDAP的目录树里面,那个专门用来存放组对象的根路径,然后还要再顺着LDAP自己的那个结构,去设好组查询的时候要用的语句、组的标识符,它用的是哪一个属性这些字段,在Active Directory的环境里面,组对象最常见的形式,就是group,而成员的关系,有很大可能是通过member这个字段去判断的;但是换到了OpenLDAP那种环境底下,它用到的,可能就变成了成员uid,又或者是唯一成员这样的字段了,所以这两种环境的配置,你可千万不能看也不看,就照搬着抄过来。

 

  3、把权限去授予给SonarQube的组

 

  这个组同步的功能,它能起到的作用,仅仅是去确定好,一个用户,他到底是从属于哪一个组的,但是呢,在项目里面,各种权限的分配,这件事还是要回到SonarQube自己的系统里面去完成的,官方给出的认证总览里面,也是讲得很直白的,权限这个东西,它从头到尾,都还是归SonarQube自己来管的,有一种会更加合适的做法是,把一套权限,直接去授予给某一个组,然后,再让那个外面的身份源,去负责管好这个组里面,到底都包括了哪些成员,所以,要去进到项目设置,或者是全局权限的那个页面里面,把像是去浏览代码的权限、执行代码分析的权限、还有去管理质量门禁的权限,这些,都给依次地分配给你实际需要的那个组。

 

  三、LDAP组映射哪里容易出错

 

  能够顺顺利利地用LDAP的账号去完成登录,可这并不代表着,组关系的映射,也就一定跟着成功了,组的同步这个动作,它通常是在用户登录的那个时刻,才会被触发的,要是用户登录进来的方式,压根儿就不是走着LDAP认证这条道进来的,那么在LDAP那一端,自然也就不会往SonarQube这边,返回他到底属于哪些组的身份信息了,SonarSource的社区里面,给出的答复也是这么说的,组的同步,这个东西,它是紧紧地依赖着LDAP的认证过程的,一个用户,要是没有通过LDAP去登录,系统就不会去同步他在LDAP里面,所属的那些组的列表。

 

  1、组名没有提前给建好

 

  LDAP的目录里面,明明是有着开发组、测试组,还有安全组,这些组的,但是在SonarQube的系统里头,却连一个跟它们名字相同、能一一对应上的组,都还没有被建起来,那等用户登录进来以后,系统是不会,就这么凭空地,自动去生成出一套完整的权限关系来的,那个正确的先后顺序,是要先把组在SonarQube里给创建好了,然后再让用户去重新登录那么一次,去把同步用户和组关系的这个动作,给触发出来。

 

  2、手动加进去的成员,会被同步给覆盖掉

 

  当你把组同步的这个功能给启用了之后,那些正在被同步着的组,它们里面的成员关系,就会被外面的那个身份源,给牢牢地把控住了,官方给出的总览里面,也是这么说的,同步的组,是会把SonarQube里面,本地自己配置的那一套成员关系,给覆盖掉的,那些被你手动地、一个一个添加进去的成员,是有很大的可能,会被系统给重置掉的,所以,你千万不要一边在SonarQube的界面里,手工地往组里面加着人,一边又想着去依靠LDAP那边的组同步机制,这两种方式,是会互相干扰的。

 

  3、管理员组的名称,是有风险的

 

  如果组同步这个功能,已经被你给打开了,那系统默认带着的那个管理员组,它的名字要怎么处理,就是一件要非常非常谨慎的事情了,官方的文档,也是站在安全的角度去考虑的,它会建议你,去把那个已经内置在系统里的管理员组的名字,给换成一个别的,不这么做的话,要是在外面的那个身份源里面,也恰好就存在着这么一个,跟它名字一模一样的组,那这个外部的组,就有可能会给你带来一种,你之前从来都没有预料到的,在系统访问上的风险。

  总结

 

  总的来说,SonarQube怎么去接入LDAP的登录,还有用户组的映射关系又要怎么去配置,这件事情在操作上的先后顺序,应该是先去跟IT部门那边,把LDAP的连接信息给确认得准确无误了,然后才去动手修改那个配置文件,等到服务被重启完了以后,再回过头去看一看web日志,去确认一下跟LDAP的连接,是不是真的已经建立成功了;等走到了组映射这一步,就要先在SonarQube的系统里面,去把那些名字完全一样的组,给创建出来,然后再去配置文件里,把跟LDAP组查询有关的那几个参数,一项一项地都给配好,最后,再把该有的那些权限,一一地去授予给SonarQube里面的那些组,在排查问题的时候,心里头要一直记着一件事:认证、组的同步、还有权限的分配,这从头到尾,是三件互相独立的事情,登录能成功,只是说明了认证这一关是过了的,但这绝对不等于,项目里面的权限,也已经被稳稳当当地给配置好了。

135 2431 0251