ARTIFACTORY:如何通过JDBC驱动程序使用Kerberos对MSSQL端点进行身份验证
作者:乌利亚·利维
适用版本:本文仅适用于工件6。X版本及以下版本。从工件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可能已经存在于系统的某个地方,但如果没有,则需要从可以为您的机器生成keytab的Windows/KDC管理员那里获得。在大多数情况下,keytab中的主体将映射到用于访问Linux机器并使用它运行进程的Active Directory服务帐户。
注意:确保正在运行Artifactory的用户可以读取keytab文件。
JAAS:在设置krb5.conf文件并获得keytab之后,您需要创建一个名为SQLJDBCDriver.conf的文件,并将其放置在$ARTIFACTORY_HOME/etc目录中。这是一个JAAS配置文件,MSSQL JDBC驱动程序将在服务器启动时使用它来提供适当的身份验证信息。该文件可能看起来像这样:SQLJDBCDriver {注意:请确保配置闭包的名称与上面所示完全一致:SQLJDBCDriver。MSSQL JDBC驱动程序被硬编码为通过此名称查找配置,因此未能指定正确的名称将使该文件无效。可以获得有关JAAS配置中包含的所有选项的更多信息在这里。值得强调的是,Krb5LoginModule应该在登录到MSSQL端点的过程中使用。另外,请确保将keytab选项的值替换为您自己的keytab文件的位置。
com.sun.security.auth.module。Krb5LoginModule所需
useTicketCache = true
useKeyTab = true
keyTab = /道路/ / keyTab
renewTGT = true
doNotPrompt = true;
};
连接字符串:接下来,您需要在$ARTIFACTORY_HOME/etc/db中配置MSSQL连接字符串。属性文件(以前是存储。Artifactory版本3中的属性文件。X到4.x)。您需要设置integratedAuthentication=true和authenticationScheme=JavaKerberos参数,如下所示:integratedSecurity = true; authenticationScheme = JavaKerberos
有关组装完整连接字符串的更多信息可在此获取在这里。
Java参数:在满足了所有先决条件之后,就可以将MSSQL JDBC驱动程序指向krb5.conf和SQLJDBCDriver.conf文件了。你可以编辑$ARTIFACTORY_HOME/bin/artifactory.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 home安装路径。
这里有一个提示:如果您遇到JDBC驱动程序无法针对KDC或MSSQL端点进行正确身份验证的任何问题,您也可以向JAVA_OPTIONS添加Dsun.security.krb5.debug=true参数。但是要注意,这个日志将非常冗长,日志记录将打印到您的$ARTIFACTORY_HOME/tomcat/logs/catalina。出文件。
