【发布时间】:2019-09-18 10:00:09
【问题描述】:
我正在尝试使用 keytab 文件连接到 Impala,但我没有找到与 keytab 连接的确切 URL。我已经通过Cloudera documentation,但它没有提到使用 keytab 文件和主体连接到 Impala。使用 keytab 文件连接到 Impala 的 JDBC URL 是什么?
【问题讨论】:
标签: java hibernate jdbc cloudera impala
我正在尝试使用 keytab 文件连接到 Impala,但我没有找到与 keytab 连接的确切 URL。我已经通过Cloudera documentation,但它没有提到使用 keytab 文件和主体连接到 Impala。使用 keytab 文件连接到 Impala 的 JDBC URL 是什么?
【问题讨论】:
标签: java hibernate jdbc cloudera impala
如User Guide“使用 Kerberos”一节中所述,Impala JDBC 驱动程序支持三种获取 Kerberos 主题的方法:
- ...驱动程序尝试从当前线程继承的 AccessControlContext 中获取主题。如果 AccessControlContext 包含 多个主题,驱动程序使用最新的主题。
- 驱动程序检查
java.security.auth.login.config系统属性以获取 JAAS 配置。如果 JAAS 配置是 指定,驱动程序使用该信息创建一个 LoginContext 然后使用与其关联的主题。- 驱动程序检查 KRB5_CONFIG 和 KRB5CCNAME 系统环境变量以查找 Kerberos 票证缓存。司机使用信息 从缓存中创建一个 LoginContext 然后使用 Subject 与之相关联。
您可以通过连接 URL 中的KrbAuthType 参数来控制驱动程序将使用哪种方法,否则它将逐个尝试每种方法。
所以,使用 keytab 文件(方法#2)你应该做的就是
jaas.conf 文件,指定keytab 位置、主体等。java.security.auth.login.config(或使用
JVM 启动参数-Djava.security.auth.login.config=</some-path-to/jaas.conf>) 指向那个jaas.conf 的位置,并且...AuthMech=1;KrbRealm=<YOUR-REALM.COM>;KrbHostFQDN=your.impalad.host.com;KrbServiceName=<impala-service-principal> 用于 Kerberos 身份验证...在尝试连接之前。
或者,kinit 使用您的 keytab,以便在调用 Java 应用程序之前票证缓存包含必要的 TGT(基本上,使用上面的方法 3)。
【讨论】:
KRB5_CONFIG 和 KRB5CCNAME env。 vars, kinit -k -t <your.keytab> <principal@REALM> 并且您不需要设置任何系统属性。