如何使用Kerberos和JDBC驱动程序对MSSQL端点进行身份验证

JFrog支持
2023-01-22 11:06

作者:乌利亚·利维

适用版本:本文仅适用于Artifactory 6。X版本及以下。从Artifactory 7开始,不支持Kerberos身份验证。在升级到Artifactory 7之前,我们建议对数据库切换到基于用户的身份验证。

细节:
您可以设置MSSQL JDBC驱动程序,使用Kerberos身份验证对您的MSSQL数据库进行身份验证。在Windows计算机上,将sqljdbc_auth.dll放在系统路径中,并在JDBC连接字符串上指定integratedSecurity=true,这可能非常简单。

Linux用户的设置过程有些复杂:

krb.conf:首先,您需要确保krb5.conf文件存在于您的系统中,并且已正确配置以使用您的MSSQL服务器所在的Kerberos领域。可能您的机器已经在/etc/krb5.conf中有这个文件。如果没有,那就创造一个。JFrog可以提供关于如何做到这一点的基本指导,但是最了解如何创建适合您的环境并使用正确选项的krb5.conf文件的人是您的Windows/Unix管理员。可以找到所有配置选项在这里

注意:确保运行Artifactory进程的用户可以读取/etc/krb5.conf文件。

Keytab:必要时(例如,当缓存中没有票据或票据过期时),MSSQL JDBC驱动程序将使用Keytab文件从KDC获取TGT。keytab可能已经存在于您的系统中,但如果不存在,则需要从Windows/KDC管理员那里获取它,管理员可以为您的机器生成一个keytab。在大多数情况下,keytab中的主体将映射到用于访问Linux机器并使用它运行进程的Active Directory服务帐户。

注意:确保正在运行Artifactory的用户可以读取keytab文件。

JAAS:在krb5.conf文件设置完成并获得keytab之后,您需要创建一个名为SQLJDBCDriver.conf的文件,并将其放置在$ARTIFACTORY_HOME/etc目录中。这是MSSQL JDBC驱动程序将在服务器启动时使用的JAAS配置文件,以提供适当的身份验证信息。该文件可能看起来像这样:SQLJDBCDriver {
com.sun.security.auth.module。Krb5LoginModule所需
useTicketCache = true
useKeyTab = true
keyTab = /道路/ / keyTab
renewTGT = true
doNotPrompt = true;
};
注意:确保配置闭包的名称完全如上所示:SQLJDBCDriver。MSSQL JDBC驱动程序是硬编码的,用于通过该名称查找配置,因此如果不能指定正确的名称,将使该文件无用。可以获得有关JAAS配置中包含的所有选项的更多信息在这里.值得强调的是,在MSSQL端点的登录过程中应该使用Krb5LoginModule。还要确保将keytab选项的值替换为您自己的keytab文件的位置。

连接字符串:接下来,您需要在$ARTIFACTORY_HOME/etc/db中配置MSSQL连接字符串。属性文件(以前的存储。Artifactory版本3中的properties文件。X到4.x)。你需要设置integratedAuthentication=true和authenticationScheme=JavaKerberos参数,如下所示:integratedSecurity = true; authenticationScheme = JavaKerberos
有关组装完整连接字符串的更多信息在这里

Java参数:处理完所有先决条件后,就可以将MSSQL JDBC驱动程序指向krb5.conf和SQLJDBCDriver.conf文件了。你可以通过编辑你的$ARTIFACTORY_HOME/bin/ artificial .default文件来做到这一点,添加以下一行:export JAVA_OPTIONS="$JAVA_OPTIONS -Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=$ARTIFACTORY_HOME/etc/SQLJDBCDriver.conf"注意:不要覆盖任何现有的JAVA_OPTIONS行。相反,将上面的行粘贴在所有其他选项的下面。另外,将$ARTIFACTORY_HOME占位符替换为真正的Artifactory主安装路径。

这里有一个提示:如果您遇到JDBC驱动程序无法正确地针对KDC或MSSQL端点进行身份验证的任何问题,您也可以将Dsun.security.krb5.debug=true参数添加到JAVA_OPTIONS中。但是要注意,这个日志将非常冗长,日志将被打印到$ARTIFACTORY_HOME/tomcat/logs/catalina。出文件。