代码质量与安全 | SonarQube如何实现LDAP、SSO等身份验证和授权

DevOps流水线是许多不同工具的串联,可帮助构建、测试、验证和部署软件应用程序。当公司员工多起来,如果他们必须在工具中分别管理用户账户,那就没有意义了。对于任何面向企业的解决方案来说,能够与已经在公司中使用的IdP(身份提供方)解决方案无缝集成是一种标准。Sonar一直在确保SonarQube也满足这个期望,本篇文章将概述为您提供的将SonarQube与您现有的IdP集成。

SonarQube与LDAP和Active Directory的集成

当涉及到企业环境中的集中式身份验证时,LDAP(轻量级目录访问协议)历来是首选之一。它是一个与目录服务(OpenLDAP, Apache Directory, Microsoft Active Directory等)接口的开放协议,这些服务存储用户信息和凭证。

LDAP身份验证和实时配置

这是SonarQube完全支持的基本用例:通过LDAP验证用户的凭据。所有这些都需要对SonarQube与LDAP服务器(目录)的连接进行初步配置。一旦就绪,SonarQube将系统地将所有登录请求提交到第三方LDAP服务器。请注意,如果用户帐户在 SonarQube 中尚不存在,则会在授予访问权时当场进行配置(该过程通常被称为“实时配置”)。

通过LDAP自动同步姓名和电子邮件

将您的全名和电子邮件地址与您的用户ID相关联是标准做法,SonarQube会自动同步,因此它可以在整个UI及其通知中使用这些信息。SonarQube-LDAP集成系统在每次用户登录时系统地、自动地更新这些用户记录。除了集中身份验证之外,这还有助于确保所有IT设置中用户信息的一致性。

更进一步:支持多个LDAP服务器和多个安全协议

LDAP部署的范围可以是单个位置,也可以是全球地理分布式设置,多个LDAP服务器连接在一起以满足公司的需求。SonarSource不断听取反馈,构建了LDAP功能,帮助这些全球企业真正全面使用LDAP:

  • 支持多个LDAP服务器:SonarQube可以连接到不同的LDAP服务器。这允许连接不同的目录,并启用冗余;

  • 支持多种身份验证方法:出于安全考虑,SonarQube自身需要向LDAP服务器进行身份验证(在交换任何用户信息之前)。SonarQube支持在这种情况下使用的标准协议有:CRAM-MD5,DIGEST-MD5和GSSAPI。

最后,但并非最不重要的一点:SonarQube和微软活动目录(Microsoft Active Directory)
虽然LDAP和活动目录是不同的目录服务,但重要的是要记住,微软活动目录确实支持LDAP协议。这意味着当SonarQube连接到活动目录服务器时,上述所有LDAP集成功都是同样可用。

更进一步:使用SonarQube

进行SSO(单点登录)

虽然LDAP集成仍然需要用户在每个单独的工具中输入其用户/密码信息,但SSO将身份验证授权给您的IdP,从而让用户体验到在单一地方登录,以及在后台进行身份验证的同时,能够无缝地启动业务应用程序。

SAML身份验证

(Okta、OneLogin、Azure AD等)

使用SonarQube,您可以将身份验证委托给SAML 2.0 IdP。在完成初始配置后,SonarQube将显示 “使用SAML登录”按钮,供用户进行身份验证,SAML协议将从这里开始允许(或拒绝!)身份验证。
SAML身份提供方(Okta、Auth0、OneLogin、Keycloak等)有很多,并且还有各种在线教程(例如:Azure Active Directory SSO with Sonarqube),如需获取请联系SonarQube授权合作伙伴——创实。
HTTP标头身份验证
这种额外的身份验证设置包括将SonarQube代理在服务器之下,该服务器将处理所有HTTP请求的身份验证。

通过DevOps平台进行身份验证

(GitHub SSO、GitLab SSO)

继续讨论SSO话题,但现在,请将其与您的开发团队每天使用的DevOps平台联系起来。像GitHub或GitLab这样的平台已经远远超出了提供“代码存储库”的范围,而是真正为开发团队提供了一整套功能来管理他们的代码库、进行代码审查、运行自动检查,甚至是部署他们的应用程序。它们本质上是开发团队的中央平台,按着这种理念,它们甚至可以用作集中身份验证的后端!
如果您已经在其中一个DevOps平台中镜像了您的用户和组,那么SonarQube可以利用它进行身份验证。SonarQube 8.9 LTS通过GitHub(GitHub Enterprise或GitHub.com)和GitLab(GitLab Self-Managed和GitLab.com)支持SSO。

用户的身份验证将通过平台重定向,除了第一次必须明确授予SonarQube权限(以这种方式登录)之外,一旦他们有了当前的活动会话,就能开启无缝体验。

将这一切整合在一起:使用SonarQube进行委托授权

现在您已经看到了SonarQube提供的所有委托身份验证的选项,并且都能顺利地与您拥有的任何现有设置集成。但是使用工具不仅仅是为了登录:权限设置能够规定每个用户在工具中允许执行什么操作,而权限通常是以用户组为单位进行管理的。
无论是LDAP、活动目录、GitHub还是其他,它们都提供了管理用户组的能力,并且能够相应地组织用户群。因此,当您委托身份验证时,肯定不希望仍然需要手动复制组成员的身份,您当然想把这个工作也委托出去!
SonarQube完全支持通过组进行授权委托,让您能够集中管理所有的用户、组和权限。
RBAC——基于角色的访问控制
SonarQube通过从目录服务中提取组成员身份信息,与基于角色的访问控制(RBAC)设置关联在一起。如果SonarQube中存在同名的组,并为其分配了特定权限,则用户将自动继承这些权限(在登录时)。我们称之为“组映射”,它可以通过上述每种用户身份验证方法启用。
下面是一个使用GitLab启用组映射的配置示例:

是时候开始尝试了

既然您已经发现了SonarQube可以与您的用户身份验证和授权设置集成的各种方式,我们为您推荐下一步:在实践中尝试一下!每种方法都只需简单快速地配置,您就可以亲身体验用户登录和用户管理。

文章来源:https://www.sonarsource.com/blog/sonarqube-ldap-sso/

希望您已经了解SonarQube如何与您现有的企业身份验证和授权设置集成,如需更多支持,请联系SonarQube中国官方授权合作伙伴——创实 ,我们提供SonarQube产品的咨询、销售、 实施、培训及技术支持服务。