【问题标题】:jdbc URL to connect to Impala using keytab file使用 keytab 文件连接到 Impala 的 jdbc URL
【发布时间】:2019-09-18 10:00:09
【问题描述】:

我正在尝试使用 keytab 文件连接到 Impala,但我没有找到与 keytab 连接的确切 URL。我已经通过Cloudera documentation,但它没有提到使用 keytab 文件和主体连接到 Impala。使用 keytab 文件连接到 Impala 的 JDBC URL 是什么?

【问题讨论】:

    标签: java hibernate jdbc cloudera impala


    【解决方案1】:

    User Guide“使用 Kerberos”一节中所述,Impala JDBC 驱动程序支持三种获取 Kerberos 主题的方法:

    1. ...驱动程序尝试从当前线程继承的 AccessControlContext 中获取主题。如果 AccessControlContext 包含 多个主题,驱动程序使用最新的主题。
    2. 驱动程序检查java.security.auth.login.config 系统属性以获取 JAAS 配置。如果 JAAS 配置是 指定,驱动程序使用该信息创建一个 LoginContext 然后使用与其关联的主题。
    3. 驱动程序检查 KRB5_CONFIG 和 KRB5CCNAME 系统环境变量以查找 Kerberos 票证缓存。司机使用信息 从缓存中创建一个 LoginContext 然后使用 Subject 与之相关联。

    您可以通过连接 URL 中的KrbAuthType 参数来控制驱动程序将使用哪种方法,否则它将逐个尝试每种方法。

    所以,使用 keytab 文件(方法#2)你应该做的就是

    1. 创建一个jaas.conf 文件,指定keytab 位置、主体等。
    2. 在您的程序中设置系统属性java.security.auth.login.config(或使用 JVM 启动参数-Djava.security.auth.login.config=</some-path-to/jaas.conf>) 指向那个jaas.conf 的位置,并且
    3. 在您的 JDBC 连接 URL 中,设置 ...AuthMech=1;KrbRealm=<YOUR-REALM.COM>;KrbHostFQDN=your.impalad.host.com;KrbServiceName=<impala-service-principal> 用于 Kerberos 身份验证

    ...在尝试连接之前。

    或者,kinit 使用您的 keytab,以便在调用 Java 应用程序之前票证缓存包含必要的 TGT(基本上,使用上面的方法 3)。

    【讨论】:

    • 我现在可以使用独立类连接到 Impala。但是我们确实使用休眠配置文件创建了动态数据源。有没有办法在休眠配置文件中指定系统属性?
    • 不是 hybernate 专家,所以无法回答。但我相信选项 3 对您来说可能是一个更好的选择——只需定义 KRB5_CONFIGKRB5CCNAME env。 vars, kinit -k -t <your.keytab> <principal@REALM> 并且您不需要设置任何系统属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多