无法通过 Azure SQL 配置 SonarQube 并进行身份验证=ActiveDirectoryManagedIdentity

问题描述 投票:0回答:1

上下文:尝试使用 Azure SQL DB 设置 SonarQube 无需对 SonarQube 主机中任何位置的任何用户和密码进行硬编码

  • SonarQube 版本:10.1.0(评估版)

  • Java:

    java 17.0.7 2023-04-18 LTS Java(TM) SE Runtime Environment (build 17.0.7+8-LTS-224) Java HotSpot(TM) 64-Bit Server VM (build 17.0.7+8-LTS-224, mixed mode, sharing)

  • SonarQube 主机:Windows Server 2019 数据中心(在 Azure 中)

  • SonarQube HOST 配置有系统分配的托管身份

  • Azure SQL DB 配置为:

    • 具有 Azure AD 身份验证的 Azure SQL 数据库

    • SonarQube 主机名配置为包含的用户

    • SonarQube 主机和具有托管身份的 SQL 数据库的连接已通过验证并可与 SSMS(安装在 SonarQube 主机中)配合使用

  • SonarQube 属性文件:

    • sonar.jdbc.url=jdbc:sqlserver://my-sqlserver.database.windows.net:1433;database=ms-sql-db-sonar;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;user=<SONAR VM IdentityId>;Authentication=
      ActiveDirectoryManagedIdentity
      ;
  • Microsoft SQL JDBC 驱动程序版本(SonarQube 内置):mssql-jdbc-12.2.0.jre11

  • SonarQube 目前正在控制台模式下执行

问题陈述:

当我们从( in\windows-x86-64\)执行StartSonar来启动声纳时,遇到以下问题:

2023.07.14 21:41:33 ERROR web[][c.z.h.p.HikariPool] HikariPool-1 - Exception during pool initialization.
com.microsoft.sqlserver.jdbc.SQLServerException: Failed to load MSAL4J Java library for performing ActiveDirectoryManagedIdentity authentication.
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.getFedAuthToken(SQLServerConnection.java:5642)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.onFedAuthInfo(SQLServerConnection.java:5618)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.processFedAuthInfo(SQLServerConnection.java:5463)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onFedAuthInfo(tdsparser.java:311)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:131)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:42)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:6490)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:5068)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:5002)

......
......
......

查询:

  • SonarQube 是否支持 Azure SQL DB 的“ActiveDirectoryManagedIdentity”身份验证模式?

  • 如果支持上述,任何人都可以帮我描述正确配置它的步骤吗?

  • 如果以上都不支持,是否有任何简单的方法可以完全保护SonarQube中SQL连接的用户和密码信息?截至目前,它已硬编码在 sonar.properties 文件中。

以我有限的 Java 知识,已经在不同的网站上尝试了以下方法:

  • 从 Maven 下载 Microsoft MSAL4J jar 文件 (msal4j-1.13.9) 并将其放在“C:\Program Files\Java\jdk-17 in”中,添加“CLASSPATH”变量和整个 jar 文件路径
  • 从 Maven 下载 azure-identity-1.7.0 jar 文件并将其放入“C:\Program Files\Java\jdk-17 in”中,添加“CLASSPATH”变量和整个 jar 文件路径
  • 完成所有必要的调整后重新启动系统
  • 还是没有运气
sonarqube
1个回答
0
投票

我仍然面临这个问题。还有进一步的建议吗? 我正在使用 sonarqube docker image 9.9-LTS enterprise。使用版本 9.9-LTS enterprise 的 SonarQube docker 映像,jdbc-driver 版本与您提到的“mssql-jdbc-11.2.2.jre17.jar”相同,但我仍然无法进行身份验证。

我正在使用 helm 进行部署,并且我的连接字符串完全相同。

© www.soinside.com 2019 - 2024. All rights reserved.