【问题标题】:secure hbase application - kerberos authentication安全的 hbase 应用程序 - kerberos 身份验证
【发布时间】:2015-03-06 02:00:41
【问题描述】:

我正在运行一个无限循环来测试 kerberos 凭据的过期,我有以下代码。

UserGroupInformation.loginUserFromKeytab(user, keytablocn);
Configuration config = HBaseConfiguration.create();
HConnection conn = HConnectionManager.createConnection(config);

for (;;) {
HTableInterface ht = conn.getTable(tableName);
getAndPriintRow(rowkey);
}

我预计 kerberos 凭据将在程序启动后约 10 小时到期(Linux shell 上使用 keytab 的 kinit 需要在我们的环境中约 10 小时后重新登录)。

但是我在大约 10 小时后在日志中看到的是:

15/03/06 12:39:54 调试 org.apache.hadoop.security.UserGroupInformation:PrivilegedAction 如:*(身份验证:KERBEROS) 来自:org.apache.hadoop.hbase.ipc.RpcClient$Connection.handleSaslConnectionFailure(RpcClient.java:796) 15/03/06 12:39:54 调试 org.apache.hadoop.security.UserGroupInformation:启动注销 * 15/03/06 12:39:54 调试 org.apache.hadoop.security.UserGroupInformation:hadoop 注销 15/03/06 12:39:54 调试 org.apache.hadoop.security.UserGroupInformation:启动重新登录 对于 *** 15/03/06 12:39:55 调试 org.apache.hadoop.security.UserGroupInformation:hadoop 登录

checkTGTAndReloginFromKeytab() 方法被调用了。我无法弄清楚这个方法是如何被调用的。这允许程序永久运行。这是设计使然吗?重新登录是为了什么?

【问题讨论】:

    标签: security hbase kerberos keytab


    【解决方案1】:

    这是按照设计。当会话到期时,它将尝试重新登录。
    此功能使 HBase 客户端在应用程序服务器中使用时能够永远保持不变。

    【讨论】:

    • 感谢您的回复,这个设计是否记录在任何地方,javadocs 当然没有提到这个。除此之外,执行重新登录的公共方法的存在使我认为我必须创建一个后台线程来每次重新登录
    • AFAIK,重新登录/更新的这个功能是标准 Java 安全库的一部分。您的 kerberos 环境还具有允许重新登录/更新会话的设置。因此,HBase 文档可能不会谈论它。
    猜你喜欢
    • 1970-01-01
    • 2018-07-05
    • 2013-03-05
    • 2015-10-01
    • 2015-06-22
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多