Безопасное приложение hbase - аутентификация kerberos
Я запускаю бесконечный цикл для проверки истечения срока действия учетных данных Kerberos, у меня есть следующий код.
UserGroupInformation.loginUserFromKeytab(user, keytablocn);
Configuration config = HBaseConfiguration.create();
HConnection conn = HConnectionManager.createConnection(config);
for (;;) {
HTableInterface ht = conn.getTable(tableName);
getAndPriintRow(rowkey);
}
Я ожидаю, что срок действия учетных данных kerberos истечет примерно через 10 часов после запуска программы (в нашей среде для kinit в оболочке linux с использованием keytab требуется перезапуск через примерно 10 часов).
Однако, что я вижу в журнале примерно через 10 часов:
15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: PrivilegedAction as:* (auth: KERBEROS) от:org.apache.hadoop.hbase.ipc.RpcClient$Connection.handleSaslConnectionFailure(RpcClient. Java:796) 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: Инициирование выхода из системы для * 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: выход из hadoop 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: Инициирование повторного входа в систему для *** 15/03/06 12:39:55 DEBUG org.apache.hadoop.security.UserGroupInformation: логин hadoop
Метод checkTGTAndReloginFromKeytab() был каким-то образом вызван. Я не могу понять, как этот метод был вызван. Это позволяет программе работать постоянно. Это дизайн и что делает relogin?
1 ответ
Это согласно дизайну. Когда сеанс истекает, он попытается повторно войти в систему.
Эта функциональность позволяет клиентам HBase оставаться в вечности, когда они используются на серверах приложений.